neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

autohotkey.vim (12076B)


      1 " Vim syntax file
      2 " Language:         AutoHotkey script file
      3 " Maintainer:       Michael Wong
      4 "                   https://github.com/mmikeww/autohotkey.vim
      5 " Latest Revision:  2022-07-25
      6 " Previous Maintainers:       SungHyun Nam <goweol@gmail.com>
      7 "                             Nikolai Weibull <now@bitwi.se>
      8 
      9 if exists("b:current_syntax")
     10  finish
     11 endif
     12 
     13 let s:cpo_save = &cpo
     14 set cpo&vim
     15 
     16 syn case ignore
     17 
     18 syn keyword autohotkeyTodo
     19      \ contained
     20      \ TODO FIXME XXX NOTE
     21 
     22 " only these chars are valid as escape sequences:   ,%`;nrbtvaf
     23 " https://autohotkey.com/docs/commands/_EscapeChar.htm
     24 syn match   autohotkeyEscape
     25      \ display
     26      \ '`[,%`;nrbtvaf]'
     27 
     28 syn region autohotkeyString
     29      \ display
     30      \ oneline
     31      \ matchgroup=autohotkeyStringDelimiter
     32      \ start=+"+
     33      \ end=+"+
     34      \ contains=autohotkeyEscape,autohotkeyMatchClass
     35 
     36 syn match autohotkeyVariable
     37      \ display
     38      \ oneline
     39      \ contains=autohotkeyBuiltinVariable
     40      \ keepend
     41      \ '%\S\{-}%'
     42 
     43 syn keyword autohotkeyBuiltinVariable
     44      \ A_Space A_Tab
     45      \ A_WorkingDir A_ScriptDir A_ScriptName A_ScriptFullPath A_ScriptHwnd A_LineNumber
     46      \ A_LineFile A_ThisFunc A_ThisLabel A_AhkVersion A_AhkPath A_IsUnicode A_IsCompiled A_ExitReason
     47      \ A_YYYY A_MM A_DD A_MMMM A_MMM A_DDDD A_DDD A_WDay A_YDay A_YWeek A_Hour A_Min
     48      \ A_Mon A_Year A_MDay A_NumBatchLines
     49      \ A_Sec A_MSec A_Now A_NowUTC A_TickCount
     50      \ A_IsSuspended A_IsPaused A_IsCritical A_BatchLines A_TitleMatchMode A_TitleMatchModeSpeed
     51      \ A_DetectHiddenWindows A_DetectHiddenText A_AutoTrim A_StringCaseSense
     52      \ A_FileEncoding A_FormatInteger A_FormatFloat A_WinDelay A_ControlDelay
     53      \ A_SendMode A_SendLevel A_StoreCapsLockMode A_KeyDelay A_KeyDuration
     54      \ A_KeyDelayPlay A_KeyDurationPlay A_MouseDelayPlay
     55      \ A_MouseDelay A_DefaultMouseSpeed A_RegView A_IconHidden A_IconTip A_IconFile
     56      \ A_CoordModeToolTip A_CoordModePixel A_CoordModeMouse A_CoordModeCaret A_CoordModeMenu
     57      \ A_IconNumber
     58      \ A_TimeIdle A_TimeIdlePhysical A_DefaultGui A_DefaultListView A_DefaultTreeView
     59      \ A_Gui A_GuiControl A_GuiWidth A_GuiHeight A_GuiX A_GuiY A_GuiEvent
     60      \ A_GuiControlEvent A_EventInfo
     61      \ A_ThisMenuItem A_ThisMenu A_ThisMenuItemPos A_ThisHotkey A_PriorHotkey
     62      \ A_PriorKey A_TimeSinceThisHotkey A_TimeSincePriorHotkey A_EndChar
     63      \ ComSpec A_Temp A_OSType A_OSVersion A_Language A_ComputerName A_UserName
     64      \ A_Is64BitOS A_PtrSize
     65      \ A_WinDir A_ProgramFiles ProgramFiles A_AppData A_AppDataCommon A_Desktop
     66      \ A_DesktopCommon A_StartMenu A_StartMenuCommon A_Programs
     67      \ A_ProgramsCommon A_Startup A_StartupCommon A_MyDocuments A_IsAdmin
     68      \ A_ScreenWidth A_ScreenHeight A_ScreenDPI A_IPAddress1 A_IPAddress2 A_IPAddress3
     69      \ A_IPAddress4
     70      \ A_Cursor A_CaretX A_CaretY Clipboard ClipboardAll ErrorLevel A_LastError
     71      \ A_Index A_LoopFileName A_LoopRegName A_LoopReadLine A_LoopField
     72      \ A_LoopFileExt A_LoopFileFullPath A_LoopFileLongPath A_LoopFileShortPath
     73      \ A_LoopFileShortName A_LoopFileDir A_LoopFileTimeModified A_LoopFileTimeCreated
     74      \ A_LoopFileTimeAccessed A_LoopFileAttrib A_LoopFileSize A_LoopFileSizeKB A_LoopFileSizeMB
     75      \ A_LoopRegType A_LoopRegKey A_LoopRegSubKey A_LoopRegTimeModified
     76      \ A_TimeIdleKeyboard A_TimeIdleMouse A_ListLines A_ComSpec A_LoopFilePath A_Args
     77 
     78 syn match   autohotkeyBuiltinVariable
     79      \ contained
     80      \ display
     81      \ '%\d\+%'
     82 
     83 syn keyword autohotkeyCommand
     84      \ ClipWait EnvGet EnvSet EnvUpdate
     85      \ Drive DriveGet DriveSpaceFree FileAppend FileCopy FileCopyDir
     86      \ FileCreateDir FileCreateShortcut FileDelete FileGetAttrib FileEncoding
     87      \ FileGetShortcut FileGetSize FileGetTime FileGetVersion FileInstall
     88      \ FileMove FileMoveDir FileReadLine FileRead FileRecycle FileRecycleEmpty
     89      \ FileRemoveDir FileSelectFolder FileSelectFile FileSetAttrib FileSetTime
     90      \ IniDelete IniRead IniWrite SetWorkingDir
     91      \ SplitPath
     92      \ Gui GuiControl GuiControlGet IfMsgBox InputBox MsgBox Progress
     93      \ SplashImage SplashTextOn SplashTextOff ToolTip TrayTip
     94      \ Hotkey ListHotkeys BlockInput ControlSend ControlSendRaw GetKeyState
     95      \ KeyHistory KeyWait Input Send SendRaw SendInput SendPlay SendEvent
     96      \ SendMode SetKeyDelay SetNumScrollCapsLockState SetStoreCapslockMode
     97      \ EnvAdd EnvDiv EnvMult EnvSub Random SetFormat Transform
     98      \ AutoTrim BlockInput CoordMode Critical Edit ImageSearch
     99      \ ListLines ListVars Menu OutputDebug PixelGetColor PixelSearch
    100      \ SetBatchLines SetEnv SetTimer SysGet Thread Transform URLDownloadToFile
    101      \ Click ControlClick MouseClick MouseClickDrag MouseGetPos MouseMove
    102      \ SetDefaultMouseSpeed SetMouseDelay
    103      \ Process Run RunWait RunAs Shutdown Sleep
    104      \ RegDelete RegRead RegWrite
    105      \ SoundBeep SoundGet SoundGetWaveVolume SoundPlay SoundSet
    106      \ SoundSetWaveVolume
    107      \ FormatTime IfInString IfNotInString Sort StringCaseSense StringGetPos
    108      \ StringLeft StringRight StringLower StringUpper StringMid StringReplace
    109      \ StringSplit StringTrimLeft StringTrimRight StringLen
    110      \ StrSplit StrReplace Throw
    111      \ Control ControlClick ControlFocus ControlGet ControlGetFocus
    112      \ ControlGetPos ControlGetText ControlMove ControlSend ControlSendRaw
    113      \ ControlSetText Menu PostMessage SendMessage SetControlDelay
    114      \ WinMenuSelectItem GroupActivate GroupAdd GroupClose GroupDeactivate
    115      \ DetectHiddenText DetectHiddenWindows SetTitleMatchMode SetWinDelay
    116      \ StatusBarGetText StatusBarWait WinActivate WinActivateBottom WinClose
    117      \ WinGet WinGetActiveStats WinGetActiveTitle WinGetClass WinGetPos
    118      \ WinGetText WinGetTitle WinHide WinKill WinMaximize WinMinimize
    119      \ WinMinimizeAll WinMinimizeAllUndo WinMove WinRestore WinSet
    120      \ WinSetTitle WinShow WinWait WinWaitActive WinWaitNotActive WinWaitClose
    121      \ SetCapsLockState SetNumLockState SetScrollLockState
    122      \ Hotstring LoadPicture MenuGetHandle MenuGetName OnError OnClipboardChange
    123 
    124 syn keyword autohotkeyFunction
    125      \ InStr RegExMatch RegExReplace StrLen SubStr Asc Chr Func
    126      \ DllCall VarSetCapacity WinActive WinExist IsLabel OnMessage 
    127      \ Abs Ceil Exp Floor Log Ln Mod Round Sqrt Sin Cos Tan ASin ACos ATan
    128      \ FileExist GetKeyState NumGet NumPut StrGet StrPut RegisterCallback
    129      \ IsFunc Trim LTrim RTrim IsObject Object Array FileOpen
    130      \ ComObjActive ComObjArray ComObjConnect ComObjCreate ComObjGet
    131      \ ComObjError ComObjFlags ComObjQuery ComObjType ComObjValue ComObject
    132      \ Format Exception Ord InputHook
    133 
    134 syn keyword autohotkeyStatement
    135      \ Break Continue Exit ExitApp Gosub Goto OnExit Pause Return
    136      \ Suspend Reload new class extends
    137 
    138 syn keyword autohotkeyRepeat
    139      \ Loop
    140 
    141 syn keyword autohotkeyConditional
    142      \ IfExist IfNotExist If IfEqual IfLess IfGreater Else
    143      \ IfWinExist IfWinNotExist IfWinActive IfWinNotActive
    144      \ IfNotEqual IfLessOrEqual IfGreaterOrEqual
    145      \ while until for in try catch finally not
    146      \ switch case default
    147 
    148 syn match   autohotkeyPreProcStart
    149      \ nextgroup=
    150      \   autohotkeyInclude,
    151      \   autohotkeyPreProc
    152      \ skipwhite
    153      \ display
    154      \ '^\s*\zs#'
    155 
    156 syn keyword autohotkeyInclude
    157      \ contained
    158      \ Include
    159      \ IncludeAgain
    160 
    161 syn keyword autohotkeyPreProc
    162      \ contained
    163      \ HotkeyInterval HotKeyModifierTimeout
    164      \ Hotstring
    165      \ IfWinActive IfWinNotActive IfWinExist IfWinNotExist
    166      \ If IfTimeout
    167      \ MaxHotkeysPerInterval MaxThreads MaxThreadsBuffer MaxThreadsPerHotkey
    168      \ UseHook InstallKeybdHook InstallMouseHook
    169      \ KeyHistory
    170      \ NoTrayIcon SingleInstance
    171      \ WinActivateForce
    172      \ AllowSameLineComments
    173      \ ClipboardTimeout
    174      \ CommentFlag
    175      \ ErrorStdOut
    176      \ EscapeChar
    177      \ MaxMem
    178      \ NoEnv
    179      \ Persistent
    180      \ LTrim
    181      \ InputLevel
    182      \ MenuMaskKey
    183      \ Warn
    184 
    185 syn keyword autohotkeyMatchClass
    186      \ ahk_group ahk_class ahk_id ahk_pid ahk_exe
    187 
    188 syn match   autohotkeyNumbers
    189      \ display
    190      \ transparent
    191      \ contains=
    192      \   autohotkeyInteger,
    193      \   autohotkeyFloat
    194      \ '\<\d\|\.\d'
    195 
    196 syn match   autohotkeyInteger
    197      \ contained
    198      \ display
    199      \ '\d\+\>'
    200 
    201 syn match   autohotkeyInteger
    202      \ contained
    203      \ display
    204      \ '0x\x\+\>'
    205 
    206 syn match   autohotkeyFloat
    207      \ contained
    208      \ display
    209      \ '\d\+\.\d*\|\.\d\+\>'
    210 
    211 syn keyword autohotkeyType
    212      \ local
    213      \ global
    214      \ static
    215      \ byref
    216 
    217 syn keyword autohotkeyBoolean
    218      \ true
    219      \ false
    220 
    221 syn match   autohotkeyHotkey
    222      \ contains=autohotkeyKey,
    223      \   autohotkeyHotkeyDelimiter
    224      \ display
    225      \ '^\s*\S*\%( Up\)\?::'
    226 
    227 syn match   autohotkeyKey
    228      \ contained
    229      \ display
    230      \ '^.\{-}'
    231 
    232 syn match   autohotkeyDelimiter
    233      \ contained
    234      \ display
    235      \ '::'
    236 
    237 " allowable hotstring options:
    238 " https://autohotkey.com/docs/Hotstrings.htm
    239 syn match   autohotkeyHotstringDefinition
    240      \ contains=autohotkeyHotstring,
    241      \   autohotkeyHotstringDelimiter
    242      \ display
    243      \ '^\s*:\%([*?]\|[BORZ]0\?\|C[01]\?\|K\d\+\|P\d\+\|S[IPE]\)*:.\{-}::'
    244 
    245 syn match   autohotkeyHotstring
    246      \ contained
    247      \ display
    248      \ '.\{-}'
    249 
    250 syn match   autohotkeyHotstringDelimiter
    251      \ contained
    252      \ display
    253      \ '::'
    254 
    255 syn match   autohotkeyHotstringDelimiter
    256      \ contains=autohotkeyHotstringOptions
    257      \ contained
    258      \ display
    259      \ ':\%([*?]\|[BORZ]0\?\|C[01]\?\|K\d\+\|P\d\+\|S[IPE]\)*:'
    260 
    261 syn match   autohotkeyHotstringOptions
    262      \ contained
    263      \ display
    264      \ '\%([*?]\|[BORZ]0\?\|C[01]\?\|K\d\+\|P\d\+\|S[IPE]\)*'
    265 
    266 syn cluster autohotkeyCommentGroup
    267      \ contains=
    268      \   autohotkeyTodo,
    269      \   @Spell
    270 
    271 syn match   autohotkeyComment
    272      \ display
    273      \ contains=@autohotkeyCommentGroup
    274      \ '\%(^;\|\s\+;\).*$'
    275 
    276 syn region  autohotkeyComment
    277      \ contains=@autohotkeyCommentGroup
    278      \ matchgroup=autohotkeyCommentStart
    279      \ start='^\s*/\*'
    280      \ end='^\s*\*/'
    281 
    282 " TODO: Shouldn't we look for g:, b:,  variables before defaulting to
    283 " something?
    284 if exists("g:autohotkey_syntax_sync_minlines")
    285  let b:autohotkey_syntax_sync_minlines = g:autohotkey_syntax_sync_minlines
    286 else
    287  let b:autohotkey_syntax_sync_minlines = 50
    288 endif
    289 exec "syn sync ccomment autohotkeyComment minlines=" . b:autohotkey_syntax_sync_minlines
    290 
    291 hi def link autohotkeyTodo                Todo
    292 hi def link autohotkeyComment             Comment
    293 hi def link autohotkeyCommentStart        autohotkeyComment
    294 hi def link autohotkeyEscape              Special
    295 hi def link autohotkeyHotkey              Type
    296 hi def link autohotkeyKey                 Type
    297 hi def link autohotkeyDelimiter           Delimiter
    298 hi def link autohotkeyHotstringDefinition Type
    299 hi def link autohotkeyHotstring           Type
    300 hi def link autohotkeyHotstringDelimiter  autohotkeyDelimiter
    301 hi def link autohotkeyHotstringOptions    Special
    302 hi def link autohotkeyString              String
    303 hi def link autohotkeyStringDelimiter     autohotkeyString
    304 hi def link autohotkeyVariable            Identifier
    305 hi def link autohotkeyVariableDelimiter   autohotkeyVariable
    306 hi def link autohotkeyBuiltinVariable     Macro
    307 hi def link autohotkeyCommand             Keyword
    308 hi def link autohotkeyFunction            Function
    309 hi def link autohotkeyStatement           autohotkeyCommand
    310 hi def link autohotkeyRepeat              Repeat
    311 hi def link autohotkeyConditional         Conditional
    312 hi def link autohotkeyPreProcStart        PreProc
    313 hi def link autohotkeyInclude             Include
    314 hi def link autohotkeyPreProc             PreProc
    315 hi def link autohotkeyMatchClass          Typedef
    316 hi def link autohotkeyNumber              Number
    317 hi def link autohotkeyInteger             autohotkeyNumber
    318 hi def link autohotkeyFloat               autohotkeyNumber
    319 hi def link autohotkeyType                Type
    320 hi def link autohotkeyBoolean             Boolean
    321 
    322 let b:current_syntax = "autohotkey"
    323 
    324 let &cpo = s:cpo_save
    325 unlet s:cpo_save