nsis-mode.el
author Oleksandr Gavenko <gavenkoa@gmail.com>
Wed, 22 Dec 2010 15:00:02 +0200
changeset 519 bdc19bd3820f
parent 320 2c4a6d477785
child 650 d21c5ae9b7e6
permissions -rw-r--r--
Ignore owners and groups under Cygwin (mostly because problem with Russian names).
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
257
2f3ac763c340 Make docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 164
diff changeset
     1
;;; iar-linker-config-mode.el --- major mode for highlighting NSIS scripts
2f3ac763c340 Make docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 164
diff changeset
     2
2f3ac763c340 Make docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 164
diff changeset
     3
;; Copyright (C) 2009, 2010 by Oleksandr Gavenko <gavenkoa@gmail.com>
2f3ac763c340 Make docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 164
diff changeset
     4
279
fd6164dfec82 Update copyright statement and year.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 274
diff changeset
     5
;; You can do anything with this file without any warranty.
fd6164dfec82 Update copyright statement and year.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 274
diff changeset
     6
257
2f3ac763c340 Make docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 164
diff changeset
     7
;; Author: Oleksandr Gavenko <gavenkoa@gmail.com>
2f3ac763c340 Make docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 164
diff changeset
     8
;; Maintainer: Oleksandr Gavenko <gavenkoa@gmail.com>
2f3ac763c340 Make docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 164
diff changeset
     9
;; Created: 2009-09-14
2f3ac763c340 Make docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 164
diff changeset
    10
;; Version: 0.1
2f3ac763c340 Make docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 164
diff changeset
    11
;; Keywords: languages
2f3ac763c340 Make docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 164
diff changeset
    12
2f3ac763c340 Make docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 164
diff changeset
    13
;;; Commentary:
2f3ac763c340 Make docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 164
diff changeset
    14
;;
2f3ac763c340 Make docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 164
diff changeset
    15
;; Very pure syntax highlighting.
2f3ac763c340 Make docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 164
diff changeset
    16
2f3ac763c340 Make docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 164
diff changeset
    17
;;; Code:
2f3ac763c340 Make docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 164
diff changeset
    18
274
7c18567f0754 Added autoload magic comment for main mode function.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 271
diff changeset
    19
;;;###autoload
271
bf0c4a022c5a Always define nsis mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 270
diff changeset
    20
(define-generic-mode 'nsis-mode
282
a119108fd2ca Added comment pattern.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 281
diff changeset
    21
  (list ?\; ?\# '("/*" . "*/"))
281
457b9057a35a Added keyword and comment char.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 279
diff changeset
    22
  '(
286
bdbe49f5dea5 Added new words and fix comment highliting as command can be on same line as label.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 283
diff changeset
    23
    "Section" "SectionEnd" "SectionIn" "SectionGroup" "SectionGroupEnd" "Function" "FunctionEnd" "File"
283
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    24
    "SectionSetFlags" "SectionGetFlags" "SectionSetText" "SectionGetText" "SectionSetInstTypes" "SectionGetInstTypes" "SectionSetSize" "SectionGetSize" "SetCurInstType" "GetCurInstType" "InstTypeSetText" "InstTypeGetText"
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    25
    "Name" "ShowInstDetails" "Caption"
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    26
    "LicenseText" "LicenseData" "LicenseForceSelection" "ComponentText" "BrandingText" "DetailsButtonText" "CompletedText" "UninstallText"
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    27
    "DirText" "DirVar" "DirVerify"
286
bdbe49f5dea5 Added new words and fix comment highliting as command can be on same line as label.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 283
diff changeset
    28
    "Exec" "ExecWait" "ExecShell" "Goto" "goto" "Call" "Return" "Abort" "Quit" "ClearErrors" "SetErrors"
283
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    29
    "Reboot" "SetRebootFlag"
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    30
    "IfSilent" "IfAbort" "IfRebootFlag" "IfErrors" "IfFileExists"
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    31
    "GetCurrentAddress" "GetFunctionAddress" "GetLabelAddress"
282
a119108fd2ca Added comment pattern.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 281
diff changeset
    32
    "Page" "UninstPage" "PageEx" "PageCallbacks" "PageExEnd"
281
457b9057a35a Added keyword and comment char.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 279
diff changeset
    33
    "Delete" "CopyFiles" "CreateDirectory" "RMDir" "OutFile" "ReserveFile" "CreateShortCut"
283
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    34
    "CallInstDLL" "GetDLLVersion" "GetDLLVersionLocal" "RegDLL" "UnRegDLL"
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    35
    "GetFileTime" "GetFileTimeLocal" "GetFullPathName" "GetTempFileName" "SearchPath" "SetFileAttributes"
286
bdbe49f5dea5 Added new words and fix comment highliting as command can be on same line as label.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 283
diff changeset
    36
    "ReadRegStr" "WriteRegStr" "DeleteRegKey" "DeleteRegValue" "EnumRegKey" "EnumRegValue" "WriteRegDWORD" "ReadRegDWORD" "WriteRegDword" "WriteRegBin" "WriteRegDWORD" "WriteRegExpandStr"
283
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    37
    "ExpandEnvStrings" "ReadEnvStr"
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    38
    "DeleteINISec" "DeleteINIStr" "FlushINI" "ReadINIStr" "WriteINIStr"
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    39
    "Var" "Pop" "Push" "Exch"
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    40
    "StrLen" "StrCpy" "StrCmp" "StrCmpS" "IntCmp" "IntCmpU" "IntFmt" "IntOp"
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    41
    "FileClose" "FileOpen" "FileRead" "FileReadByte" "FileSeek" "FileWrite" "FileWriteByte" "FindClose" "FindFirst" "FindNext"
286
bdbe49f5dea5 Added new words and fix comment highliting as command can be on same line as label.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 283
diff changeset
    42
    "InitPluginsDir" "addplugindir" "InstallDir" "InstallDirRegKey" "InstType" "Nop" "Sleep"
281
457b9057a35a Added keyword and comment char.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 279
diff changeset
    43
    "RequestExecutionLevel" "CRCCheck" "XPStyle"
457b9057a35a Added keyword and comment char.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 279
diff changeset
    44
    "ReadIniStr" "WriteIniStr"
283
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    45
    "LogSet" "LogText"
281
457b9057a35a Added keyword and comment char.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 279
diff changeset
    46
    "Icon" "UninstallIcon"
457b9057a35a Added keyword and comment char.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 279
diff changeset
    47
    "SendMessage" "MessageBox" "GetDlgItem"
286
bdbe49f5dea5 Added new words and fix comment highliting as command can be on same line as label.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 283
diff changeset
    48
    "FindWindow" "EnableWindow" "LockWindow" "ShowWindow" "HideWindow" "IsWindow" "AutoCloseWindow"
283
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    49
    "SetAutoClose" "CreateFont" "SetCtlColors" "SetBrandingImage" "SetDetailsView" "SetDetailsPrint" "SetSilent" "BringToFront" "DetailPrint"
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    50
    "LoadLanguageFile" "LangString" "LicenseLangString"
281
457b9057a35a Added keyword and comment char.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 279
diff changeset
    51
    "SubCaption" "UninstallSubCaption"
283
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    52
    "SetPluginUnload" "DetailPrint" "SetOutPath" "WriteUninstaller"
d80322acbbce Added instruction from doc.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 282
diff changeset
    53
    "GetErrorLevel" "SetErrorLevel" "GetInstDirError" "SetRegView" "SetShellVarContext"
286
bdbe49f5dea5 Added new words and fix comment highliting as command can be on same line as label.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 283
diff changeset
    54
    "SetDateSave" "SetDatablockOptimize" "BGGradient" "InstallColors" "CheckBitmap" "SilentInstall" "SetOverwrite"
bdbe49f5dea5 Added new words and fix comment highliting as command can be on same line as label.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 283
diff changeset
    55
    "SetCompress"
281
457b9057a35a Added keyword and comment char.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 279
diff changeset
    56
    )
457b9057a35a Added keyword and comment char.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 279
diff changeset
    57
  '(
286
bdbe49f5dea5 Added new words and fix comment highliting as command can be on same line as label.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 283
diff changeset
    58
    ("!\\(insertmacro\\|define\\|ifdef\\|ifndef\\|else\\|endif\\|echo\\|verbose\\|include\\|macroend\\|macro\\|undef\\|packhdr\\|warning\\|error\\)" (1 'font-lock-builtin-face))
271
bf0c4a022c5a Always define nsis mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 270
diff changeset
    59
    ("$[({]?\\([A-Za-z0-9_]+\\)[)}]?" (1 'font-lock-variable-name-face))
310
dca63c827ac1 Improved func name highlighting.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 287
diff changeset
    60
    ("^[[:blank:]]*\\([[:alpha:].][[:alnum:]_.]*:\\)\\([^:]\\|$\\)" (1 'font-lock-function-name-face))
dca63c827ac1 Improved func name highlighting.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 287
diff changeset
    61
    ("^[[:blank:]]*\\(Function\\|Goto\\|Call\\)[[:blank:]]+\\([[:alnum:]_.]*\\)" (2 'font-lock-function-name-face))
271
bf0c4a022c5a Always define nsis mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 270
diff changeset
    62
    )
bf0c4a022c5a Always define nsis mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 270
diff changeset
    63
  (list "\\.\\(nsi\\|nsh\\)$")
bf0c4a022c5a Always define nsis mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 270
diff changeset
    64
  nil
bf0c4a022c5a Always define nsis mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 270
diff changeset
    65
  "Generic mode for nsis files.")
258
29533873ee3e Fix docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 257
diff changeset
    66
320
2c4a6d477785 Allow dot and underscore to be word class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 318
diff changeset
    67
(add-hook
2c4a6d477785 Allow dot and underscore to be word class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 318
diff changeset
    68
 'nsis-mode-hook
2c4a6d477785 Allow dot and underscore to be word class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 318
diff changeset
    69
 (lambda ()
2c4a6d477785 Allow dot and underscore to be word class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 318
diff changeset
    70
   (modify-syntax-entry ?_ "w")
2c4a6d477785 Allow dot and underscore to be word class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 318
diff changeset
    71
   (modify-syntax-entry ?. "w")
2c4a6d477785 Allow dot and underscore to be word class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 318
diff changeset
    72
   )
2c4a6d477785 Allow dot and underscore to be word class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 318
diff changeset
    73
 )
2c4a6d477785 Allow dot and underscore to be word class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 318
diff changeset
    74
258
29533873ee3e Fix docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 257
diff changeset
    75
(provide 'nsis-mode)
29533873ee3e Fix docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 257
diff changeset
    76
29533873ee3e Fix docs headers according to 'Conventional Headers for Emacs Libraries'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 257
diff changeset
    77
;;; nsis-mode.el ends here