1<?php
2/*************************************************************************************
3 * autohotkey.php
4 * --------
5 * Author: Naveen Garg (naveen.garg@gmail.com)
6 * Copyright: (c) 2009 Naveen Garg and GeSHi
7 * Release Version: 1.0.9.1
8 * Date Started: 2009/06/11
9 *
10 * Autohotkey language file for GeSHi.
11 *
12 * CHANGES
13 * -------
14 * Release 1.0.8.5 (2009/06/11)
15 * - First Release
16 *
17 * TODO
18 * ----
19 * Reference: http://www.autohotkey.com/docs/
20 *
21 *************************************************************************************
22 *
23 *     This file is part of GeSHi.
24 *
25 *   GeSHi is free software; you can redistribute it and/or modify
26 *   it under the terms of the GNU General Public License as published by
27 *   the Free Software Foundation; either version 2 of the License, or
28 *   (at your option) any later version.
29 *
30 *   GeSHi is distributed in the hope that it will be useful,
31 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
32 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
33 *   GNU General Public License for more details.
34 *
35 *   You should have received a copy of the GNU General Public License
36 *   along with GeSHi; if not, write to the Free Software
37 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
38 *
39 ************************************************************************************/
40
41$language_data = array (
42    'LANG_NAME' => 'Autohotkey',
43    'COMMENT_SINGLE' => array(
44        1 => ';'
45        ),
46    'COMMENT_MULTI' => array('/*' => '*/'),
47    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
48    'QUOTEMARKS' => array('"'),
49    'ESCAPE_CHAR' => '',
50    'KEYWORDS' => array(
51        1 => array(
52            'while','if','and','or','else','return'
53            ),
54        2 => array(
55            // built in variables
56            'A_AhkPath','A_AhkVersion','A_AppData','A_AppDataCommon',
57            'A_AutoTrim','A_BatchLines','A_CaretX','A_CaretY',
58            'A_ComputerName','A_ControlDelay','A_Cursor','A_DD',
59            'A_DDD','A_DDDD','A_DefaultMouseSpeed','A_Desktop',
60            'A_DesktopCommon','A_DetectHiddenText','A_DetectHiddenWindows','A_EndChar',
61            'A_EventInfo','A_ExitReason','A_FormatFloat','A_FormatInteger',
62            'A_Gui','A_GuiEvent','A_GuiControl','A_GuiControlEvent',
63            'A_GuiHeight','A_GuiWidth','A_GuiX','A_GuiY',
64            'A_Hour','A_IconFile','A_IconHidden','A_IconNumber',
65            'A_IconTip','A_Index','A_IPAddress1','A_IPAddress2',
66            'A_IPAddress3','A_IPAddress4','A_ISAdmin','A_IsCompiled',
67            'A_IsCritical','A_IsPaused','A_IsSuspended','A_KeyDelay',
68            'A_Language','A_LastError','A_LineFile','A_LineNumber',
69            'A_LoopField','A_LoopFileAttrib','A_LoopFileDir','A_LoopFileExt',
70            'A_LoopFileFullPath','A_LoopFileLongPath','A_LoopFileName','A_LoopFileShortName',
71            'A_LoopFileShortPath','A_LoopFileSize','A_LoopFileSizeKB','A_LoopFileSizeMB',
72            'A_LoopFileTimeAccessed','A_LoopFileTimeCreated','A_LoopFileTimeModified','A_LoopReadLine',
73            'A_LoopRegKey','A_LoopRegName','A_LoopRegSubkey','A_LoopRegTimeModified',
74            'A_LoopRegType','A_MDAY','A_Min','A_MM',
75            'A_MMM','A_MMMM','A_Mon','A_MouseDelay',
76            'A_MSec','A_MyDocuments','A_Now','A_NowUTC',
77            'A_NumBatchLines','A_OSType','A_OSVersion','A_PriorHotkey',
78            'A_ProgramFiles','A_Programs','A_ProgramsCommon','A_ScreenHeight',
79            'A_ScreenWidth','A_ScriptDir','A_ScriptFullPath','A_ScriptName',
80            'A_Sec','A_Space','A_StartMenu','A_StartMenuCommon',
81            'A_Startup','A_StartupCommon','A_StringCaseSense','A_Tab',
82            'A_Temp','A_ThisFunc','A_ThisHotkey','A_ThisLabel',
83            'A_ThisMenu','A_ThisMenuItem','A_ThisMenuItemPos','A_TickCount',
84            'A_TimeIdle','A_TimeIdlePhysical','A_TimeSincePriorHotkey','A_TimeSinceThisHotkey',
85            'A_TitleMatchMode','A_TitleMatchModeSpeed','A_UserName','A_WDay',
86            'A_WinDelay','A_WinDir','A_WorkingDir','A_YDay',
87            'A_YEAR','A_YWeek','A_YYYY','Clipboard',
88            'ClipboardAll','ComSpec','ErrorLevel','ProgramFiles',
89            ),
90        3 => array(
91            'AutoTrim',
92            'BlockInput','Break','Click',
93            'ClipWait','Continue','Control',
94            'ControlClick','ControlFocus','ControlGet',
95            'ControlGetFocus','ControlGetPos','ControlGetText',
96            'ControlMove','ControlSend','ControlSendRaw',
97            'ControlSetText','CoordMode','Critical',
98            'DetectHiddenText','DetectHiddenWindows','DllCall','Drive',
99            'DriveGet','DriveSpaceFree',
100            'Else','EnvAdd','EnvDiv',
101            'EnvGet','EnvMult','EnvSet',
102            'EnvSub','EnvUpdate','Exit',
103            'ExitApp','FileAppend','FileCopy',
104            'FileCopyDir','FileCreateDir','FileCreateShortcut',
105            'FileDelete','FileGetAttrib','FileGetShortcut',
106            'FileGetSize','FileGetTime','FileGetVersion',
107            'FileInstall','FileMove','FileMoveDir',
108            'FileRead','FileReadLine','FileRecycle',
109            'FileRecycleEmpty','FileRemoveDir','FileSelectFile',
110            'FileSelectFolder','FileSetAttrib','FileSetTime',
111            'FormatTime','Gosub',
112            'Goto','GroupActivate','GroupAdd',
113            'GroupClose','GroupDeactivate','Gui',
114            'GuiControl','GuiControlGet','Hotkey',
115            'IfExist','IfGreater','IfGreaterOrEqual',
116            'IfInString','IfLess','IfLessOrEqual',
117            'IfMsgBox','IfNotEqual','IfNotExist',
118            'IfNotInString','IfWinActive','IfWinExist',
119            'IfWinNotActive','IfWinNotExist','ImageSearch',
120            'IniDelete','IniRead','IniWrite',
121            'Input','InputBox','KeyHistory',
122            'KeyWait','ListHotkeys','ListLines',
123            'ListVars','Loop',
124            'Menu','MouseClick','MouseClickDrag',
125            'MouseGetPos','MouseMove','MsgBox',
126            'OnMessage','OnExit','OutputDebug',
127            'PixelGetColor','PixelSearch','PostMessage',
128            'Process','Progress','Random',
129            'RegExMatch','RegExReplace','RegisterCallback',
130            'RegDelete','RegRead','RegWrite',
131            'Reload','Repeat','Return',
132            'Run','RunAs','RunWait',
133            'Send','SendEvent','SendInput',
134            'SendMessage','SendMode','SendPlay',
135            'SendRaw','SetBatchLines','SetCapslockState',
136            'SetControlDelay','SetDefaultMouseSpeed','SetEnv',
137            'SetFormat','SetKeyDelay','SetMouseDelay',
138            'SetNumlockState','SetScrollLockState','SetStoreCapslockMode',
139            'SetTimer','SetTitleMatchMode','SetWinDelay',
140            'SetWorkingDir','Shutdown','Sleep',
141            'Sort','SoundBeep','SoundGet',
142            'SoundGetWaveVolume','SoundPlay','SoundSet',
143            'SoundSetWaveVolume','SplashImage','SplashTextOff',
144            'SplashTextOn','SplitPath','StatusBarGetText',
145            'StatusBarWait','StringCaseSense','StringGetPos',
146            'StringLeft','StringLen','StringLower',
147            'StringMid','StringReplace','StringRight',
148            'StringSplit','StringTrimLeft','StringTrimRight',
149            'StringUpper','Suspend','SysGet',
150            'Thread','ToolTip','Transform',
151            'TrayTip','URLDownloadToFile','While',
152            'VarSetCapacity',
153            'WinActivate','WinActivateBottom','WinClose',
154            'WinGet','WinGetActiveStats','WinGetActiveTitle',
155            'WinGetClass','WinGetPos','WinGetText',
156            'WinGetTitle','WinHide','WinKill',
157            'WinMaximize','WinMenuSelectItem','WinMinimize',
158            'WinMinimizeAll','WinMinimizeAllUndo','WinMove',
159            'WinRestore','WinSet','WinSetTitle',
160            'WinShow','WinWait','WinWaitActive',
161            'WinWaitClose','WinWaitNotActive'
162            ),
163        4 => array(
164            'Abs','ACos','Asc','ASin',
165            'ATan','Ceil','Chr','Cos',
166            'Exp','FileExist','Floor',
167            'GetKeyState','IL_Add','IL_Create','IL_Destroy',
168            'InStr','IsFunc','IsLabel','Ln',
169            'Log','LV_Add','LV_Delete','LV_DeleteCol',
170            'LV_GetCount','LV_GetNext','LV_GetText','LV_Insert',
171            'LV_InsertCol','LV_Modify','LV_ModifyCol','LV_SetImageList',
172            'Mod','NumGet','NumPut',
173            'Round',
174            'SB_SetIcon','SB_SetParts','SB_SetText','Sin',
175            'Sqrt','StrLen','SubStr','Tan',
176            'TV_Add','TV_Delete','TV_GetChild','TV_GetCount',
177            'TV_GetNext','TV_Get','TV_GetParent','TV_GetPrev',
178            'TV_GetSelection','TV_GetText','TV_Modify',
179            'WinActive','WinExist'
180            ),
181        5 => array(
182            // #Directives
183            'AllowSameLineComments','ClipboardTimeout','CommentFlag',
184            'ErrorStdOut','EscapeChar','HotkeyInterval',
185            'HotkeyModifierTimeout','Hotstring','IfWinActive',
186            'IfWinExist','IfWinNotActive','IfWinNotExist',
187            'Include','IncludeAgain','InstallKeybdHook',
188            'InstallMouseHook','KeyHistory','LTrim',
189            'MaxHotkeysPerInterval','MaxMem','MaxThreads',
190            'MaxThreadsBuffer','MaxThreadsPerHotkey','NoEnv',
191            'NoTrayIcon','Persistent','SingleInstance',
192            'UseHook','WinActivateForce'
193            ),
194        6 => array(
195            'Shift','LShift','RShift',
196            'Alt','LAlt','RAlt',
197            'LControl','RControl',
198            'Ctrl','LCtrl','RCtrl',
199            'LWin','RWin','AppsKey',
200            'AltDown','AltUp','ShiftDown',
201            'ShiftUp','CtrlDown','CtrlUp',
202            'LWinDown','LWinUp','RWinDown',
203            'RWinUp','LButton','RButton',
204            'MButton','WheelUp','WheelDown',
205            'WheelLeft','WheelRight','XButton1',
206            'XButton2','Joy1','Joy2',
207            'Joy3','Joy4','Joy5',
208            'Joy6','Joy7','Joy8',
209            'Joy9','Joy10','Joy11',
210            'Joy12','Joy13','Joy14',
211            'Joy15','Joy16','Joy17',
212            'Joy18','Joy19','Joy20',
213            'Joy21','Joy22','Joy23',
214            'Joy24','Joy25','Joy26',
215            'Joy27','Joy28','Joy29',
216            'Joy30','Joy31','Joy32',
217            'JoyX','JoyY','JoyZ',
218            'JoyR','JoyU','JoyV',
219            'JoyPOV','JoyName','JoyButtons',
220            'JoyAxes','JoyInfo','Space',
221            'Tab','Enter',
222            'Escape','Esc','BackSpace',
223            'BS','Delete','Del',
224            'Insert','Ins','PGUP',
225            'PGDN','Home','End',
226            'Up','Down','Left',
227            'Right','PrintScreen','CtrlBreak',
228            'Pause','ScrollLock','CapsLock',
229            'NumLock','Numpad0','Numpad1',
230            'Numpad2','Numpad3','Numpad4',
231            'Numpad5','Numpad6','Numpad7',
232            'Numpad8','Numpad9','NumpadMult',
233            'NumpadAdd','NumpadSub','NumpadDiv',
234            'NumpadDot','NumpadDel','NumpadIns',
235            'NumpadClear','NumpadUp','NumpadDown',
236            'NumpadLeft','NumpadRight','NumpadHome',
237            'NumpadEnd','NumpadPgup','NumpadPgdn',
238            'NumpadEnter','F1','F2',
239            'F3','F4','F5',
240            'F6','F7','F8',
241            'F9','F10','F11',
242            'F12','F13','F14',
243            'F15','F16','F17',
244            'F18','F19','F20',
245            'F21','F22','F23',
246            'F24','Browser_Back','Browser_Forward',
247            'Browser_Refresh','Browser_Stop','Browser_Search',
248            'Browser_Favorites','Browser_Home','Volume_Mute',
249            'Volume_Down','Volume_Up','Media_Next',
250            'Media_Prev','Media_Stop','Media_Play_Pause',
251            'Launch_Mail','Launch_Media','Launch_App1',
252            'Launch_App2'
253            ),
254        7 => array(
255            // Gui commands
256            'Add',
257            'Show', 'Submit', 'Cancel', 'Destroy',
258            'Font', 'Color', 'Margin', 'Flash', 'Default',
259            'GuiEscape','GuiClose','GuiSize','GuiContextMenu','GuiDropFilesTabStop',
260            ),
261        8 => array(
262            // Gui Controls
263            'Button',
264            'Checkbox','Radio','DropDownList','DDL',
265            'ComboBox','ListBox','ListView',
266            'Text', 'Edit', 'UpDown', 'Picture',
267            'TreeView','DateTime', 'MonthCal',
268            'Slider'
269            )
270        ),
271    'SYMBOLS' => array(
272        '(',')','[',']',
273        '+','-','*','/','&','^',
274        '=','+=','-=','*=','/=','&=',
275        '==','<','<=','>','>=',':=',
276        ',','.'
277        ),
278    'CASE_SENSITIVE' => array(
279        GESHI_COMMENTS => false,
280        1 => false,
281        2 => false,
282        3 => false,
283        4 => false,
284        5 => false,
285        6 => false,
286        7 => false,
287        8 => false
288        ),
289    'STYLES' => array(
290        'KEYWORDS' => array(
291            1 => 'color: #AAAAFF; font-weight: bold;',       // reserved #blue
292            2 => 'color: #88FF88;',                         // BIV yellow
293            3 => 'color: #FF00FF; font-style: italic;',       // commands purple
294            4 => 'color: #888844; font-weight: bold;',       // functions #0080FF
295            5 => 'color: #000000; font-style: italic;',    // directives #black
296            6 => 'color: #FF0000; font-style: italic;',      // hotkeys #red
297            7 => 'color: #000000; font-style: italic;',    // gui commands #black
298            8 => 'color: #000000; font-style: italic;'      // gui controls
299            ),
300        'COMMENTS' => array(
301            'MULTI' => 'font-style: italic; color: #669900;',
302            1 => 'font-style: italic; color: #009933;'
303            ),
304        'ESCAPE_CHAR' => array(
305            0 => ''
306            ),
307        'BRACKETS' => array(
308            0 => 'color: #00FF00; font-weight: bold;'
309            ),
310        'STRINGS' => array(
311            0 => 'font-weight: bold; color: #008080;'
312            ),
313        'NUMBERS' => array(
314            0 => 'color: #0000dd;'
315            ),
316        'METHODS' => array(
317            1 => 'color: #0000FF; font-style: italic; font-weight: italic;'
318            ),
319        'SYMBOLS' => array(
320            0 => 'color: #000000; font-weight: italic;'
321            ),
322        'REGEXPS' => array(
323            0 => 'font-weight: italic; color: #A00A0;',
324            1 => 'color: #CC0000; font-style: italic;',
325            2 => 'color: #DD0000; font-style: italic;',
326            3 => 'color: #88FF88;'
327            ),
328        'SCRIPT' => array(
329            )
330        ),
331    'OOLANG' => false,
332    'OBJECT_SPLITTERS' => array(
333        1 => '_'
334        ),
335    'REGEXPS' => array(
336        //Variables
337        0 => '%[a-zA-Z_][a-zA-Z0-9_]*%',
338        //hotstrings
339        1 => '::[\w\d]+::',
340        //labels
341        2 => '\w[\w\d]+:\s',
342        //Built-in Variables
343        3 => '\bA_\w+\b(?![^<]*>)'
344        ),
345    'URLS' => array(
346        1 => '',
347        2 => 'http://www.autohotkey.com/docs/Variables.htm#{FNAME}',
348        3 => 'http://www.autohotkey.com/docs/commands/{FNAME}.htm',
349        4 => 'http://www.autohotkey.com/docs/Functions.htm#BuiltIn',
350        5 => 'http://www.autohotkey.com/docs/commands/_{FNAME}.htm',
351        6 => '',
352        7 => 'http://www.autohotkey.com/docs/commands/Gui.htm#{FNAME}',
353        8 => 'http://www.autohotkey.com/docs/commands/GuiControls.htm#{FNAME}'
354        ),
355    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
356    'SCRIPT_DELIMITERS' => array(
357        ),
358    'HIGHLIGHT_STRICT_BLOCK' => array(
359        0 => true,
360        1 => true,
361        2 => true,
362        3 => true
363        ),
364    'PARSER_CONTROL' => array(
365        'KEYWORDS' => array(
366            5 => array(
367                'DISALLOWED_BEFORE' => '(?<!\w)\#'
368                )
369            )
370        )
371);
372