mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			326 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			326 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:         AutoHotkey script file
 | |
| " Maintainer:       Michael Wong
 | |
| "                   https://github.com/mmikeww/autohotkey.vim
 | |
| " Latest Revision:  2022-07-25
 | |
| " Previous Maintainers:       SungHyun Nam <goweol@gmail.com>
 | |
| "                             Nikolai Weibull <now@bitwi.se>
 | |
| 
 | |
| if exists("b:current_syntax")
 | |
|   finish
 | |
| endif
 | |
| 
 | |
| let s:cpo_save = &cpo
 | |
| set cpo&vim
 | |
| 
 | |
| syn case ignore
 | |
| 
 | |
| syn keyword autohotkeyTodo
 | |
|       \ contained
 | |
|       \ TODO FIXME XXX NOTE
 | |
| 
 | |
| " only these chars are valid as escape sequences:   ,%`;nrbtvaf
 | |
| " https://autohotkey.com/docs/commands/_EscapeChar.htm
 | |
| syn match   autohotkeyEscape
 | |
|       \ display
 | |
|       \ '`[,%`;nrbtvaf]'
 | |
| 
 | |
| syn region autohotkeyString
 | |
|       \ display
 | |
|       \ oneline
 | |
|       \ matchgroup=autohotkeyStringDelimiter
 | |
|       \ start=+"+
 | |
|       \ end=+"+
 | |
|       \ contains=autohotkeyEscape,autohotkeyMatchClass
 | |
| 
 | |
| syn match autohotkeyVariable
 | |
|       \ display
 | |
|       \ oneline
 | |
|       \ contains=autohotkeyBuiltinVariable
 | |
|       \ keepend
 | |
|       \ '%\S\{-}%'
 | |
| 
 | |
| syn keyword autohotkeyBuiltinVariable
 | |
|       \ A_Space A_Tab
 | |
|       \ A_WorkingDir A_ScriptDir A_ScriptName A_ScriptFullPath A_ScriptHwnd A_LineNumber
 | |
|       \ A_LineFile A_ThisFunc A_ThisLabel A_AhkVersion A_AhkPath A_IsUnicode A_IsCompiled A_ExitReason
 | |
|       \ A_YYYY A_MM A_DD A_MMMM A_MMM A_DDDD A_DDD A_WDay A_YDay A_YWeek A_Hour A_Min
 | |
|       \ A_Mon A_Year A_MDay A_NumBatchLines
 | |
|       \ A_Sec A_MSec A_Now A_NowUTC A_TickCount
 | |
|       \ A_IsSuspended A_IsPaused A_IsCritical A_BatchLines A_TitleMatchMode A_TitleMatchModeSpeed
 | |
|       \ A_DetectHiddenWindows A_DetectHiddenText A_AutoTrim A_StringCaseSense
 | |
|       \ A_FileEncoding A_FormatInteger A_FormatFloat A_WinDelay A_ControlDelay
 | |
|       \ A_SendMode A_SendLevel A_StoreCapsLockMode A_KeyDelay A_KeyDuration
 | |
|       \ A_KeyDelayPlay A_KeyDurationPlay A_MouseDelayPlay
 | |
|       \ A_MouseDelay A_DefaultMouseSpeed A_RegView A_IconHidden A_IconTip A_IconFile
 | |
|       \ A_CoordModeToolTip A_CoordModePixel A_CoordModeMouse A_CoordModeCaret A_CoordModeMenu
 | |
|       \ A_IconNumber
 | |
|       \ A_TimeIdle A_TimeIdlePhysical A_DefaultGui A_DefaultListView A_DefaultTreeView
 | |
|       \ A_Gui A_GuiControl A_GuiWidth A_GuiHeight A_GuiX A_GuiY A_GuiEvent
 | |
|       \ A_GuiControlEvent A_EventInfo
 | |
|       \ A_ThisMenuItem A_ThisMenu A_ThisMenuItemPos A_ThisHotkey A_PriorHotkey
 | |
|       \ A_PriorKey A_TimeSinceThisHotkey A_TimeSincePriorHotkey A_EndChar
 | |
|       \ ComSpec A_Temp A_OSType A_OSVersion A_Language A_ComputerName A_UserName
 | |
|       \ A_Is64BitOS A_PtrSize
 | |
|       \ A_WinDir A_ProgramFiles ProgramFiles A_AppData A_AppDataCommon A_Desktop
 | |
|       \ A_DesktopCommon A_StartMenu A_StartMenuCommon A_Programs
 | |
|       \ A_ProgramsCommon A_Startup A_StartupCommon A_MyDocuments A_IsAdmin
 | |
|       \ A_ScreenWidth A_ScreenHeight A_ScreenDPI A_IPAddress1 A_IPAddress2 A_IPAddress3
 | |
|       \ A_IPAddress4
 | |
|       \ A_Cursor A_CaretX A_CaretY Clipboard ClipboardAll ErrorLevel A_LastError
 | |
|       \ A_Index A_LoopFileName A_LoopRegName A_LoopReadLine A_LoopField
 | |
|       \ A_LoopFileExt A_LoopFileFullPath A_LoopFileLongPath A_LoopFileShortPath
 | |
|       \ A_LoopFileShortName A_LoopFileDir A_LoopFileTimeModified A_LoopFileTimeCreated
 | |
|       \ A_LoopFileTimeAccessed A_LoopFileAttrib A_LoopFileSize A_LoopFileSizeKB A_LoopFileSizeMB
 | |
|       \ A_LoopRegType A_LoopRegKey A_LoopRegSubKey A_LoopRegTimeModified
 | |
|       \ A_TimeIdleKeyboard A_TimeIdleMouse A_ListLines A_ComSpec A_LoopFilePath A_Args
 | |
| 
 | |
| syn match   autohotkeyBuiltinVariable
 | |
|       \ contained
 | |
|       \ display
 | |
|       \ '%\d\+%'
 | |
| 
 | |
| syn keyword autohotkeyCommand
 | |
|       \ ClipWait EnvGet EnvSet EnvUpdate
 | |
|       \ Drive DriveGet DriveSpaceFree FileAppend FileCopy FileCopyDir
 | |
|       \ FileCreateDir FileCreateShortcut FileDelete FileGetAttrib FileEncoding
 | |
|       \ FileGetShortcut FileGetSize FileGetTime FileGetVersion FileInstall
 | |
|       \ FileMove FileMoveDir FileReadLine FileRead FileRecycle FileRecycleEmpty
 | |
|       \ FileRemoveDir FileSelectFolder FileSelectFile FileSetAttrib FileSetTime
 | |
|       \ IniDelete IniRead IniWrite SetWorkingDir
 | |
|       \ SplitPath
 | |
|       \ Gui GuiControl GuiControlGet IfMsgBox InputBox MsgBox Progress
 | |
|       \ SplashImage SplashTextOn SplashTextOff ToolTip TrayTip
 | |
|       \ Hotkey ListHotkeys BlockInput ControlSend ControlSendRaw GetKeyState
 | |
|       \ KeyHistory KeyWait Input Send SendRaw SendInput SendPlay SendEvent
 | |
|       \ SendMode SetKeyDelay SetNumScrollCapsLockState SetStoreCapslockMode
 | |
|       \ EnvAdd EnvDiv EnvMult EnvSub Random SetFormat Transform
 | |
|       \ AutoTrim BlockInput CoordMode Critical Edit ImageSearch
 | |
|       \ ListLines ListVars Menu OutputDebug PixelGetColor PixelSearch
 | |
|       \ SetBatchLines SetEnv SetTimer SysGet Thread Transform URLDownloadToFile
 | |
|       \ Click ControlClick MouseClick MouseClickDrag MouseGetPos MouseMove
 | |
|       \ SetDefaultMouseSpeed SetMouseDelay
 | |
|       \ Process Run RunWait RunAs Shutdown Sleep
 | |
|       \ RegDelete RegRead RegWrite
 | |
|       \ SoundBeep SoundGet SoundGetWaveVolume SoundPlay SoundSet
 | |
|       \ SoundSetWaveVolume
 | |
|       \ FormatTime IfInString IfNotInString Sort StringCaseSense StringGetPos
 | |
|       \ StringLeft StringRight StringLower StringUpper StringMid StringReplace
 | |
|       \ StringSplit StringTrimLeft StringTrimRight StringLen
 | |
|       \ StrSplit StrReplace Throw
 | |
|       \ Control ControlClick ControlFocus ControlGet ControlGetFocus
 | |
|       \ ControlGetPos ControlGetText ControlMove ControlSend ControlSendRaw
 | |
|       \ ControlSetText Menu PostMessage SendMessage SetControlDelay
 | |
|       \ WinMenuSelectItem GroupActivate GroupAdd GroupClose GroupDeactivate
 | |
|       \ DetectHiddenText DetectHiddenWindows SetTitleMatchMode SetWinDelay
 | |
|       \ StatusBarGetText StatusBarWait WinActivate WinActivateBottom WinClose
 | |
|       \ WinGet WinGetActiveStats WinGetActiveTitle WinGetClass WinGetPos
 | |
|       \ WinGetText WinGetTitle WinHide WinKill WinMaximize WinMinimize
 | |
|       \ WinMinimizeAll WinMinimizeAllUndo WinMove WinRestore WinSet
 | |
|       \ WinSetTitle WinShow WinWait WinWaitActive WinWaitNotActive WinWaitClose
 | |
|       \ SetCapsLockState SetNumLockState SetScrollLockState
 | |
|       \ Hotstring LoadPicture MenuGetHandle MenuGetName OnError OnClipboardChange
 | |
| 
 | |
| syn keyword autohotkeyFunction
 | |
|       \ InStr RegExMatch RegExReplace StrLen SubStr Asc Chr Func
 | |
|       \ DllCall VarSetCapacity WinActive WinExist IsLabel OnMessage 
 | |
|       \ Abs Ceil Exp Floor Log Ln Mod Round Sqrt Sin Cos Tan ASin ACos ATan
 | |
|       \ FileExist GetKeyState NumGet NumPut StrGet StrPut RegisterCallback
 | |
|       \ IsFunc Trim LTrim RTrim IsObject Object Array FileOpen
 | |
|       \ ComObjActive ComObjArray ComObjConnect ComObjCreate ComObjGet
 | |
|       \ ComObjError ComObjFlags ComObjQuery ComObjType ComObjValue ComObject
 | |
|       \ Format Exception Ord InputHook
 | |
| 
 | |
| syn keyword autohotkeyStatement
 | |
|       \ Break Continue Exit ExitApp Gosub Goto OnExit Pause Return
 | |
|       \ Suspend Reload new class extends
 | |
| 
 | |
| syn keyword autohotkeyRepeat
 | |
|       \ Loop
 | |
| 
 | |
| syn keyword autohotkeyConditional
 | |
|       \ IfExist IfNotExist If IfEqual IfLess IfGreater Else
 | |
|       \ IfWinExist IfWinNotExist IfWinActive IfWinNotActive
 | |
|       \ IfNotEqual IfLessOrEqual IfGreaterOrEqual
 | |
|       \ while until for in try catch finally not
 | |
|       \ switch case default
 | |
| 
 | |
| syn match   autohotkeyPreProcStart
 | |
|       \ nextgroup=
 | |
|       \   autohotkeyInclude,
 | |
|       \   autohotkeyPreProc
 | |
|       \ skipwhite
 | |
|       \ display
 | |
|       \ '^\s*\zs#'
 | |
| 
 | |
| syn keyword autohotkeyInclude
 | |
|       \ contained
 | |
|       \ Include
 | |
|       \ IncludeAgain
 | |
| 
 | |
| syn keyword autohotkeyPreProc
 | |
|       \ contained
 | |
|       \ HotkeyInterval HotKeyModifierTimeout
 | |
|       \ Hotstring
 | |
|       \ IfWinActive IfWinNotActive IfWinExist IfWinNotExist
 | |
|       \ If IfTimeout
 | |
|       \ MaxHotkeysPerInterval MaxThreads MaxThreadsBuffer MaxThreadsPerHotkey
 | |
|       \ UseHook InstallKeybdHook InstallMouseHook
 | |
|       \ KeyHistory
 | |
|       \ NoTrayIcon SingleInstance
 | |
|       \ WinActivateForce
 | |
|       \ AllowSameLineComments
 | |
|       \ ClipboardTimeout
 | |
|       \ CommentFlag
 | |
|       \ ErrorStdOut
 | |
|       \ EscapeChar
 | |
|       \ MaxMem
 | |
|       \ NoEnv
 | |
|       \ Persistent
 | |
|       \ LTrim
 | |
|       \ InputLevel
 | |
|       \ MenuMaskKey
 | |
|       \ Warn
 | |
| 
 | |
| syn keyword autohotkeyMatchClass
 | |
|       \ ahk_group ahk_class ahk_id ahk_pid ahk_exe
 | |
| 
 | |
| syn match   autohotkeyNumbers
 | |
|       \ display
 | |
|       \ transparent
 | |
|       \ contains=
 | |
|       \   autohotkeyInteger,
 | |
|       \   autohotkeyFloat
 | |
|       \ '\<\d\|\.\d'
 | |
| 
 | |
| syn match   autohotkeyInteger
 | |
|       \ contained
 | |
|       \ display
 | |
|       \ '\d\+\>'
 | |
| 
 | |
| syn match   autohotkeyInteger
 | |
|       \ contained
 | |
|       \ display
 | |
|       \ '0x\x\+\>'
 | |
| 
 | |
| syn match   autohotkeyFloat
 | |
|       \ contained
 | |
|       \ display
 | |
|       \ '\d\+\.\d*\|\.\d\+\>'
 | |
| 
 | |
| syn keyword autohotkeyType
 | |
|       \ local
 | |
|       \ global
 | |
|       \ static
 | |
|       \ byref
 | |
| 
 | |
| syn keyword autohotkeyBoolean
 | |
|       \ true
 | |
|       \ false
 | |
| 
 | |
| syn match   autohotkeyHotkey
 | |
|       \ contains=autohotkeyKey,
 | |
|       \   autohotkeyHotkeyDelimiter
 | |
|       \ display
 | |
|       \ '^\s*\S*\%( Up\)\?::'
 | |
| 
 | |
| syn match   autohotkeyKey
 | |
|       \ contained
 | |
|       \ display
 | |
|       \ '^.\{-}'
 | |
| 
 | |
| syn match   autohotkeyDelimiter
 | |
|       \ contained
 | |
|       \ display
 | |
|       \ '::'
 | |
| 
 | |
| " allowable hotstring options:
 | |
| " https://autohotkey.com/docs/Hotstrings.htm
 | |
| syn match   autohotkeyHotstringDefinition
 | |
|       \ contains=autohotkeyHotstring,
 | |
|       \   autohotkeyHotstringDelimiter
 | |
|       \ display
 | |
|       \ '^\s*:\%([*?]\|[BORZ]0\?\|C[01]\?\|K\d\+\|P\d\+\|S[IPE]\)*:.\{-}::'
 | |
| 
 | |
| syn match   autohotkeyHotstring
 | |
|       \ contained
 | |
|       \ display
 | |
|       \ '.\{-}'
 | |
| 
 | |
| syn match   autohotkeyHotstringDelimiter
 | |
|       \ contained
 | |
|       \ display
 | |
|       \ '::'
 | |
| 
 | |
| syn match   autohotkeyHotstringDelimiter
 | |
|       \ contains=autohotkeyHotstringOptions
 | |
|       \ contained
 | |
|       \ display
 | |
|       \ ':\%([*?]\|[BORZ]0\?\|C[01]\?\|K\d\+\|P\d\+\|S[IPE]\)*:'
 | |
| 
 | |
| syn match   autohotkeyHotstringOptions
 | |
|       \ contained
 | |
|       \ display
 | |
|       \ '\%([*?]\|[BORZ]0\?\|C[01]\?\|K\d\+\|P\d\+\|S[IPE]\)*'
 | |
| 
 | |
| syn cluster autohotkeyCommentGroup
 | |
|       \ contains=
 | |
|       \   autohotkeyTodo,
 | |
|       \   @Spell
 | |
| 
 | |
| syn match   autohotkeyComment
 | |
|       \ display
 | |
|       \ contains=@autohotkeyCommentGroup
 | |
|       \ '\%(^;\|\s\+;\).*$'
 | |
| 
 | |
| syn region  autohotkeyComment
 | |
|       \ contains=@autohotkeyCommentGroup
 | |
|       \ matchgroup=autohotkeyCommentStart
 | |
|       \ start='^\s*/\*'
 | |
|       \ end='^\s*\*/'
 | |
| 
 | |
| " TODO: Shouldn't we look for g:, b:,  variables before defaulting to
 | |
| " something?
 | |
| if exists("g:autohotkey_syntax_sync_minlines")
 | |
|   let b:autohotkey_syntax_sync_minlines = g:autohotkey_syntax_sync_minlines
 | |
| else
 | |
|   let b:autohotkey_syntax_sync_minlines = 50
 | |
| endif
 | |
| exec "syn sync ccomment autohotkeyComment minlines=" . b:autohotkey_syntax_sync_minlines
 | |
| 
 | |
| hi def link autohotkeyTodo                Todo
 | |
| hi def link autohotkeyComment             Comment
 | |
| hi def link autohotkeyCommentStart        autohotkeyComment
 | |
| hi def link autohotkeyEscape              Special
 | |
| hi def link autohotkeyHotkey              Type
 | |
| hi def link autohotkeyKey                 Type
 | |
| hi def link autohotkeyDelimiter           Delimiter
 | |
| hi def link autohotkeyHotstringDefinition Type
 | |
| hi def link autohotkeyHotstring           Type
 | |
| hi def link autohotkeyHotstringDelimiter  autohotkeyDelimiter
 | |
| hi def link autohotkeyHotstringOptions    Special
 | |
| hi def link autohotkeyString              String
 | |
| hi def link autohotkeyStringDelimiter     autohotkeyString
 | |
| hi def link autohotkeyVariable            Identifier
 | |
| hi def link autohotkeyVariableDelimiter   autohotkeyVariable
 | |
| hi def link autohotkeyBuiltinVariable     Macro
 | |
| hi def link autohotkeyCommand             Keyword
 | |
| hi def link autohotkeyFunction            Function
 | |
| hi def link autohotkeyStatement           autohotkeyCommand
 | |
| hi def link autohotkeyRepeat              Repeat
 | |
| hi def link autohotkeyConditional         Conditional
 | |
| hi def link autohotkeyPreProcStart        PreProc
 | |
| hi def link autohotkeyInclude             Include
 | |
| hi def link autohotkeyPreProc             PreProc
 | |
| hi def link autohotkeyMatchClass          Typedef
 | |
| hi def link autohotkeyNumber              Number
 | |
| hi def link autohotkeyInteger             autohotkeyNumber
 | |
| hi def link autohotkeyFloat               autohotkeyNumber
 | |
| hi def link autohotkeyType                Type
 | |
| hi def link autohotkeyBoolean             Boolean
 | |
| 
 | |
| let b:current_syntax = "autohotkey"
 | |
| 
 | |
| let &cpo = s:cpo_save
 | |
| unlet s:cpo_save
 |