(require 'generic)
(require 'font-lock)
(defgroup generic-x nil
"Extra modes for generic mode."
:prefix "generic-"
:group 'generic
:version "20.3")
(defcustom generic-extras-enable-list nil
"*List of generic modes to enable by default.
Each entry in the list should be a symbol.
The variables `generic-define-mswindows-modes' and `generic-define-unix-modes'
also affect which generic modes are defined.
Please note that if you set this variable after generic-x is loaded,
you must reload generic-x to enable the specified modes."
:group 'generic-x
:type '(repeat sexp)
)
(defcustom generic-define-mswindows-modes
(memq system-type (list 'windows-nt 'ms-dos))
"*If non-nil, some MS-Windows specific generic modes will be defined."
:group 'generic-x
:type 'boolean
)
(defcustom generic-define-unix-modes
(not (memq system-type (list 'windows-nt 'ms-dos)))
"*If non-nil, some Unix specific generic modes will be defined."
:group 'generic-x
:type 'boolean
)
(and generic-define-mswindows-modes
(setq generic-extras-enable-list
(append (list 'bat-generic-mode 'ini-generic-mode
'inf-generic-mode 'rc-generic-mode
'reg-generic-mode 'rul-generic-mode
'hosts-generic-mode 'apache-generic-mode)
generic-extras-enable-list)))
(and generic-define-unix-modes
(setq generic-extras-enable-list
(append (list 'apache-generic-mode 'samba-generic-mode
'hosts-generic-mode 'fvwm-generic-mode
'x-resource-generic-mode
'alias-generic-mode
)
generic-extras-enable-list)))
(and
(memq 'apache-generic-mode generic-extras-enable-list)
(define-generic-mode 'apache-generic-mode
(list ?#)
nil
'(("^\\(<.*>\\)" 1 'font-lock-reference-face)
("^\\(\\sw+\\)\\s-" 1 'font-lock-variable-name-face))
(list "srm\\.conf\\'" "httpd\\.conf\\'" "access\\.conf\\'")
nil
"Generic mode for Apache or HTTPD configuration files."))
(and
(memq 'samba-generic-mode generic-extras-enable-list)
(define-generic-mode 'samba-generic-mode
(list ?\ nil
'(("^\\(\\[.*\\]\\)" 1 'font-lock-reference-face))
(list "smb\\.conf\\'")
(list 'generic-bracket-support)
"Generic mode for Samba configuration files."))
(and
(memq 'fvwm-generic-mode generic-extras-enable-list)
(define-generic-mode 'fvwm-generic-mode
(list ?#)
(list
"AddToMenu"
"AddToFunc"
"ButtonStyle"
"EndFunction"
"EndPopup"
"Function"
"IconPath"
"Key"
"ModulePath"
"Mouse"
"PixmapPath"
"Popup"
"Style"
)
nil
(list "\\.fvwmrc\\'" "\\.fvwm2rc\\'")
nil
"Generic mode for FVWM configuration files."))
(and
(memq 'x-resource-generic-mode generic-extras-enable-list)
(define-generic-mode 'x-resource-generic-mode
(list ?!)
nil
'(("^\\([^:\n]+:\\)" 1 'font-lock-variable-name-face))
(list "\\.Xdefaults\\'" "\\.Xresources\\'")
nil
"Generic mode for X Resource configuration files."))
(and
(memq 'hosts-generic-mode generic-extras-enable-list)
(define-generic-mode 'hosts-generic-mode
(list ?#)
(list "localhost")
'(("\\([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\\)" 1 'font-lock-reference-face))
(list "[hH][oO][sS][tT][sS]\\'")
nil
"Generic mode for HOSTS files."))
(and
(memq 'inf-generic-mode generic-extras-enable-list)
(define-generic-mode 'inf-generic-mode
(list ?\ nil
'(("^\\(\\[.*\\]\\)" 1 'font-lock-reference-face))
(list "\\.[iI][nN][fF]\\'")
(list 'generic-bracket-support)
"Generic mode for MS-Windows INF files."))
(and
(memq 'ini-generic-mode generic-extras-enable-list)
(define-generic-mode 'ini-generic-mode
(list ?\ nil
'(("^\\(\\[.*\\]\\)" 1 'font-lock-reference-face)
("^\\([^=\n\r]*\\)=\\([^\n\r]*\\)$"
(1 font-lock-function-name-face)
(2 font-lock-variable-name-face)))
(list "\\.[iI][nN][iI]\\'")
(list
(function
(lambda ()
(setq imenu-generic-expression
'((nil "^\\[\\(.*\\)\\]" 1)
("*Variables*" "^\\s-*\\([^=]+\\)\\s-*=" 1)))
)))
"Generic mode for MS-Windows INI files."))
(and
(memq 'reg-generic-mode generic-extras-enable-list)
(define-generic-mode 'reg-generic-mode
'(?\ '("key" "classes_root" "REGEDIT" "REGEDIT4")
'(("\\(\\[.*]\\)" 1 'font-lock-reference-face)
("^\\([^\n\r]*\\)\\s-*=" 1 'font-lock-variable-name-face))
'("\\.[rR][eE][gG]\\'")
(list
(function
(lambda ()
(setq imenu-generic-expression
'((nil "^\\s-*\\(.*\\)\\s-*=" 1))))))
"Generic mode for MS-Windows Registry files."))
(if (not (memq 'bat-generic-mode generic-extras-enable-list))
nil
(define-generic-mode 'bat-generic-mode
nil
nil
(list
(list "^[@ \t]*\\([rR][eE][mM][^\n\r]*\\)" 1 'font-lock-comment-face t)
(list "^[ \t]*\\(::-.*\\)" 1 'font-lock-comment-face t)
(list
"^[@ \t]*\\([bB][rR][eE][aA][kK]\\|[vV][eE][rR][iI][fF][yY]\\)[ \t]+\\([oO]\\([nN]\\|[fF][fF]\\)\\)"
'(1 font-lock-builtin-face)
'(2 font-lock-constant-face 'append t))
(list
"^[@ \t]*\\([eE][cC][hH][oO]\\)[ \t]+\\(\\([oO]\\([nN]\\|[fF][fF]\\)\\)\\|\\([^>|\r\n]+\\)\\)"
'(1 font-lock-builtin-face)
'(3 font-lock-constant-face t t)
'(5 font-lock-string-face t t))
(generic-make-keywords-list
(list
"FOR" "for" "For"
"IF" "if" "If"
)
'font-lock-keyword-face "^[@ \t]*")
(generic-make-keywords-list
(list
"DO" "do" "Do"
"EXIST" "exist" "Exist"
"ERRORLEVEL" "errorlevel" "ErrorLevel" "Errorlevel"
"GOTO" "goto" "GoTo" "Goto"
"NOT" "not" "Not"
) 'font-lock-keyword-face "[ \t|\n]")
(generic-make-keywords-list
(list
"CALL" "call" "Call"
"CD" "cd" "Cd"
"CLS" "cls" "Cls"
"COPY" "copy" "Copy"
"DEL" "del" "Del"
"ECHO" "echo" "Echo"
"MD" "md" "Md"
"PATH" "path" "Path"
"PAUSE" "pause" "Pause"
"PROMPT" "prompt" "Prompt"
"RD" "rd" "Rd"
"REN" "ren" "Ren"
"SET" "set" "Set"
"START" "start" "Start"
"SHIFT" "shift" "Shift"
) 'font-lock-builtin-face "[ \t|\n]")
(list "^[ \t]*\\(:\\sw+\\)" 1 'font-lock-function-name-face t)
(list "\\(%\\sw+%\\)" 1 'font-lock-variable-name-face t)
(list "\\(%[0-9]\\)" 1 'font-lock-variable-name-face t)
(list "\\(/[^/ \"\t\n]+\\)" 1 'font-lock-type-face)
(list "[\t ]+\\([+-][^\t\n\" ]+\\)" 1 'font-lock-type-face)
(list "[ \t\n|]\\<\\([gG][oO][tT][oO]\\)\\>[ \t]*\\(\\sw+\\)?"
'(1 font-lock-keyword-face)
'(2 font-lock-function-name-face nil t))
(list "[ \t\n|]\\<\\([sS][eE][tT]\\)\\>[ \t]*\\(\\sw+\\)?[ \t]*=?"
'(1 font-lock-builtin-face)
'(2 font-lock-variable-name-face t t))
)
(list
"\\.[bB][aA][tT]\\'"
"\\`[cC][oO][nN][fF][iI][gG]\\."
"\\`[aA][uU][tT][oO][eE][xX][eE][cC]\\." )
(list 'generic-bat-mode-setup-function)
"Generic mode for MS-Windows BAT files.")
(defvar bat-generic-mode-syntax-table nil
"Syntax table in use in bat-generic-mode buffers.")
(if bat-generic-mode-syntax-table
nil
(setq bat-generic-mode-syntax-table (make-syntax-table))
(modify-syntax-entry ?_ "w" bat-generic-mode-syntax-table))
(defun generic-bat-mode-setup-function ()
(make-local-variable 'parse-sexp-ignore-comments)
(make-local-variable 'comment-start)
(make-local-variable 'comment-start-skip)
(make-local-variable 'comment-end)
(setq imenu-generic-expression '((nil "^:\\(\\sw+\\)" 1))
parse-sexp-ignore-comments t
comment-end ""
comment-start "REM "
comment-start-skip "[Rr][Ee][Mm] *"
)
(set-syntax-table bat-generic-mode-syntax-table)
)
)
(and
(memq 'mailagent-rules-generic-mode generic-extras-enable-list)
(define-generic-mode 'mailagent-rules-generic-mode
(list ?#)
(list "SAVE" "DELETE" "PIPE" "ANNOTATE" "REJECT")
'(("^\\(\\sw+\\)\\s-*=" 1 'font-lock-variable-name-face)
("\\s-/\\([^/]+\\)/[i, \t\n]" 1 'font-lock-reference-face))
(list "\\.rules\\'")
(list 'mailagent-rules-setup-function)
"Mode for Mailagent rules files.")
(defun mailagent-rules-setup-function ()
(make-local-variable 'imenu-generic-expression)
(setq imenu-generic-expression
'((nil "\\s-/\\([^/]+\\)/[i, \t\n]" 1))))
)
(and
(memq 'prototype-generic-mode generic-extras-enable-list)
(define-generic-mode 'prototype-generic-mode
(list ?#)
nil
'(
("^\\([0-9]\\)?\\s-*\\([a-z]\\)\\s-+\\([A-Za-z_]+\\)\\s-+\\([^\n\r]*\\)$"
(2 font-lock-reference-face)
(3 font-lock-keyword-face))
("^\\([a-z]\\) \\([A-Za-z_]+\\)=\\([^\n\r]*\\)$"
(1 font-lock-reference-face)
(2 font-lock-keyword-face)
(3 font-lock-variable-name-face))
("^\\(!\\s-*\\(search\\|include\\|default\\)\\)\\s-*\\([^\n\r]*\\)$"
(1 font-lock-keyword-face)
(3 font-lock-variable-name-face))
("^\\(!\\s-*\\sw+\\)=\\([^\n\r]*\\)$"
(1 font-lock-keyword-face)
(2 font-lock-variable-name-face))
)
(list "prototype\\'")
nil
"Mode for Sys V prototype files."))
(and
(memq 'pkginfo-generic-mode generic-extras-enable-list)
(define-generic-mode 'pkginfo-generic-mode
(list ?#)
nil
'(
("^\\([A-Za-z_]+\\)=\\([^\n\r]*\\)$"
(1 font-lock-keyword-face)
(2 font-lock-variable-name-face))
)
(list "pkginfo\\'")
nil
"Mode for Sys V pkginfo files."))
(define-generic-mode 'javascript-generic-mode
(list "//")
(list
"document"
"else"
"function"
"function"
"if"
"then"
"var"
)
(list
(list "^\\s-*function\\s-+\\([A-Za-z0-9]+\\)"
'(1 font-lock-function-name-face))
(list "^\\s-*var\\s-+\\([A-Za-z0-9]+\\)"
'(1 font-lock-variable-name-face))
)
(list "\\.js\\'")
(list
(function
(lambda ()
(setq imenu-generic-expression
'((nil "^function\\s-+\\([A-Za-z0-9_]+\\)" 1)))
)))
"Mode for JavaScript files.")
(define-generic-mode 'vrml-generic-mode
(list ?#)
(list
"DEF"
"NULL"
"USE"
"Viewpoint"
"ambientIntensity"
"appearance"
"children"
"color"
"coord"
"coordIndex"
"creaseAngle"
"diffuseColor"
"emissiveColor"
"fieldOfView"
"geometry"
"info"
"material"
"normal"
"orientation"
"position"
"shininess"
"specularColor"
"texCoord"
"texture"
"textureTransform"
"title"
"transparency"
"type"
)
(list
(list "USE\\s-+\\([-A-Za-z0-9_]+\\)"
'(1 font-lock-reference-face))
(list "DEF\\s-+\\([-A-Za-z0-9_]+\\)\\s-+\\([A-Za-z0-9]+\\)\\s-*{"
'(1 font-lock-type-face)
'(2 font-lock-reference-face))
(list "^\\s-*\\([-A-Za-z0-9_]+\\)\\s-*{"
'(1 font-lock-function-name-face))
(list
"^\\s-*\\(geometry\\|appearance\\|material\\)\\s-+\\([-A-Za-z0-9_]+\\)"
'(2 font-lock-variable-name-face))
)
(list "\\.wrl\\'")
(list
(function
(lambda ()
(setq imenu-generic-expression
'((nil "^\\([A-Za-z0-9_]+\\)\\s-*{" 1)
("*Definitions*"
"DEF\\s-+\\([-A-Za-z0-9_]+\\)\\s-+\\([A-Za-z0-9]+\\)\\s-*{"
1)))
)))
"Generic Mode for VRML files.")
(define-generic-mode 'java-manifest-generic-mode
(list ?#)
(list
"Name"
"Digest-Algorithms"
"Manifest-Version"
"Required-Version"
"Signature-Version"
"Magic"
"Java-Bean"
"Depends-On"
)
'(("^Name:\\s-+\\([^\n\r]*\\)$"
(1 font-lock-variable-name-face))
("^\\(Manifest\\|Required\\|Signature\\)-Version:\\s-+\\([^\n\r]*\\)$"
(2 font-lock-reference-face))
)
(list "manifest\\.mf\\'")
nil
"Mode for Java Manifest files")
(define-generic-mode 'java-properties-generic-mode
(list ?#)
nil
'(("^\\([\\.A-Za-z0-9_]+\\)\\(\\s-+\\|\\(\\s-*=\\s-*\\)\\)\\([^\r\n]*\\)$"
(1 font-lock-reference-face) (4 font-lock-variable-name-face)))
nil
nil
"Mode for Java properties files.")
(and
(memq 'alias-generic-mode generic-extras-enable-list)
(define-generic-mode 'alias-generic-mode
(list ?#)
(list "alias" "unalias")
'(("^alias\\s-+\\([-A-Za-z0-9_]+\\)\\s-+"
(1 font-lock-variable-name-face))
("^unalias\\s-+\\([-A-Za-z0-9_]+\\)\\s-*$"
(1 font-lock-variable-name-face))
)
(list "alias\\'")
(list
(function
(lambda ()
(setq imenu-generic-expression
'((nil "^\\(alias\\|unalias\\)\\s-+\\([-a-zA-Z0-9_]+\\)" 2)))
)))
"Mode for C Shell alias files.")
)
(and
(memq 'rc-generic-mode generic-extras-enable-list)
(define-generic-mode 'rc-generic-mode
(list "//")
'("ACCELERATORS"
"AUTO3STATE"
"AUTOCHECKBOX"
"AUTORADIOBUTTON"
"BITMAP"
"BOTTOMMARGIN"
"BUTTON"
"CAPTION"
"CHARACTERISTICS"
"CHECKBOX"
"CLASS"
"COMBOBOX"
"CONTROL"
"CTEXT"
"CURSOR"
"DEFPUSHBUTTON"
"DESIGNINFO"
"DIALOG"
"DISCARDABLE"
"EDITTEXT"
"EXSTYLE"
"FONT"
"GROUPBOX"
"GUIDELINES"
"ICON"
"LANGUAGE"
"LEFTMARGIN"
"LISTBOX"
"LTEXT"
"MENUITEM SEPARATOR"
"MENUITEM"
"MENU"
"MOVEABLE"
"POPUP"
"PRELOAD"
"PURE"
"PUSHBOX"
"PUSHBUTTON"
"RADIOBUTTON"
"RCDATA"
"RIGHTMARGIN"
"RTEXT"
"SCROLLBAR"
"SEPARATOR"
"STATE3"
"STRINGTABLE"
"STYLE"
"TEXTINCLUDE"
"TOOLBAR"
"TOPMARGIN"
"VERSIONINFO"
"VERSION"
)
(list
(generic-make-keywords-list
(list
"FILEFLAGSMASK"
"FILEFLAGS"
"FILEOS"
"FILESUBTYPE"
"FILETYPE"
"FILEVERSION"
"PRODUCTVERSION"
) 'font-lock-type-face)
(generic-make-keywords-list
(list
"BEGIN"
"BLOCK"
"END"
"VALUE"
) 'font-lock-function-name-face)
'("^#[ \t]*include[ \t]+\\(<[^>\"\n]+>\\)" 1 font-lock-string-face)
'("^#[ \t]*define[ \t]+\\(\\sw+\\)(" 1 font-lock-function-name-face)
'("^#[ \t]*\\(elif\\|if\\)\\>"
("\\<\\(defined\\)\\>[ \t]*(?\\(\\sw+\\)?" nil nil
(1 font-lock-reference-face) (2 font-lock-variable-name-face nil t)))
'("^#[ \t]*\\(\\sw+\\)\\>[ \t]*\\(\\sw+\\)?"
(1 font-lock-reference-face) (2 font-lock-variable-name-face nil t)))
(list "\\.[rR][cC]$")
nil
"Generic mode for MS-Windows Resource files."))
(and
(memq 'rul-generic-mode generic-extras-enable-list)
(defvar installshield-statement-keyword-list
(list
"abort"
"begin"
"call"
"case"
"declare"
"default"
"downto"
"elseif"
"else"
"endfor"
"endif"
"endswitch"
"endwhile"
"end"
"exit"
"external"
"for"
"function"
"if"
"program"
"prototype"
"repeat"
"return"
"step"
"switch"
"then"
"to"
"typedef"
"until"
"void"
"while"
)
"Statement keywords used in InstallShield 3 and 5.")
(defvar installshield-system-functions-list
(list
"AddFolderIcon"
"AddProfString"
"AddressString"
"AppCommand"
"AskDestPath"
"AskOptions"
"AskPath"
"AskText"
"AskYesNo"
"BatchDeleteEx"
"BatchFileLoad"
"BatchFileSave"
"BatchFind"
"BatchGetFileName"
"BatchMoveEx"
"BatchSetFileName"
"CloseFile"
"CmdGetHwndDlg"
"ComponentAddItem" "ComponentCompareSizeRequired" "ComponentDialog"
"ComponentError" "ComponentFileEnum" "ComponentFileInfo" "ComponentFilterLanguage" "ComponentFilterOS" "ComponentGetData" "ComponentGetItemInfo" "ComponentGetItemSize" "ComponentIsItemSelected" "ComponentListItems"
"ComponentMoveData" "ComponentSelectItem" "ComponentSetData" "ComponentSetItemInfo" "ComponentSetTarget" "ComponentSetupTypeEnum" "ComponentSetupTypeGetData" "ComponentSetupTypeSet" "ComponentTotalSize"
"ComponentValidate" "CompressAdd" "CompressDel" "CompressEnum" "CompressGet" "CompressInfo" "CopyFile"
"CreateDir"
"CreateFile"
"CreateProgramFolder"
"DeinstallSetReference" "DeinstallStart"
"Delay"
"DeleteDir"
"DeleteFile"
"DialogSetInfo"
"Disable"
"DoInstall"
"Do"
"Enable"
"EnterDisk"
"ExistsDir"
"ExistsDisk"
"ExitProgMan"
"EzBatchAddPath"
"EzBatchAddString"
"EzBatchReplace"
"EzConfigAddDriver"
"EzConfigAddString"
"EzConfigGetValue"
"EzConfigSetValue"
"EzDefineDialog"
"FileCompare"
"FileDeleteLine"
"FileGrep"
"FileInsertLine"
"FileSetBeginDefine" "FileSetEndDefine" "FileSetPerformEz" "FileSetPerform" "FileSetReset" "FileSetRoot" "FindAllDirs"
"FindAllFiles"
"FindFile"
"FindWindow"
"GetDiskSpace"
"GetDisk"
"GetEnvVar"
"GetExtents"
"GetFileInfo"
"GetLine"
"GetProfString"
"GetSystemInfo"
"GetValidDrivesList"
"GetVersion"
"GetWindowHandle"
"InstallationInfo"
"Is"
"LaunchApp"
"ListAddItem"
"ListAddString"
"ListCount"
"ListCreate"
"ListDestroy"
"ListFindItem"
"ListFindString"
"ListGetFirstItem"
"ListGetFirstString"
"ListGetNextItem"
"ListGetNextString"
"ListReadFromFile"
"ListSetNextItem"
"ListSetNextString"
"ListSetIndex"
"ListWriteToFile"
"LongPathToQuote"
"LongPathToShortPath"
"MessageBox"
"NumToStr"
"OpenFileMode"
"OpenFile"
"ParsePath"
"PathAdd"
"PathDelete"
"PathFind"
"PathGet"
"PathMove"
"PathSet"
"Path"
"PlaceBitmap"
"PlaceWindow"
"PlayMMedia" "ProgDefGroupType"
"RegDBCreateKeyEx"
"RegDbDeleteValue"
"RegDBGetItem"
"RegDBKeyExist"
"RegDBSetItem"
"RegDBGetKeyValueEx"
"RegDBSetKeyValueEx"
"RegDBSetDefaultRoot"
"RenameFile"
"ReplaceFolderIcon"
"ReplaceProfString"
"SdAskDestPath"
"SdAskOptions"
"SdAskOptionsList"
"SdBitmap"
"SdCloseDlg"
"SdComponentAdvCheckSpace"
"SdComponentAdvInit"
"SdComponentAdvUpdateSpace"
"SdComponentDialog"
"SdComponentDialog2"
"SdComponentDialogAdv"
"SdComponentDialogEx"
"SdComponentDlgCheckSpace"
"SdComponentMult"
"SdConfirmNewDir"
"SdConfirmRegistration"
"SdDiskSpace"
"SdDisplayTopics"
"SdDoStdButton"
"SdEnablement"
"SdError"
"SdFinish"
"SdFinishInit32"
"SdFinishReboot"
"SdGeneralInit"
"SdGetItemName"
"SdGetTextExtent"
"SdGetUserCompanyInfo"
"SdInit"
"SdIsShellExplorer"
"SdIsStdButton"
"SdLicense"
"SdMakeName"
"SdOptionInit"
"SdOptionSetState"
"SdOptionsButtons"
"SdOptionsButtonsInit"
"SdPlugInProductName"
"SdProductName"
"SdRegEnableButton"
"SdRegExEnableButton"
"SdRegisterUser"
"SdRegisterUserEx"
"SdRemoveEndSpace"
"SdSelectFolder"
"SdSetSequentialItems"
"SdSetStatic"
"SdSetupTypeEx" "SdSetupType"
"SdShowAnyDialog"
"SdShowDlgEdit1"
"SdShowDlgEdit2"
"SdShowDlgEdit3"
"SdShowFileMods"
"SdShowInfoList"
"SdShowMsg"
"SdStartCopy"
"SdUnInit"
"SdUpdateComponentSelection"
"SdWelcome"
"SendMessage"
"SetColor"
"SetFont"
"SetDialogTitle"
"SetDisplayEffect" "SetFileInfo"
"SetForegroundWindow"
"SetStatusWindow"
"SetTitle"
"SetupType"
"ShowProgramFolder"
"Split" "SprintfBox"
"Sprintf"
"StatusUpdate"
"StrCompare"
"StrFind"
"StrGetTokens"
"StrLength"
"StrRemoveLastSlash"
"StrToLower"
"StrToUpper"
"StrSub"
"VarRestore"
"VarSave"
"VerCompare"
"VerGetFileVersion"
"WaitOnDialog"
"Welcome"
"WriteLine"
"WriteProfString"
"XCopyFile"
)
"System functions defined in InstallShield 3 and 5.")
(defvar installshield-system-variables-list
(list
"CMDLINE"
"CORECOMPONENTHANDLING"
"ERRORFILENAME"
"INFOFILENAME"
"ISRES"
"ISUSER"
"ISVERSION"
"MODE"
"SRCDIR"
"SRCDISK"
"SUPPORTDIR"
"TARGETDIR"
"TARGETDISK"
"WINDIR"
"WINDISK"
"WINMAJOR"
"WINSYSDIR"
"WINSYSDISK"
)
"System variables used in InstallShield 3 and 5.")
(defvar installshield-types-list
(list
"BOOL"
"BYREF"
"CHAR"
"HIWORD"
"HWND"
"INT"
"LIST"
"LONG"
"LOWORD"
"NUMBER"
"POINTER"
"QUAD"
"RGB"
"SHORT"
"STRINGLIST"
"STRING"
)
"Type keywords used in InstallShield 3 and 5.")
(defvar installshield-funarg-constants-list
(list
"AFTER"
"APPEND"
"ALLCONTENTS"
"BACKBUTTON"
"BACKGROUNDCAPTION"
"BACKGROUND"
"BACK"
"BASEMEMORY"
"BEFORE"
"BIOS"
"BITMAPICON"
"BK_BLUE"
"BK_GREEN"
"BK_RED"
"BLUE"
"BOOTUPDRIVE"
"CANCEL"
"CDROM_DRIVE"
"CDROM"
"CHECKBOX95"
"CHECKBOX"
"CHECKLINE"
"CHECKMARK"
"COLORS"
"COMMANDEX"
"COMMAND"
"COMP_NORMAL"
"COMP_UPDATE_DATE"
"COMP_UPDATE_SAME"
"COMP_UPDATE_VERSION"
"COMPACT"
"CONTINUE"
"CPU"
"CUSTOM"
"DATE"
"DEFWINDOWMODE"
"DIR_WRITEABLE"
"DIRECTORY"
"DISABLE"
"DISK_TOTALSPACE"
"DISK"
"DLG_OPTIONS"
"DLG_PATH"
"DLG_TEXT"
"DLG_ASK_YESNO"
"DLG_ENTER_DISK"
"DLG_ERR"
"DLG_INFO_ALTIMAGE"
"DLG_INFO_CHECKSELECTION"
"DLG_INFO_KUNITS"
"DLG_INFO_USEDECIMAL"
"DLG_MSG_INFORMATION"
"DLG_MSG_SEVERE"
"DLG_MSG_WARNING"
"DLG_STATUS"
"DLG_WARNING"
"DLG_USER_CAPTION"
"DRIVE"
"ENABLE"
"END_OF_FILE"
"END_OF_LIST"
"ENVSPACE"
"EQUALS"
"EXCLUDE_SUBDIR"
"EXCLUSIVE"
"EXISTS"
"EXIT"
"EXTENDED_MEMORY"
"EXTENSION_ONLY"
"FAILIFEXISTS"
"FALSE"
"FEEDBACK_FULL"
"FILE_ATTR_ARCHIVED"
"FILE_ATTR_DIRECTORY"
"FILE_ATTR_HIDDEN"
"FILE_ATTR_NORMAL"
"FILE_ATTR_READONLY"
"FILE_ATTR_SYSTEM"
"FILE_ATTRIBUTE"
"FILE_DATE"
"FILE_LINE_LENGTH"
"FILE_MODE_APPEND"
"FILE_MODE_BINARYREADONLY"
"FILE_MODE_BINARY"
"FILE_MODE_NORMAL"
"FILE_NO_VERSION"
"FILE_NOT_FOUND"
"FILE_SIZE"
"FILE_TIME"
"FILENAME_ONLY"
"FILENAME"
"FIXED_DRIVE"
"FOLDER_DESKTOP"
"FOLDER_STARTMENU"
"FOLDER_STARTUP"
"FREEENVSPACE"
"FULLWINDOWMODE"
"FULL"
"FONT_TITLE"
"GREATER_THAN"
"GREEN"
"HOURGLASS"
"INCLUDE_SUBDIR"
"INDVFILESTATUS"
"INFORMATION"
"IS_WINDOWSNT"
"IS_WINDOWS95"
"IS_WINDOWS"
"IS_WIN32S"
"ISTYPE"
"LANGUAGE_DRV"
"LANGUAGE"
"LESS_THAN"
"LIST_NULL"
"LISTFIRST"
"LISTNEXT"
"LOCKEDFILE"
"LOGGING"
"LOWER_LEFT"
"LOWER_RIGHT"
"MAGENTA"
"MOUSE_DRV"
"MOUSE"
"NETWORK_DRV"
"NETWORK"
"NEXT"
"NONEXCLUSIVE"
"NORMALMODE"
"NOSET"
"NOTEXISTS"
"NOWAIT"
"NO"
"OFF"
"ONLYDIR"
"ON"
"OSMAJOR"
"OSMINOR"
"OS"
"OTHER_FAILURE"
"PARALLEL"
"PARTIAL"
"PATH_EXISTS"
"PATH"
"RED"
"REGDB_APPPATH_DEFAULT"
"REGDB_APPPATH"
"REGDB_BINARY"
"REGDB_ERR_CONNECTIONEXISTS"
"REGDB_ERR_CORRUPTEDREGSITRY"
"REGDB_ERR_INITIALIZATION"
"REGDB_ERR_INVALIDHANDLE"
"REGDB_ERR_INVALIDNAME"
"REGDB_NUMBER"
"REGDB_STRING_EXPAND"
"REGDB_STRING_MULTI"
"REGDB_STRING"
"REGDB_UNINSTALL_NAME"
"REMOTE_DRIVE"
"REMOVALE_DRIVE"
"REPLACE_ITEM"
"REPLACE"
"RESET"
"RESTART"
"ROOT"
"SELFREGISTER"
"SERIAL"
"SET"
"SEVERE"
"SHAREDFILE"
"SHARE"
"SILENTMODE"
"SRCTARGETDIR"
"STATUSBAR"
"STATUSDLG"
"STATUSOLD"
"STATUS"
"STYLE_NORMAL"
"SW_MAXIMIZE"
"SW_MINIMIZE"
"SW_RESTORE"
"SW_SHOW"
"TIME"
"TRUE"
"TYPICAL"
"UPPER_LEFT"
"UPPER_RIGHT"
"VALID_PATH"
"VERSION"
"VIDEO"
"VOLUMELABEL"
"YELLOW"
"YES"
"WAIT"
"WARNING"
"WINMAJOR"
"WINMINOR"
"WIN32SINSTALLED"
"WIN32SMAJOR"
"WIN32SMINOR"
)
"Function argument constants used in InstallShield 3 and 5.")
(define-generic-mode 'rul-generic-mode
(list "//")
installshield-statement-keyword-list
(list
'("#[ \t]*include[ \t]+\\(<[^>\"\n]+>\\)"
1 font-lock-string-face)
'("#[ \t]*\\(\\sw+\\)\\>[ \t]*\\(\\sw+\\)?"
(1 font-lock-reference-face)
(2 font-lock-variable-name-face nil t))
'("\\(@[A-Za-z][A-Za-z0-9_]+\\)" 1 font-lock-builtin-face)
'("[ \t]*\\(\\sw+:\\)" 1 font-lock-reference-face)
'("\\<\\(goto\\)\\>[ \t]*\\(\\sw+\\)?"
(1 font-lock-keyword-face)
(2 font-lock-reference-face nil t))
(generic-make-keywords-list
installshield-system-variables-list
'font-lock-variable-name-face "[^_]" "[^_]")
(generic-make-keywords-list
installshield-system-functions-list
'font-lock-function-name-face "[^_]" "[^_]")
(generic-make-keywords-list
installshield-types-list
'font-lock-type-face "[^_]" "[^_]")
(generic-make-keywords-list
installshield-funarg-constants-list
'font-lock-variable-name-face "[^_]" "[^_]") )
(list "\\.[rR][uU][lL]$")
(list
(function
(lambda ()
(setq imenu-generic-expression
'((nil "^function\\s-+\\([A-Za-z0-9_]+\\)" 1)))
)))
"Generic mode for InstallShield RUL files.")
(define-skeleton rul-if
"Insert an if statement."
"condition: "
"if(" str ") then" \n
> _ \n
( "other condition, %s: "
> "elseif(" str ") then" \n
> \n)
> "else" \n
> \n
resume:
> "endif;"
)
(define-skeleton rul-function
"Insert a function statement."
"function: "
"function " str " ()" \n
( "local variables, %s: "
> " " str ";" \n)
> "begin" \n
> _ \n
resume:
> "end;")
)
(define-generic-mode 'mailrc-generic-mode
(list ?#)
(list
"alias"
"else"
"endif"
"group"
"if"
"ignore"
"set"
"unset"
)
'(("^\\s-*\\(alias\\|group\\)\\s-+\\([-A-Za-z0-9_]+\\)\\s-+\\([^\n\r#]*\\)\\(#.*\\)?$"
(2 font-lock-reference-face) (3 font-lock-variable-name-face))
("^\\s-*\\(unset\\|set\\|ignore\\)\\s-+\\([-A-Za-z0-9_]+\\)=?\\([^\n\r#]*\\)\\(#.*\\)?$"
(2 font-lock-reference-face) (3 font-lock-variable-name-face)))
(list "\\.mailrc\\'")
nil
"Mode for mailrc files.")
(provide 'generic-x)