nsis function
Highlight.js language definition for nsis.
Implementation
Mode nsis(Highlight hljs) {
final Mode mode0 = Mode();
final Mode mode1 = Mode();
final Mode mode2 = Mode();
mode0.scope = r'variable';
mode0.begin = r'\$+\{[\!\w.:-]+\}';
mode1.scope = r'variable';
mode1.begin = r'\$+\w[\w\.]*';
mode1.illegal = r'\(\)\{\}';
mode2.scope = r'variable';
mode2.begin = r'\$+\([\w^.:!-]+\)';
return Mode(
name: r'NSIS',
caseInsensitive: true,
keywords: {
r'keyword': [
r'Abort',
r'AddBrandingImage',
r'AddSize',
r'AllowRootDirInstall',
r'AllowSkipFiles',
r'AutoCloseWindow',
r'BGFont',
r'BGGradient',
r'BrandingText',
r'BringToFront',
r'Call',
r'CallInstDLL',
r'Caption',
r'ChangeUI',
r'CheckBitmap',
r'ClearErrors',
r'CompletedText',
r'ComponentText',
r'CopyFiles',
r'CRCCheck',
r'CreateDirectory',
r'CreateFont',
r'CreateShortCut',
r'Delete',
r'DeleteINISec',
r'DeleteINIStr',
r'DeleteRegKey',
r'DeleteRegValue',
r'DetailPrint',
r'DetailsButtonText',
r'DirText',
r'DirVar',
r'DirVerify',
r'EnableWindow',
r'EnumRegKey',
r'EnumRegValue',
r'Exch',
r'Exec',
r'ExecShell',
r'ExecShellWait',
r'ExecWait',
r'ExpandEnvStrings',
r'File',
r'FileBufSize',
r'FileClose',
r'FileErrorText',
r'FileOpen',
r'FileRead',
r'FileReadByte',
r'FileReadUTF16LE',
r'FileReadWord',
r'FileWriteUTF16LE',
r'FileSeek',
r'FileWrite',
r'FileWriteByte',
r'FileWriteWord',
r'FindClose',
r'FindFirst',
r'FindNext',
r'FindWindow',
r'FlushINI',
r'GetCurInstType',
r'GetCurrentAddress',
r'GetDlgItem',
r'GetDLLVersion',
r'GetDLLVersionLocal',
r'GetErrorLevel',
r'GetFileTime',
r'GetFileTimeLocal',
r'GetFullPathName',
r'GetFunctionAddress',
r'GetInstDirError',
r'GetKnownFolderPath',
r'GetLabelAddress',
r'GetTempFileName',
r'GetWinVer',
r'Goto',
r'HideWindow',
r'Icon',
r'IfAbort',
r'IfErrors',
r'IfFileExists',
r'IfRebootFlag',
r'IfRtlLanguage',
r'IfShellVarContextAll',
r'IfSilent',
r'InitPluginsDir',
r'InstallButtonText',
r'InstallColors',
r'InstallDir',
r'InstallDirRegKey',
r'InstProgressFlags',
r'InstType',
r'InstTypeGetText',
r'InstTypeSetText',
r'Int64Cmp',
r'Int64CmpU',
r'Int64Fmt',
r'IntCmp',
r'IntCmpU',
r'IntFmt',
r'IntOp',
r'IntPtrCmp',
r'IntPtrCmpU',
r'IntPtrOp',
r'IsWindow',
r'LangString',
r'LicenseBkColor',
r'LicenseData',
r'LicenseForceSelection',
r'LicenseLangString',
r'LicenseText',
r'LoadAndSetImage',
r'LoadLanguageFile',
r'LockWindow',
r'LogSet',
r'LogText',
r'ManifestDPIAware',
r'ManifestLongPathAware',
r'ManifestMaxVersionTested',
r'ManifestSupportedOS',
r'MessageBox',
r'MiscButtonText',
r'Name|0',
r'Nop',
r'OutFile',
r'Page',
r'PageCallbacks',
r'PEAddResource',
r'PEDllCharacteristics',
r'PERemoveResource',
r'PESubsysVer',
r'Pop',
r'Push',
r'Quit',
r'ReadEnvStr',
r'ReadINIStr',
r'ReadRegDWORD',
r'ReadRegStr',
r'Reboot',
r'RegDLL',
r'Rename',
r'RequestExecutionLevel',
r'ReserveFile',
r'Return',
r'RMDir',
r'SearchPath',
r'SectionGetFlags',
r'SectionGetInstTypes',
r'SectionGetSize',
r'SectionGetText',
r'SectionIn',
r'SectionSetFlags',
r'SectionSetInstTypes',
r'SectionSetSize',
r'SectionSetText',
r'SendMessage',
r'SetAutoClose',
r'SetBrandingImage',
r'SetCompress',
r'SetCompressor',
r'SetCompressorDictSize',
r'SetCtlColors',
r'SetCurInstType',
r'SetDatablockOptimize',
r'SetDateSave',
r'SetDetailsPrint',
r'SetDetailsView',
r'SetErrorLevel',
r'SetErrors',
r'SetFileAttributes',
r'SetFont',
r'SetOutPath',
r'SetOverwrite',
r'SetRebootFlag',
r'SetRegView',
r'SetShellVarContext',
r'SetSilent',
r'ShowInstDetails',
r'ShowUninstDetails',
r'ShowWindow',
r'SilentInstall',
r'SilentUnInstall',
r'Sleep',
r'SpaceTexts',
r'StrCmp',
r'StrCmpS',
r'StrCpy',
r'StrLen',
r'SubCaption',
r'Unicode',
r'UninstallButtonText',
r'UninstallCaption',
r'UninstallIcon',
r'UninstallSubCaption',
r'UninstallText',
r'UninstPage',
r'UnRegDLL',
r'Var',
r'VIAddVersionKey',
r'VIFileVersion',
r'VIProductVersion',
r'WindowIcon',
r'WriteINIStr',
r'WriteRegBin',
r'WriteRegDWORD',
r'WriteRegExpandStr',
r'WriteRegMultiStr',
r'WriteRegNone',
r'WriteRegStr',
r'WriteUninstaller',
r'XPStyle',
],
r'literal': [
r'admin',
r'all',
r'auto',
r'both',
r'bottom',
r'bzip2',
r'colored',
r'components',
r'current',
r'custom',
r'directory',
r'false',
r'force',
r'hide',
r'highest',
r'ifdiff',
r'ifnewer',
r'instfiles',
r'lastused',
r'leave',
r'left',
r'license',
r'listonly',
r'lzma',
r'nevershow',
r'none',
r'normal',
r'notset',
r'off',
r'on',
r'open',
r'print',
r'right',
r'show',
r'silent',
r'silentlog',
r'smooth',
r'textonly',
r'top',
r'true',
r'try',
r'un.components',
r'un.custom',
r'un.directory',
r'un.instfiles',
r'un.license',
r'uninstConfirm',
r'user',
r'Win10',
r'Win7',
r'Win8',
r'WinVista',
r'zlib',
],
},
contains: [
Mode(
scope: r'comment',
begin: r'#',
end: r'$',
contains: [
Mode(
scope: r'doctag',
begin: r'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',
end: r'(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):',
excludeBegin: true,
relevance: 0,
),
Mode(
begin:
r"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",
),
],
),
Mode(
scope: r'comment',
begin: r'/\*',
end: r'\*/',
contains: [
Mode(
scope: r'doctag',
begin: r'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',
end: r'(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):',
excludeBegin: true,
relevance: 0,
),
Mode(
begin:
r"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",
),
],
),
Mode(
scope: r'comment',
begin: r';',
end: r'$',
contains: [
Mode(
scope: r'doctag',
begin: r'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',
end: r'(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):',
excludeBegin: true,
relevance: 0,
),
Mode(
begin:
r"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",
),
],
relevance: 0,
),
Mode(
match: [r'Var', r'\s+', r'(?:\/GLOBAL\s+)?', r'[A-Za-z][\w.]*'],
scope: {1: r'keyword', 3: r'params', 4: r'variable'},
),
Mode(
match: [r'Function', r'\s+', r'(\.)?[a-zA-Z]\w*'],
scope: {1: r'keyword', 3: r'title.function'},
),
Mode(
beginKeywords:
r'Function PageEx Section SectionGroup FunctionEnd SectionEnd',
),
Mode(
scope: r'string',
variants: [
Mode(begin: r'"', end: r'"'),
Mode(begin: r"'", end: r"'"),
Mode(begin: r'`', end: r'`'),
],
illegal: r'\n',
contains: [
Mode(scope: r'char.escape', begin: r'\$(\\[nrt]|\$)'),
Mode(
scope: r'variable.constant',
begin:
r'\$(?:ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)',
),
mode0,
mode1,
mode2,
],
),
Mode(
scope: r'keyword',
begin:
r'!(?:addincludedir|addplugindir|appendfile|assert|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|searchparse|searchreplace|system|tempfile|undef|uninstfinalize|verbose|warning)',
),
mode0,
mode1,
mode2,
Mode(
scope: r'params',
begin:
r'(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)',
),
Mode(scope: r'title.function', begin: r'\w+::\w+'),
Mode(scope: r'number', begin: r'\b\d+(\.\d+)?', relevance: 0),
],
);
}