xref: /vim-8.2.3635/runtime/syntax/nsis.vim (revision 079ba76a)
1" Vim syntax file
2" Language:		NSIS script, for version of NSIS 3.08 and later
3" Maintainer:		Ken Takata
4" URL:			https://github.com/k-takata/vim-nsis
5" Previous Maintainer:	Alex Jakushev <[email protected]>
6" Last Change:		2020-10-18
7
8" quit when a syntax file was already loaded
9if exists("b:current_syntax")
10  finish
11endif
12
13let s:cpo_save = &cpo
14set cpo&vim
15
16syn case ignore
17
18
19"Pseudo definitions
20syn match nsisLine nextgroup=@nsisPseudoStatement skipwhite "^"
21syn cluster nsisPseudoStatement	contains=nsisFirstComment,nsisLocalLabel,nsisGlobalLabel
22syn cluster nsisPseudoStatement add=nsisDefine,nsisPreCondit,nsisMacro,nsisInclude,nsisSystem
23syn cluster nsisPseudoStatement add=nsisAttribute,nsisCompiler,nsisVersionInfo,nsisInstruction,nsisStatement
24
25"COMMENTS (4.1)
26syn keyword nsisTodo	todo attention note fixme readme
27syn region nsisComment	start="[;#]" end="$" contains=nsisTodo,nsisLineContinuation,@Spell oneline
28syn region nsisComment	start=".\@1<=/\*" end="\*/" contains=nsisTodo,@Spell
29syn region nsisFirstComment  start="/\*" end="\*/" contained contains=nsisTodo,@Spell skipwhite
30			\ nextgroup=@nsisPseudoStatement
31
32syn match nsisLineContinuation	"\\$"
33
34"STRINGS (4.1)
35syn region nsisString	start=/"/ end=/"/ contains=@nsisStringItems,@Spell
36syn region nsisString	start=/'/ end=/'/ contains=@nsisStringItems,@Spell
37syn region nsisString	start=/`/ end=/`/ contains=@nsisStringItems,@Spell
38
39syn cluster nsisStringItems	contains=nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar,nsisUserVar,nsisSysVar,nsisRegistry,nsisLineContinuation
40
41"NUMBERS (4.1)
42syn match nsisNumber		"\<[1-9]\d*\>"
43syn match nsisNumber		"\<0x\x\+\>"
44syn match nsisNumber		"\<0\o*\>"
45
46"STRING REPLACEMENT (5.4, 4.9.15.2, 5.3.1)
47syn region nsisPreprocSubst	start="\${" end="}" contains=nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar
48syn region nsisPreprocLangStr	start="\$(" end=")" contains=nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar
49syn region nsisPreprocEnvVar	start="\$%" end="%" contains=nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar
50
51"VARIABLES (4.2.2)
52syn match nsisUserVar		"$\d"
53syn match nsisUserVar		"$R\d"
54syn match nsisSysVar		"$INSTDIR"
55syn match nsisSysVar		"$OUTDIR"
56syn match nsisSysVar		"$CMDLINE"
57syn match nsisSysVar		"$LANGUAGE"
58"CONSTANTS (4.2.3)
59syn match nsisSysVar		"$PROGRAMFILES"
60syn match nsisSysVar		"$PROGRAMFILES32"
61syn match nsisSysVar		"$PROGRAMFILES64"
62syn match nsisSysVar		"$COMMONFILES"
63syn match nsisSysVar		"$COMMONFILES32"
64syn match nsisSysVar		"$COMMONFILES64"
65syn match nsisSysVar		"$DESKTOP"
66syn match nsisSysVar		"$EXEDIR"
67syn match nsisSysVar		"$EXEFILE"
68syn match nsisSysVar		"$EXEPATH"
69syn match nsisSysVar		"${NSISDIR}"
70syn match nsisSysVar		"$WINDIR"
71syn match nsisSysVar		"$SYSDIR"
72syn match nsisSysVar		"$TEMP"
73syn match nsisSysVar		"$STARTMENU"
74syn match nsisSysVar		"$SMPROGRAMS"
75syn match nsisSysVar		"$SMSTARTUP"
76syn match nsisSysVar		"$QUICKLAUNCH"
77syn match nsisSysVar		"$DOCUMENTS"
78syn match nsisSysVar		"$SENDTO"
79syn match nsisSysVar		"$RECENT"
80syn match nsisSysVar		"$FAVORITES"
81syn match nsisSysVar		"$MUSIC"
82syn match nsisSysVar		"$PICTURES"
83syn match nsisSysVar		"$VIDEOS"
84syn match nsisSysVar		"$NETHOOD"
85syn match nsisSysVar		"$FONTS"
86syn match nsisSysVar		"$TEMPLATES"
87syn match nsisSysVar		"$APPDATA"
88syn match nsisSysVar		"$LOCALAPPDATA"
89syn match nsisSysVar		"$PRINTHOOD"
90syn match nsisSysVar		"$INTERNET_CACHE"
91syn match nsisSysVar		"$COOKIES"
92syn match nsisSysVar		"$HISTORY"
93syn match nsisSysVar		"$PROFILE"
94syn match nsisSysVar		"$ADMINTOOLS"
95syn match nsisSysVar		"$RESOURCES"
96syn match nsisSysVar		"$RESOURCES_LOCALIZED"
97syn match nsisSysVar		"$CDBURN_AREA"
98syn match nsisSysVar		"$HWNDPARENT"
99syn match nsisSysVar		"$PLUGINSDIR"
100syn match nsisSysVar		"$\%(USERTEMPLATES\|USERSTARTMENU\|USERSMPROGRAMS\|USERDESKTOP\)"
101syn match nsisSysVar		"$\%(COMMONTEMPLATES\|COMMONSTARTMENU\|COMMONSMPROGRAMS\|COMMONDESKTOP\|COMMONPROGRAMDATA\)"
102syn match nsisSysVar		"$\\r"
103syn match nsisSysVar		"$\\n"
104syn match nsisSysVar		"$\\t"
105syn match nsisSysVar		"$\$"
106syn match nsisSysVar		"$\\["'`]"
107
108"LABELS (4.3)
109syn match nsisLocalLabel	contained "[^-+!$0-9;"'#. \t/*][^ \t:;#]*:\ze\%($\|[ \t;#]\|\/\*\)"
110syn match nsisGlobalLabel	contained "\.[^-+!$0-9;"'# \t/*][^ \t:;#]*:\ze\%($\|[ \t;#]\|\/\*\)"
111
112"CONSTANTS
113syn keyword nsisBoolean		contained true false
114syn keyword nsisOnOff		contained on off
115
116syn keyword nsisRegistry	contained HKCR HKLM HKCU HKU HKCC HKDD HKPD SHCTX
117syn keyword nsisRegistry	contained HKCR32 HKCR64 HKCU32 HKCU64 HKLM32 HKLM64
118syn keyword nsisRegistry	contained HKEY_CLASSES_ROOT HKEY_LOCAL_MACHINE HKEY_CURRENT_USER HKEY_USERS
119syn keyword nsisRegistry	contained HKEY_CLASSES_ROOT32 HKEY_CLASSES_ROOT64
120syn keyword nsisRegistry	contained HKEY_CURRENT_USER32 HKEY_CURRENT_USER64
121syn keyword nsisRegistry	contained HKEY_LOCAL_MACHINE32 HKEY_LOCAL_MACHINE64
122syn keyword nsisRegistry	contained HKEY_CURRENT_CONFIG HKEY_DYN_DATA HKEY_PERFORMANCE_DATA
123syn keyword nsisRegistry	contained SHELL_CONTEXT
124
125
126" common options
127syn cluster nsisAnyOpt		contains=nsisComment,nsisLineContinuation,nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar,nsisUserVar,nsisSysVar,nsisString,nsisNumber
128syn region nsisBooleanOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisBoolean
129syn region nsisOnOffOpt		contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisOnOff
130syn region nsisLangOpt		contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisLangKwd
131syn match nsisLangKwd		contained "/LANG\>"
132syn region nsisFontOpt		contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisFontKwd
133syn match nsisFontKwd		contained "/\%(ITALIC\|UNDERLINE\|STRIKE\)\>"
134
135"STATEMENTS - pages (4.5)
136syn keyword nsisStatement	contained Page UninstPage nextgroup=nsisPageOpt skipwhite
137syn region nsisPageOpt		contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPageKwd
138syn keyword nsisPageKwd		contained custom license components directory instfiles uninstConfirm
139syn match nsisPageKwd		contained "/ENABLECANCEL\>"
140
141syn keyword nsisStatement	contained PageEx nextgroup=nsisPageExOpt skipwhite
142syn region nsisPageExOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPageExKwd
143syn match nsisPageExKwd		contained "\<\%(un\.\)\?\%(custom\|license\|components\|directory\|instfiles\|uninstConfirm\)\>"
144
145syn keyword nsisStatement	contained PageExEnd PageCallbacks
146
147"STATEMENTS - sections (4.6.1)
148syn keyword nsisStatement	contained AddSize SectionEnd SectionGroupEnd
149
150syn keyword nsisStatement	contained Section nextgroup=nsisSectionOpt skipwhite
151syn region nsisSectionOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSectionKwd
152syn match nsisSectionKwd	contained "/o\>"
153
154syn keyword nsisStatement	contained SectionInstType SectionIn nextgroup=nsisSectionInOpt skipwhite
155syn region nsisSectionInOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSectionInKwd
156syn keyword nsisSectionInKwd	contained RO
157
158syn keyword nsisStatement	contained SectionGroup nextgroup=nsisSectionGroupOpt skipwhite
159syn region nsisSectionGroupOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSectionGroupKwd
160syn match nsisSectionGroupKwd	contained "/e\>"
161
162"STATEMENTS - functions (4.7.1)
163syn keyword nsisStatement	contained Function FunctionEnd
164
165
166"STATEMENTS - LogicLib.nsh
167syn match nsisStatement		"${If}"
168syn match nsisStatement		"${IfNot}"
169syn match nsisStatement		"${Unless}"
170syn match nsisStatement		"${ElseIf}"
171syn match nsisStatement		"${ElseIfNot}"
172syn match nsisStatement		"${ElseUnless}"
173syn match nsisStatement		"${Else}"
174syn match nsisStatement		"${EndIf}"
175syn match nsisStatement		"${EndUnless}"
176syn match nsisStatement		"${AndIf}"
177syn match nsisStatement		"${AndIfNot}"
178syn match nsisStatement		"${AndUnless}"
179syn match nsisStatement		"${OrIf}"
180syn match nsisStatement		"${OrIfNot}"
181syn match nsisStatement		"${OrUnless}"
182syn match nsisStatement		"${IfThen}"
183syn match nsisStatement		"${IfNotThen}"
184syn match nsisStatement		"${||\?}" nextgroup=@nsisPseudoStatement skipwhite
185syn match nsisStatement		"${IfCmd}" nextgroup=@nsisPseudoStatement skipwhite
186syn match nsisStatement		"${Select}"
187syn match nsisStatement		"${Case}"
188syn match nsisStatement		"${Case[2-5]}"
189syn match nsisStatement		"${CaseElse}"
190syn match nsisStatement		"${Default}"
191syn match nsisStatement		"${EndSelect}"
192syn match nsisStatement		"${Switch}"
193syn match nsisStatement		"${EndSwitch}"
194syn match nsisStatement		"${Break}"
195syn match nsisStatement		"${Do}"
196syn match nsisStatement		"${DoWhile}"
197syn match nsisStatement		"${DoUntil}"
198syn match nsisStatement		"${ExitDo}"
199syn match nsisStatement		"${Continue}"
200syn match nsisStatement		"${Loop}"
201syn match nsisStatement		"${LoopWhile}"
202syn match nsisStatement		"${LoopUntil}"
203syn match nsisStatement		"${For}"
204syn match nsisStatement		"${ForEach}"
205syn match nsisStatement		"${ExitFor}"
206syn match nsisStatement		"${Next}"
207"STATEMENTS - Memento.nsh
208syn match nsisStatement		"${MementoSection}"
209syn match nsisStatement		"${MementoSectionEnd}"
210
211
212"USER VARIABLES (4.2.1)
213syn keyword nsisInstruction	contained Var nextgroup=nsisVarOpt skipwhite
214syn region nsisVarOpt		contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisVarKwd
215syn match nsisVarKwd		contained "/GLOBAL\>"
216
217"INSTALLER ATTRIBUTES (4.8.1)
218syn keyword nsisAttribute	contained Caption ChangeUI CheckBitmap CompletedText ComponentText
219syn keyword nsisAttribute	contained DetailsButtonText DirText DirVar
220syn keyword nsisAttribute	contained FileErrorText Icon InstallButtonText
221syn keyword nsisAttribute	contained InstallDir InstProgressFlags
222syn keyword nsisAttribute	contained LicenseData LicenseText
223syn keyword nsisAttribute	contained MiscButtonText Name OutFile
224syn keyword nsisAttribute	contained SpaceTexts SubCaption UninstallButtonText UninstallCaption
225syn keyword nsisAttribute	contained UninstallIcon UninstallSubCaption UninstallText
226
227syn keyword nsisAttribute	contained AddBrandingImage nextgroup=nsisAddBrandingImageOpt skipwhite
228syn region nsisAddBrandingImageOpt  contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisAddBrandingImageKwd
229syn keyword nsisAddBrandingImageKwd contained left right top bottom width height
230
231syn keyword nsisAttribute	contained nextgroup=nsisBooleanOpt skipwhite
232			\ AllowRootDirInstall AutoCloseWindow
233
234syn keyword nsisAttribute	contained BGFont nextgroup=nsisFontOpt skipwhite
235
236syn keyword nsisAttribute	contained BGGradient nextgroup=nsisBGGradientOpt skipwhite
237syn region nsisBGGradientOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisBGGradientKwd
238syn keyword nsisBGGradientKwd	contained off
239
240syn keyword nsisAttribute	contained BrandingText nextgroup=nsisBrandingTextOpt skipwhite
241syn region nsisBrandingTextOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisBrandingTextKwd
242syn match nsisBrandingTextKwd	contained "/TRIM\%(LEFT\|RIGHT\|CENTER\)\>"
243
244syn keyword nsisAttribute	contained CRCCheck nextgroup=nsisCRCCheckOpt skipwhite
245syn region nsisCRCCheckOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisCRCCheckKwd
246syn keyword nsisCRCCheckKwd	contained on off force
247
248syn keyword nsisAttribute	contained DirVerify nextgroup=nsisDirVerifyOpt skipwhite
249syn region nsisDirVerifyOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDirVerifyKwd
250syn keyword nsisDirVerifyKwd	contained auto leave
251
252syn keyword nsisAttribute	contained InstallColors nextgroup=nsisInstallColorsOpt skipwhite
253syn region nsisInstallColorsOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisInstallColorsKwd
254syn match nsisInstallColorsKwd	contained "/windows\>"
255
256syn keyword nsisAttribute	contained InstallDirRegKey nextgroup=nsisRegistryOpt skipwhite
257
258syn keyword nsisAttribute	contained InstType nextgroup=nsisInstTypeOpt skipwhite
259syn region nsisInstTypeOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisInstTypeKwd
260syn match nsisInstTypeKwd	contained "/\%(NOCUSTOM\|CUSTOMSTRING\|COMPONENTSONLYONCUSTOM\)\>"
261
262syn keyword nsisAttribute	contained LicenseBkColor nextgroup=nsisLicenseBkColorOpt skipwhite
263syn region nsisLicenseBkColorOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisLicenseBkColorKwd
264syn match nsisLicenseBkColorKwd  contained "/\%(gray\|windows\)\>"
265
266syn keyword nsisAttribute	contained LicenseForceSelection nextgroup=nsisLicenseForceSelectionOpt skipwhite
267syn region nsisLicenseForceSelectionOpt  contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisLicenseForceSelectionKwd
268syn keyword nsisLicenseForceSelectionKwd contained checkbox radiobuttons off
269
270syn keyword nsisAttribute	contained ManifestDPIAware nextgroup=nsisManifestDPIAwareOpt skipwhite
271syn region nsisManifestDPIAwareOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisManifestDPIAwareKwd
272syn keyword nsisManifestDPIAwareKwd	contained notset true false
273
274syn keyword nsisAttribute	contained ManifestLongPathAware nextgroup=nsisManifestLongPathAwareOpt skipwhite
275syn region nsisManifestLongPathAwareOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisManifestLongPathAwareKwd
276syn match nsisManifestLongPathAwareKwd	contained "\<\%(notset\|true\|false\)\>"
277
278syn keyword nsisAttribute	contained ManifestSupportedOS nextgroup=nsisManifestSupportedOSOpt skipwhite
279syn region nsisManifestSupportedOSOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisManifestSupportedOSKwd
280syn match nsisManifestSupportedOSKwd	contained "\<\%(none\|all\|WinVista\|Win7\|Win8\|Win8\.1\|Win10\)\>"
281
282syn keyword nsisAttribute	contained PEAddResource nextgroup=nsisPEAddResourceOpt skipwhite
283syn region nsisPEAddResourceOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPEAddResourceKwd
284syn match nsisPEAddResourceKwd	contained "/\%(OVERWRITE\|REPLACE\)\>"
285
286syn keyword nsisAttribute	contained PERemoveResource nextgroup=nsisPERemoveResourceOpt skipwhite
287syn region nsisPERemoveResourceOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPERemoveResourceKwd
288syn match nsisPERemoveResourceKwd	contained "/NOERRORS\>"
289
290syn keyword nsisAttribute	contained RequestExecutionLevel nextgroup=nsisRequestExecutionLevelOpt skipwhite
291syn region nsisRequestExecutionLevelOpt  contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisRequestExecutionLevelKwd
292syn keyword nsisRequestExecutionLevelKwd contained none user highest admin
293
294syn keyword nsisAttribute	contained SetFont nextgroup=nsisLangOpt skipwhite
295
296syn keyword nsisAttribute	contained nextgroup=nsisShowInstDetailsOpt skipwhite
297			\ ShowInstDetails ShowUninstDetails
298syn region nsisShowInstDetailsOpt  contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisShowInstDetailsKwd
299syn keyword nsisShowInstDetailsKwd contained hide show nevershow
300
301syn keyword nsisAttribute	contained SilentInstall nextgroup=nsisSilentInstallOpt skipwhite
302syn region nsisSilentInstallOpt	 contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSilentInstallKwd
303syn keyword nsisSilentInstallKwd contained normal silent silentlog
304
305syn keyword nsisAttribute	contained SilentUnInstall nextgroup=nsisSilentUnInstallOpt skipwhite
306syn region nsisSilentUnInstallOpt  contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSilentUnInstallKwd
307syn keyword nsisSilentUnInstallKwd contained normal silent
308
309syn keyword nsisAttribute	contained nextgroup=nsisOnOffOpt skipwhite
310			\ WindowIcon XPStyle
311
312"COMPILER FLAGS (4.8.2)
313syn keyword nsisCompiler	contained nextgroup=nsisOnOffOpt skipwhite
314			\ AllowSkipFiles SetDatablockOptimize SetDateSave
315
316syn keyword nsisCompiler	contained FileBufSize SetCompressorDictSize
317
318syn keyword nsisCompiler	contained SetCompress nextgroup=nsisSetCompressOpt skipwhite
319syn region nsisSetCompressOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetCompressKwd
320syn keyword nsisSetCompressKwd  contained auto force off
321
322syn keyword nsisCompiler	contained SetCompressor nextgroup=nsisSetCompressorOpt skipwhite
323syn region nsisSetCompressorOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetCompressorKwd
324syn keyword nsisSetCompressorKwd  contained zlib bzip2 lzma
325syn match nsisSetCompressorKwd	contained "/\%(SOLID\|FINAL\)"
326
327syn keyword nsisCompiler	contained SetOverwrite nextgroup=nsisSetOverwriteOpt skipwhite
328syn region nsisSetOverwriteOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetOverwriteKwd
329syn keyword nsisSetOverwriteKwd	contained on off try ifnewer ifdiff lastused
330
331syn keyword nsisCompiler	contained Unicode nextgroup=nsisBooleanOpt skipwhite
332
333"VERSION INFORMATION (4.8.3)
334syn keyword nsisVersionInfo	contained VIAddVersionKey nextgroup=nsisLangOpt skipwhite
335
336syn keyword nsisVersionInfo	contained VIProductVersion VIFileVersion
337
338
339"FUNCTIONS - basic (4.9.1)
340syn keyword nsisInstruction	contained Delete Rename nextgroup=nsisDeleteOpt skipwhite
341syn region nsisDeleteOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDeleteKwd
342syn match nsisDeleteKwd		contained "/REBOOTOK\>"
343
344syn keyword nsisInstruction	contained Exec ExecWait SetOutPath
345
346syn keyword nsisInstruction	contained ExecShell ExecShellWait nextgroup=nsisExecShellOpt skipwhite
347syn region nsisExecShellOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisExecShellKwd
348syn keyword nsisExecShellKwd	contained SW_SHOWDEFAULT SW_SHOWNORMAL SW_SHOWMAXIMIZED SW_SHOWMINIMIZED SW_HIDE
349syn match nsisExecShellKwd	contained "/INVOKEIDLIST\>"
350
351syn keyword nsisInstruction	contained File nextgroup=nsisFileOpt skipwhite
352syn region nsisFileOpt		contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisFileKwd
353syn match nsisFileKwd		contained "/\%(nonfatal\|[arx]\|oname\)\>"
354
355syn keyword nsisInstruction	contained ReserveFile nextgroup=nsisReserveFileOpt skipwhite
356syn region nsisReserveFileOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisReserveFileKwd
357syn match nsisReserveFileKwd	contained "/\%(nonfatal\|[rx]\|plugin\)\>"
358
359syn keyword nsisInstruction	contained RMDir nextgroup=nsisRMDirOpt skipwhite
360syn region nsisRMDirOpt		contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisRMDirKwd
361syn match nsisRMDirKwd		contained "/\%(REBOOTOK\|r\)\>"
362
363
364"FUNCTIONS - registry & ini (4.9.2)
365syn keyword nsisInstruction	contained DeleteINISec DeleteINIStr FlushINI ReadINIStr WriteINIStr
366syn keyword nsisInstruction	contained ExpandEnvStrings ReadEnvStr
367
368syn keyword nsisInstruction	contained DeleteRegKey nextgroup=nsisDeleteRegKeyOpt skipwhite
369syn region nsisDeleteRegKeyOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDeleteRegKeyKwd,nsisRegistry
370syn match nsisDeleteRegKeyKwd	contained "/\%(ifempty\|ifnosubkeys\|ifnovalues\)\>"
371
372syn keyword nsisInstruction	contained nextgroup=nsisRegistryOpt skipwhite
373			\ DeleteRegValue EnumRegKey EnumRegValue ReadRegDWORD ReadRegStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegStr
374syn region nsisRegistryOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisRegistry
375
376syn keyword nsisInstruction	contained WriteRegMultiStr nextgroup=nsisWriteRegMultiStrOpt skipwhite
377syn region nsisWriteRegMultiStrOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisRegistry,nsisWriteRegMultiStrKwd
378syn match nsisWriteRegMultiStrKwd  contained "/REGEDIT5\>"
379
380syn keyword nsisInstruction	contained SetRegView nextgroup=nsisSetRegViewOpt skipwhite
381syn region nsisSetRegViewOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetRegViewKwd
382syn keyword nsisSetRegViewKwd	contained default lastused
383
384"FUNCTIONS - general purpose (4.9.3)
385syn keyword nsisInstruction	contained CallInstDLL CreateDirectory GetWinVer
386syn keyword nsisInstruction	contained GetFileTime GetFileTimeLocal GetKnownFolderPath
387syn keyword nsisInstruction	contained GetTempFileName SearchPath RegDLL UnRegDLL
388
389syn keyword nsisInstruction	contained CopyFiles nextgroup=nsisCopyFilesOpt skipwhite
390syn region nsisCopyFilesOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisCopyFilesKwd
391syn match nsisCopyFilesKwd	contained "/\%(SILENT\|FILESONLY\)\>"
392
393syn keyword nsisInstruction	contained CreateShortcut nextgroup=nsisCreateShortcutOpt skipwhite
394syn region nsisCreateShortcutOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisCreateShortcutKwd
395syn match nsisCreateShortcutKwd	 contained "/NoWorkingDir\>"
396
397syn keyword nsisInstruction	contained GetDLLVersion GetDLLVersionLocal nextgroup=nsisGetDLLVersionOpt skipwhite
398syn region nsisGetDLLVersionOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisGetDLLVersionKwd
399syn match nsisGetDLLVersionKwd	 contained "/ProductVersion\>"
400
401syn keyword nsisInstruction	contained GetFullPathName nextgroup=nsisGetFullPathNameOpt skipwhite
402syn region nsisGetFullPathNameOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisGetFullPathNameKwd
403syn match nsisGetFullPathNameKwd  contained "/SHORT\>"
404
405syn keyword nsisInstruction	contained SetFileAttributes nextgroup=nsisSetFileAttributesOpt skipwhite
406syn region nsisSetFileAttributesOpt  contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisFileAttrib
407syn keyword nsisFileAttrib	contained NORMAL ARCHIVE HIDDEN OFFLINE READONLY SYSTEM TEMPORARY
408syn keyword nsisFileAttrib	contained FILE_ATTRIBUTE_NORMAL FILE_ATTRIBUTE_ARCHIVE FILE_ATTRIBUTE_HIDDEN
409syn keyword nsisFileAttrib	contained FILE_ATTRIBUTE_OFFLINE FILE_ATTRIBUTE_READONLY FILE_ATTRIBUTE_SYSTEM
410syn keyword nsisFileAttrib	contained FILE_ATTRIBUTE_TEMPORARY
411
412"FUNCTIONS - Flow Control (4.9.4)
413syn keyword nsisInstruction	contained Abort Call ClearErrors GetCurrentAddress
414syn keyword nsisInstruction	contained GetFunctionAddress GetLabelAddress Goto
415syn keyword nsisInstruction	contained IfAbort IfErrors IfFileExists IfRebootFlag IfSilent
416syn keyword nsisInstruction	contained IfShellVarContextAll IfRtlLanguage
417syn keyword nsisInstruction	contained IntCmp IntCmpU Int64Cmp Int64CmpU IntPtrCmp IntPtrCmpU
418syn keyword nsisInstruction	contained Return Quit SetErrors StrCmp StrCmpS
419
420syn keyword nsisInstruction	contained MessageBox nextgroup=nsisMessageBoxOpt skipwhite
421syn region nsisMessageBoxOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisMessageBox
422syn keyword nsisMessageBox	contained MB_OK MB_OKCANCEL MB_ABORTRETRYIGNORE MB_RETRYCANCEL MB_YESNO MB_YESNOCANCEL
423syn keyword nsisMessageBox	contained MB_ICONEXCLAMATION MB_ICONINFORMATION MB_ICONQUESTION MB_ICONSTOP MB_USERICON
424syn keyword nsisMessageBox	contained MB_TOPMOST MB_SETFOREGROUND MB_RIGHT MB_RTLREADING
425syn keyword nsisMessageBox	contained MB_DEFBUTTON1 MB_DEFBUTTON2 MB_DEFBUTTON3 MB_DEFBUTTON4
426syn keyword nsisMessageBox	contained IDABORT IDCANCEL IDIGNORE IDNO IDOK IDRETRY IDYES
427syn match nsisMessageBox	contained "/SD\>"
428
429"FUNCTIONS - File and directory i/o instructions (4.9.5)
430syn keyword nsisInstruction	contained FileClose FileOpen FileRead FileReadUTF16LE
431syn keyword nsisInstruction	contained FileReadByte FileReadWord FileSeek FileWrite
432syn keyword nsisInstruction	contained FileWriteByte FileWriteWord
433syn keyword nsisInstruction	contained FindClose FindFirst FindNext
434
435syn keyword nsisInstruction	contained FileWriteUTF16LE nextgroup=nsisFileWriteUTF16LEOpt skipwhite
436syn region nsisFileWriteUTF16LEOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisFileWriteUTF16LEKwd
437syn match nsisFileWriteUTF16LEKwd  contained "/BOM\>"
438
439"FUNCTIONS - Uninstaller instructions (4.9.6)
440syn keyword nsisInstruction	contained WriteUninstaller
441
442"FUNCTIONS - Misc instructions (4.9.7)
443syn keyword nsisInstruction	contained GetErrorLevel GetInstDirError InitPluginsDir Nop
444syn keyword nsisInstruction	contained SetErrorLevel Sleep
445
446syn keyword nsisInstruction	contained SetShellVarContext nextgroup=nsisSetShellVarContextOpt skipwhite
447syn region nsisSetShellVarContextOpt  contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetShellVarContextKwd
448syn keyword nsisSetShellVarContextKwd contained current all
449
450"FUNCTIONS - String manipulation support (4.9.8)
451syn keyword nsisInstruction	contained StrCpy StrLen
452
453"FUNCTIONS - Stack support (4.9.9)
454syn keyword nsisInstruction	contained Exch Push Pop
455
456"FUNCTIONS - Integer manipulation support (4.9.10)
457syn keyword nsisInstruction	contained IntFmt Int64Fmt IntOp IntPtrOp
458
459"FUNCTIONS - Rebooting support (4.9.11)
460syn keyword nsisInstruction	contained Reboot SetRebootFlag
461
462"FUNCTIONS - Install logging instructions (4.9.12)
463syn keyword nsisInstruction	contained LogSet nextgroup=nsisOnOffOpt skipwhite
464syn keyword nsisInstruction	contained LogText
465
466"FUNCTIONS - Section management instructions (4.9.13)
467syn keyword nsisInstruction	contained SectionSetFlags SectionGetFlags SectionSetText
468syn keyword nsisInstruction	contained SectionGetText SectionSetInstTypes SectionGetInstTypes
469syn keyword nsisInstruction	contained SectionSetSize SectionGetSize SetCurInstType GetCurInstType
470syn keyword nsisInstruction	contained InstTypeSetText InstTypeGetText
471
472"FUNCTIONS - User Interface Instructions (4.9.14)
473syn keyword nsisInstruction	contained BringToFront DetailPrint EnableWindow
474syn keyword nsisInstruction	contained FindWindow GetDlgItem HideWindow IsWindow
475syn keyword nsisInstruction	contained ShowWindow
476
477syn keyword nsisInstruction	contained CreateFont nextgroup=nsisFontOpt skipwhite
478
479syn keyword nsisInstruction	contained nextgroup=nsisBooleanOpt skipwhite
480			\ LockWindow SetAutoClose
481
482syn keyword nsisInstruction	contained LoadAndSetImage nextgroup=nsisLoadAndSetImageOpt skipwhite
483syn region nsisLoadAndSetImageOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisLoadAndSetImageKwd
484syn match nsisLoadAndSetImageKwd  contained "/\%(EXERESOURCE\|STRINGID\|RESIZETOFIT\%(WIDTH\|HEIGHT\)\)\>"
485
486syn keyword nsisInstruction	contained SendMessage nextgroup=nsisSendMessageOpt skipwhite
487syn region nsisSendMessageOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSendMessageKwd
488syn match nsisSendMessageKwd	contained "/TIMEOUT\>"
489
490syn keyword nsisInstruction	contained SetBrandingImage nextgroup=nsisSetBrandingImageOpt skipwhite
491syn region nsisSetBrandingImageOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetBrandingImageKwd
492syn match nsisSetBrandingImageKwd  contained "/\%(IMGID\|RESIZETOFIT\)\>"
493
494syn keyword nsisInstruction	contained SetDetailsView nextgroup=nsisSetDetailsViewOpt skipwhite
495syn region nsisSetDetailsViewOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetDetailsViewKwd
496syn keyword nsisSetDetailsViewKwd	contained show hide
497
498syn keyword nsisInstruction	contained SetDetailsPrint nextgroup=nsisSetDetailsPrintOpt skipwhite
499syn region nsisSetDetailsPrintOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetDetailsPrintKwd
500syn keyword nsisSetDetailsPrintKwd	contained none listonly textonly both lastused
501
502syn keyword nsisInstruction	contained SetCtlColors nextgroup=nsisSetCtlColorsOpt skipwhite
503syn region nsisSetCtlColorsOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetCtlColorsKwd
504syn match nsisSetCtlColorsKwd	contained "/BRANDING\>"
505
506syn keyword nsisInstruction	contained SetSilent nextgroup=nsisSetSilentOpt skipwhite
507syn region nsisSetSilentOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetSilentKwd
508syn keyword nsisSetSilentKwd	contained silent normal
509
510
511"FUNCTIONS - Multiple Languages Instructions (4.9.15)
512syn keyword nsisInstruction	contained LoadLanguageFile LangString LicenseLangString
513
514
515"SPECIAL FUNCTIONS - install (4.7.2.1)
516syn match nsisCallback		"\.onGUIInit"
517syn match nsisCallback		"\.onInit"
518syn match nsisCallback		"\.onInstFailed"
519syn match nsisCallback		"\.onInstSuccess"
520syn match nsisCallback		"\.onGUIEnd"
521syn match nsisCallback		"\.onMouseOverSection"
522syn match nsisCallback		"\.onRebootFailed"
523syn match nsisCallback		"\.onSelChange"
524syn match nsisCallback		"\.onUserAbort"
525syn match nsisCallback		"\.onVerifyInstDir"
526
527"SPECIAL FUNCTIONS - uninstall (4.7.2.2)
528syn match nsisCallback		"un\.onGUIInit"
529syn match nsisCallback		"un\.onInit"
530syn match nsisCallback		"un\.onUninstFailed"
531syn match nsisCallback		"un\.onUninstSuccess"
532syn match nsisCallback		"un\.onGUIEnd"
533syn match nsisCallback		"un\.onRebootFailed"
534syn match nsisCallback		"un\.onSelChange"
535syn match nsisCallback		"un\.onUserAbort"
536
537
538"COMPILER UTILITY (5.1)
539syn match nsisInclude		contained "!include\>" nextgroup=nsisIncludeOpt skipwhite
540syn region nsisIncludeOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisIncludeKwd
541syn match nsisIncludeKwd	contained "/\%(NONFATAL\|CHARSET\)\>"
542
543syn match nsisSystem		contained "!addincludedir\>"
544
545syn match nsisSystem		contained "!addplugindir\>" nextgroup=nsisAddplugindirOpt skipwhite
546syn region nsisAddplugindirOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisAddplugindirKwd
547syn match nsisAddplugindirKwd	contained "/\%(x86-ansi\|x86-unicode\)\>"
548
549syn match nsisSystem		contained "!appendfile\>" nextgroup=nsisAppendfileOpt skipwhite
550syn region nsisAppendfileOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisAppendfileKwd
551syn match nsisAppendfileKwd	contained "/\%(CHARSET\|RawNL\)\>"
552
553syn match nsisSystem		contained "!cd\>"
554
555syn match nsisSystem		contained "!delfile\>" nextgroup=nsisDelfileOpt skipwhite
556syn region nsisDelfileOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDelfileKwd
557syn match nsisDelfileKwd	contained "/nonfatal\>"
558
559syn match nsisSystem		contained "!echo\>"
560syn match nsisSystem		contained "!error\>"
561syn match nsisSystem		contained "!execute\>"
562syn match nsisSystem		contained "!makensis\>"
563syn match nsisSystem		contained "!packhdr\>"
564syn match nsisSystem		contained "!finalize\>"
565syn match nsisSystem		contained "!system\>"
566syn match nsisSystem		contained "!tempfile\>"
567syn match nsisSystem		contained "!getdllversion\>"
568syn match nsisSystem		contained "!gettlbversion\>"
569syn match nsisSystem		contained "!warning\>"
570
571syn match nsisSystem		contained "!pragma\>" nextgroup=nsisPragmaOpt skipwhite
572syn region nsisPragmaOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPragmaKwd
573syn keyword nsisPragmaKwd	contained enable disable default push pop
574
575syn match nsisSystem		contained "!verbose\>" nextgroup=nsisVerboseOpt skipwhite
576syn region nsisVerboseOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisVerboseKwd
577syn keyword nsisVerboseKwd	contained push pop
578
579"PREPROCESSOR (5.4)
580syn match nsisDefine		contained "!define\>" nextgroup=nsisDefineOpt skipwhite
581syn region nsisDefineOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDefineKwd
582syn match nsisDefineKwd		contained "/\%(ifndef\|redef\|date\|utcdate\|file\|intfmt\|math\)\>"
583
584syn match nsisDefine		contained "!undef\>"
585syn match nsisPreCondit		contained "!ifdef\>"
586syn match nsisPreCondit		contained "!ifndef\>"
587
588syn match nsisPreCondit		contained "!if\>" nextgroup=nsisIfOpt skipwhite
589syn region nsisIfOpt		contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisIfKwd
590syn match nsisIfKwd		contained "/FileExists\>"
591
592syn match nsisPreCondit		contained "!ifmacrodef\>"
593syn match nsisPreCondit		contained "!ifmacrondef\>"
594syn match nsisPreCondit		contained "!else\>"
595syn match nsisPreCondit		contained "!endif\>"
596syn match nsisMacro		contained "!insertmacro\>"
597syn match nsisMacro		contained "!macro\>"
598syn match nsisMacro		contained "!macroend\>"
599syn match nsisMacro		contained "!macroundef\>"
600
601syn match nsisMacro		contained "!searchparse\>" nextgroup=nsisSearchparseOpt skipwhite
602syn region nsisSearchparseOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSearchparseKwd
603syn match nsisSearchparseKwd	contained "/\%(ignorecase\|noerrors\|file\)\>"
604
605syn match nsisMacro		contained "!searchreplace\>" nextgroup=nsisSearchreplaceOpt skipwhite
606syn region nsisSearchreplaceOpt	contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSearchreplaceKwd
607syn match nsisSearchreplaceKwd	contained "/ignorecase\>"
608
609
610
611" Define the default highlighting.
612" Only when an item doesn't have highlighting yet
613
614hi def link nsisInstruction		Function
615hi def link nsisComment			Comment
616hi def link nsisFirstComment		Comment
617hi def link nsisLocalLabel		Label
618hi def link nsisGlobalLabel		Label
619hi def link nsisStatement		Statement
620hi def link nsisString			String
621hi def link nsisBoolean			Boolean
622hi def link nsisOnOff			Boolean
623hi def link nsisFontKwd			Constant
624hi def link nsisLangKwd			Constant
625hi def link nsisPageKwd			Constant
626hi def link nsisPageExKwd		Constant
627hi def link nsisSectionKwd		Constant
628hi def link nsisSectionInKwd		Constant
629hi def link nsisSectionGroupKwd		Constant
630hi def link nsisVarKwd			Constant
631hi def link nsisAddBrandingImageKwd	Constant
632hi def link nsisBGGradientKwd		Constant
633hi def link nsisBrandingTextKwd		Constant
634hi def link nsisCRCCheckKwd		Constant
635hi def link nsisDirVerifyKwd		Constant
636hi def link nsisInstallColorsKwd	Constant
637hi def link nsisInstTypeKwd		Constant
638hi def link nsisLicenseBkColorKwd	Constant
639hi def link nsisLicenseForceSelectionKwd Constant
640hi def link nsisManifestDPIAwareKwd	Constant
641hi def link nsisManifestLongPathAwareKwd Constant
642hi def link nsisManifestSupportedOSKwd	Constant
643hi def link nsisPEAddResourceKwd	Constant
644hi def link nsisPERemoveResourceKwd	Constant
645hi def link nsisRequestExecutionLevelKwd Constant
646hi def link nsisShowInstDetailsKwd	Constant
647hi def link nsisSilentInstallKwd	Constant
648hi def link nsisSilentUnInstallKwd	Constant
649hi def link nsisSetCompressKwd		Constant
650hi def link nsisSetCompressorKwd	Constant
651hi def link nsisSetOverwriteKwd		Constant
652hi def link nsisDeleteKwd		Constant
653hi def link nsisExecShellKwd		Constant
654hi def link nsisFileKwd			Constant
655hi def link nsisReserveFileKwd		Constant
656hi def link nsisRMDirKwd		Constant
657hi def link nsisDeleteRegKeyKwd		Constant
658hi def link nsisWriteRegMultiStrKwd	Constant
659hi def link nsisSetRegViewKwd		Constant
660hi def link nsisCopyFilesKwd		Constant
661hi def link nsisCreateShortcutKwd	Constant
662hi def link nsisGetDLLVersionKwd	Constant
663hi def link nsisGetFullPathNameKwd	Constant
664hi def link nsisFileAttrib		Constant
665hi def link nsisMessageBox		Constant
666hi def link nsisFileWriteUTF16LEKwd	Constant
667hi def link nsisSetShellVarContextKwd	Constant
668hi def link nsisLoadAndSetImageKwd	Constant
669hi def link nsisSendMessageKwd		Constant
670hi def link nsisSetBrandingImageKwd	Constant
671hi def link nsisSetDetailsViewKwd	Constant
672hi def link nsisSetDetailsPrintKwd	Constant
673hi def link nsisSetCtlColorsKwd		Constant
674hi def link nsisSetSilentKwd		Constant
675hi def link nsisRegistry		Identifier
676hi def link nsisNumber			Number
677hi def link nsisError			Error
678hi def link nsisUserVar			Identifier
679hi def link nsisSysVar			Identifier
680hi def link nsisAttribute		Type
681hi def link nsisCompiler		Type
682hi def link nsisVersionInfo		Type
683hi def link nsisTodo			Todo
684hi def link nsisCallback		Identifier
685" preprocessor commands
686hi def link nsisPreprocSubst		PreProc
687hi def link nsisPreprocLangStr		PreProc
688hi def link nsisPreprocEnvVar		PreProc
689hi def link nsisDefine			Define
690hi def link nsisMacro			Macro
691hi def link nsisPreCondit		PreCondit
692hi def link nsisInclude			Include
693hi def link nsisSystem			PreProc
694hi def link nsisLineContinuation	Special
695hi def link nsisIncludeKwd		Constant
696hi def link nsisAddplugindirKwd		Constant
697hi def link nsisAppendfileKwd		Constant
698hi def link nsisDelfileKwd		Constant
699hi def link nsisPragmaKwd		Constant
700hi def link nsisVerboseKwd		Constant
701hi def link nsisDefineKwd		Constant
702hi def link nsisIfKwd			Constant
703hi def link nsisSearchparseKwd		Constant
704hi def link nsisSearchreplaceKwd	Constant
705
706
707let b:current_syntax = "nsis"
708
709let &cpo = s:cpo_save
710unlet s:cpo_save
711