nsis function

Mode nsis(
  1. Highlight hljs
)

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),
    ],
  );
}