(eval-when-compile (require 'font-lock))
(defgroup generic-x nil
"A collection of generic modes."
:prefix "generic-"
:group 'data
:version "20.3")
(defcustom generic-use-find-file-hook t
"*If non-nil, add a hook to enter `default-generic-mode' automatically.
This is done if the first few lines of a file in fundamental mode
start with a hash comment character."
:group 'generic-x
:type 'boolean)
(defcustom generic-lines-to-scan 3
"*Number of lines that `generic-mode-find-file-hook' looks at.
Relevant when deciding whether to enter Default-Generic mode automatically.
This variable should be set to a small positive number."
:group 'generic-x
:type 'integer)
(defcustom generic-find-file-regexp "^#"
"*Regular expression used by `generic-mode-find-file-hook'.
Files in fundamental mode whose first few lines contain a match
for this regexp, should be put into Default-Generic mode instead.
The number of lines tested for the matches is specified by the
value of the variable `generic-lines-to-scan', which see."
:group 'generic-x
:type 'regexp)
(defcustom generic-ignore-files-regexp "[Tt][Aa][Gg][Ss]\\'"
"*Regular expression used by `generic-mode-find-file-hook'.
Files whose names match this regular expression should not be put
into Default-Generic mode, even if they have lines which match
the regexp in `generic-find-file-regexp'. If the value is nil,
`generic-mode-find-file-hook' does not check the file names."
:group 'generic-x
:type '(choice (const :tag "Don't check file names" nil) regexp))
(define-generic-mode default-generic-mode (list ?#) nil nil nil nil)
(defun generic-mode-find-file-hook ()
"Hook function to enter Default-Generic mode automatically.
Done if the first few lines of a file in Fundamental mode start
with a match for the regexp in `generic-find-file-regexp', unless
the file's name matches the regexp which is the value of the
variable `generic-ignore-files-regexp'.
This hook will be installed if the variable
`generic-use-find-file-hook' is non-nil. The variable
`generic-lines-to-scan' determines the number of lines to look at."
(when (and (eq major-mode 'fundamental-mode)
(or (null generic-ignore-files-regexp)
(not (string-match
generic-ignore-files-regexp
(file-name-sans-versions buffer-file-name)))))
(save-excursion
(goto-char (point-min))
(when (re-search-forward generic-find-file-regexp
(save-excursion
(forward-line generic-lines-to-scan)
(point)) t)
(goto-char (point-min))
(default-generic-mode)))))
(and generic-use-find-file-hook
(add-hook 'find-file-hook 'generic-mode-find-file-hook))
(defconst generic-default-modes
'(apache-conf-generic-mode
apache-log-generic-mode
hosts-generic-mode
java-manifest-generic-mode
java-properties-generic-mode
javascript-generic-mode
show-tabs-generic-mode
vrml-generic-mode)
"List of generic modes that are defined by default.")
(defconst generic-mswindows-modes
'(bat-generic-mode
inf-generic-mode
ini-generic-mode
rc-generic-mode
reg-generic-mode
rul-generic-mode)
"List of generic modes that are defined by default on MS-Windows.")
(defconst generic-unix-modes
'(alias-generic-mode
etc-fstab-generic-mode
etc-modules-conf-generic-mode
etc-passwd-generic-mode
etc-services-generic-mode
fvwm-generic-mode
inetd-conf-generic-mode
mailagent-rules-generic-mode
mailrc-generic-mode
named-boot-generic-mode
named-database-generic-mode
prototype-generic-mode
resolve-conf-generic-mode
samba-generic-mode
x-resource-generic-mode)
"List of generic modes that are defined by default on Unix.")
(defconst generic-other-modes
'(astap-generic-mode
ibis-generic-mode
pkginfo-generic-mode
spice-generic-mode)
"List of generic mode that are not defined by default.")
(defcustom generic-define-mswindows-modes
(memq system-type '(windows-nt ms-dos))
"*Non-nil means the modes in `generic-mswindows-modes' will be defined.
This is a list of MS-Windows specific generic modes. This variable
only effects the default value of `generic-extras-enable-list'."
:group 'generic-x
:type 'boolean
:version "22.1")
(make-obsolete-variable 'generic-define-mswindows-modes 'generic-extras-enable-list "22.1")
(defcustom generic-define-unix-modes
(not (memq system-type '(windows-nt ms-dos)))
"*Non-nil means the modes in `generic-unix-modes' will be defined.
This is a list of Unix specific generic modes. This variable only
effects the default value of `generic-extras-enable-list'."
:group 'generic-x
:type 'boolean
:version "22.1")
(make-obsolete-variable 'generic-define-unix-modes 'generic-extras-enable-list "22.1")
(defcustom generic-extras-enable-list
(append generic-default-modes
(if generic-define-mswindows-modes generic-mswindows-modes)
(if generic-define-unix-modes generic-unix-modes)
nil)
"List of generic modes to define.
Each entry in the list should be a symbol. If you set this variable
directly, without using customize, you must reload generic-x to put
your changes into effect."
:group 'generic-x
:type (let (list)
(dolist (mode
(sort (append generic-default-modes
generic-mswindows-modes
generic-unix-modes
generic-other-modes
nil)
(lambda (a b)
(string< (symbol-name b)
(symbol-name a))))
(cons 'set list))
(push `(const ,mode) list)))
:set (lambda (s v)
(set-default s v)
(unless load-in-progress
(load "generic-x")))
:version "22.1")
(when (memq 'apache-conf-generic-mode generic-extras-enable-list)
(define-generic-mode apache-conf-generic-mode
'(?#)
nil
'(("^\\s-*\\(<.*>\\)" 1 font-lock-constant-face)
("^\\s-*\\(\\sw+\\)\\s-" 1 font-lock-variable-name-face))
'("srm\\.conf\\'" "httpd\\.conf\\'" "access\\.conf\\'")
(list
(function
(lambda ()
(setq imenu-generic-expression
'((nil "^\\([-A-Za-z0-9_]+\\)" 1)
("*Directories*" "^\\s-*<Directory\\s-*\\([^>]+\\)>" 1)
("*Locations*" "^\\s-*<Location\\s-*\\([^>]+\\)>" 1))))))
"Generic mode for Apache or HTTPD configuration files."))
(when (memq 'apache-log-generic-mode generic-extras-enable-list)
(define-generic-mode apache-log-generic-mode
nil
nil
'(("^\\([-a-zA-z0-9.]+\\) - [-A-Za-z]+ \\(\\[.*\\]\\)"
(1 font-lock-constant-face)
(2 font-lock-variable-name-face)))
'("access_log\\'")
nil
"Mode for Apache log files"))
(when (memq 'samba-generic-mode generic-extras-enable-list)
(define-generic-mode samba-generic-mode
'(?\ nil
'(("^\\(\\[.*\\]\\)" 1 font-lock-constant-face)
("^\\s-*\\(.+\\)=\\([^\r\n]*\\)"
(1 font-lock-variable-name-face)
(2 font-lock-type-face)))
'("smb\\.conf\\'")
'(generic-bracket-support)
"Generic mode for Samba configuration files."))
(when (memq 'fvwm-generic-mode generic-extras-enable-list)
(define-generic-mode fvwm-generic-mode
'(?#)
'("AddToMenu"
"AddToFunc"
"ButtonStyle"
"EndFunction"
"EndPopup"
"Function"
"IconPath"
"Key"
"ModulePath"
"Mouse"
"PixmapPath"
"Popup"
"Style")
nil
'("\\.fvwmrc\\'" "\\.fvwm2rc\\'")
nil
"Generic mode for FVWM configuration files."))
(when (memq 'x-resource-generic-mode generic-extras-enable-list)
(define-generic-mode x-resource-generic-mode
'(?!)
nil
'(("^\\([^:\n]+:\\)" 1 font-lock-variable-name-face))
'("\\.Xdefaults\\'" "\\.Xresources\\'" "\\.Xenvironment\\'" "\\.ad\\'")
nil
"Generic mode for X Resource configuration files."))
(when (memq 'hosts-generic-mode generic-extras-enable-list)
(define-generic-mode hosts-generic-mode
'(?#)
'("localhost")
'(("\\([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\\)" 1 font-lock-constant-face))
'("[hH][oO][sS][tT][sS]\\'")
nil
"Generic mode for HOSTS files."))
(when (memq 'inf-generic-mode generic-extras-enable-list)
(define-generic-mode inf-generic-mode
'(?\ nil
'(("^\\(\\[.*\\]\\)" 1 font-lock-constant-face))
'("\\.[iI][nN][fF]\\'")
'(generic-bracket-support)
"Generic mode for MS-Windows INF files."))
(when (memq 'ini-generic-mode generic-extras-enable-list)
(define-generic-mode ini-generic-mode
'(?\ nil
'(("^\\(\\[.*\\]\\)" 1 font-lock-constant-face)
("^\\([^=\n\r]*\\)=\\([^\n\r]*\\)$"
(1 font-lock-function-name-face)
(2 font-lock-variable-name-face)))
'("\\.[iI][nN][iI]\\'")
(list
(function
(lambda ()
(setq imenu-generic-expression
'((nil "^\\[\\(.*\\)\\]" 1)
("*Variables*" "^\\s-*\\([^=]+\\)\\s-*=" 1))))))
"Generic mode for MS-Windows INI files.
You can use `ini-generic-mode-find-file-hook' to enter this mode
automatically for INI files whose names do not end in \".ini\".")
(defun ini-generic-mode-find-file-hook ()
"Hook function to enter Ini-Generic mode automatically for INI files.
Done if the first few lines of a file in Fundamental mode look
like an INI file. You can add this hook to `find-file-hook'."
(and (eq major-mode 'fundamental-mode)
(save-excursion
(goto-char (point-min))
(and (looking-at "^\\s-*\\[.*\\]")
(ini-generic-mode)))))
(defalias 'generic-mode-ini-file-find-file-hook 'ini-generic-mode-find-file-hook))
(when (memq 'reg-generic-mode generic-extras-enable-list)
(define-generic-mode reg-generic-mode
'(?\ '("key" "classes_root" "REGEDIT" "REGEDIT4")
'(("\\(\\[.*\\]\\)" 1 font-lock-constant-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."))
(when (memq 'bat-generic-mode generic-extras-enable-list)
(define-generic-mode bat-generic-mode
nil
nil
(eval-when-compile
(list
'("^[@ \t]*\\([rR][eE][mM][^\n\r]*\\)" 1 font-lock-comment-face t)
'("^[ \t]*\\(::.*\\)" 1 font-lock-comment-face t)
'("^[@ \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 t t))
'("^[@ \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
'("for"
"if")
font-lock-keyword-face "^[@ \t]*")
(generic-make-keywords-list
'("do"
"exist"
"errorlevel"
"goto"
"not")
font-lock-keyword-face)
(generic-make-keywords-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]")
'("^[ \t]*\\(:\\sw+\\)" 1 font-lock-function-name-face t)
'("\\(%\\sw+%\\)" 1 font-lock-variable-name-face t)
'("\\(%[0-9]\\)" 1 font-lock-variable-name-face t)
'("\\(/[^/ \"\t\n]+\\)" 1 font-lock-type-face)
'("[\t ]+\\([+-][^\t\n\" ]+\\)" 1 font-lock-type-face)
'("[ \t\n|]\\<\\([gG][oO][tT][oO]\\)\\>[ \t]*\\(\\sw+\\)?"
(1 font-lock-keyword-face)
(2 font-lock-function-name-face nil t))
'("[ \t\n|]\\<\\([sS][eE][tT]\\)\\>[ \t]*\\(\\sw+\\)?[ \t]*=?"
(1 font-lock-builtin-face)
(2 font-lock-variable-name-face t t))))
'("\\.[bB][aA][tT]\\'"
"\\.[cC][mM][dD]\\'"
"\\`[cC][oO][nN][fF][iI][gG]\\."
"\\`[aA][uU][tT][oO][eE][xX][eE][cC]\\.")
'(generic-bat-mode-setup-function)
"Generic mode for MS-Windows batch files.")
(defvar bat-generic-mode-syntax-table nil
"Syntax table in use in `bat-generic-mode' buffers.")
(defvar bat-generic-mode-keymap (make-sparse-keymap)
"Keymap for bet-generic-mode.")
(defun bat-generic-mode-compile ()
"Run the current BAT file in a compilation buffer."
(interactive)
(let ((compilation-buffer-name-function
(function
(lambda(ign)
(concat "*" (buffer-file-name) "*")))))
(compile
(concat (w32-shell-name) " -c " (buffer-file-name)))))
(eval-when-compile (require 'comint))
(defun bat-generic-mode-run-as-comint ()
"Run the current BAT file in a comint buffer."
(interactive)
(require 'comint)
(let* ((file (buffer-file-name))
(buf-name (concat "*" file "*")))
(save-excursion
(set-buffer
(get-buffer-create buf-name))
(erase-buffer)
(comint-mode)
(comint-exec
buf-name
file
(w32-shell-name)
nil
(list "-c" file))
(display-buffer buf-name))))
(define-key bat-generic-mode-keymap "\C-c\C-c" 'bat-generic-mode-compile)
(unless bat-generic-mode-syntax-table
(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)
(setq font-lock-defaults '(generic-font-lock-keywords nil t))
(use-local-map bat-generic-mode-keymap)))
(when (memq 'mailagent-rules-generic-mode generic-extras-enable-list)
(define-generic-mode mailagent-rules-generic-mode
'(?#)
'("SAVE" "DELETE" "PIPE" "ANNOTATE" "REJECT")
'(("^\\(\\sw+\\)\\s-*=" 1 font-lock-variable-name-face)
("\\s-/\\([^/]+\\)/[i, \t\n]" 1 font-lock-constant-face))
'("\\.rules\\'")
(list
(function
(lambda ()
(setq imenu-generic-expression
'((nil "\\s-/\\([^/]+\\)/[i, \t\n]" 1))))))
"Mode for Mailagent rules files."))
(when (memq 'prototype-generic-mode generic-extras-enable-list)
(define-generic-mode prototype-generic-mode
'(?#)
nil
'(("^\\([0-9]\\)?\\s-*\\([a-z]\\)\\s-+\\([A-Za-z_]+\\)\\s-+\\([^\n\r]*\\)$"
(2 font-lock-constant-face)
(3 font-lock-keyword-face))
("^\\([a-z]\\) \\([A-Za-z_]+\\)=\\([^\n\r]*\\)$"
(1 font-lock-constant-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)))
'("prototype\\'")
nil
"Mode for Sys V prototype files."))
(when (memq 'pkginfo-generic-mode generic-extras-enable-list)
(define-generic-mode pkginfo-generic-mode
'(?#)
nil
'(("^\\([A-Za-z_]+\\)=\\([^\n\r]*\\)$"
(1 font-lock-keyword-face)
(2 font-lock-variable-name-face)))
'("pkginfo\\'")
nil
"Mode for Sys V pkginfo files."))
(when (memq 'javascript-generic-mode generic-extras-enable-list)
(define-generic-mode javascript-generic-mode
'("//" ("/*" . "*/"))
'("break"
"case"
"continue"
"default"
"delete"
"do"
"else"
"export"
"for"
"function"
"if"
"import"
"in"
"new"
"return"
"switch"
"this"
"typeof"
"var"
"void"
"while"
"with"
"catch"
"class"
"const"
"debugger"
"enum"
"extends"
"finally"
"super"
"throw"
"try"
"abstract"
"boolean"
"byte"
"char"
"double"
"false"
"final"
"float"
"goto"
"implements"
"instanceof"
"int"
"interface"
"long"
"native"
"null"
"package"
"private"
"protected"
"public"
"short"
"static"
"synchronized"
"throws"
"transient"
"true")
'(("^\\s-*function\\s-+\\([A-Za-z0-9_]+\\)"
(1 font-lock-function-name-face))
("^\\s-*var\\s-+\\([A-Za-z0-9_]+\\)"
(1 font-lock-variable-name-face)))
'("\\.js\\'")
(list
(function
(lambda ()
(setq imenu-generic-expression
'((nil "^function\\s-+\\([A-Za-z0-9_]+\\)" 1)
("*Variables*" "^var\\s-+\\([A-Za-z0-9_]+\\)" 1))))))
"Mode for JavaScript files."))
(when (memq 'vrml-generic-mode generic-extras-enable-list)
(define-generic-mode vrml-generic-mode
'(?#)
'("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")
'(("USE\\s-+\\([-A-Za-z0-9_]+\\)"
(1 font-lock-constant-face))
("DEF\\s-+\\([-A-Za-z0-9_]+\\)\\s-+\\([A-Za-z0-9]+\\)\\s-*{"
(1 font-lock-type-face)
(2 font-lock-constant-face))
("^\\s-*\\([-A-Za-z0-9_]+\\)\\s-*{"
(1 font-lock-function-name-face))
("^\\s-*\\(geometry\\|appearance\\|material\\)\\s-+\\([-A-Za-z0-9_]+\\)"
(2 font-lock-variable-name-face)))
'("\\.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."))
(when (memq 'java-manifest-generic-mode generic-extras-enable-list)
(define-generic-mode java-manifest-generic-mode
'(?#)
'("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-constant-face)))
'("[mM][aA][nN][iI][fF][eE][sS][tT]\\.[mM][fF]\\'")
nil
"Mode for Java Manifest files"))
(when (memq 'java-properties-generic-mode generic-extras-enable-list)
(define-generic-mode java-properties-generic-mode
'(?! ?#)
nil
(eval-when-compile
(let ((java-properties-key
"\\(\\([-A-Za-z0-9_\\./]\\|\\(\\\\[ =:]\\)\\)+\\)")
(java-properties-value
"\\([^\r\n]*\\)"))
(mapcar
(function
(lambda (elt)
(list
(concat "^" java-properties-key elt java-properties-value "$")
'(1 font-lock-constant-face)
'(4 font-lock-variable-name-face))))
'(":\\s-*" "\\s-+" "\\s-*=\\s-*"))))
nil
(list
(function
(lambda ()
(setq imenu-generic-expression
'((nil "^\\([^#! \t\n\r=:]+\\)" 1))))))
"Mode for Java properties files."))
(when (memq 'alias-generic-mode generic-extras-enable-list)
(define-generic-mode alias-generic-mode
'(?#)
'("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)))
'("alias\\'")
(list
(function
(lambda ()
(setq imenu-generic-expression
'((nil "^\\(alias\\|unalias\\)\\s-+\\([-a-zA-Z0-9_]+\\)" 2))))))
"Mode for C Shell alias files."))
(when (memq 'rc-generic-mode generic-extras-enable-list)
(define-generic-mode rc-generic-mode
'("//")
'("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")
(eval-when-compile
(list
(generic-make-keywords-list
'("FILEFLAGSMASK"
"FILEFLAGS"
"FILEOS"
"FILESUBTYPE"
"FILETYPE"
"FILEVERSION"
"PRODUCTVERSION")
font-lock-type-face)
(generic-make-keywords-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-constant-face)
(2 font-lock-variable-name-face nil t)))
'("^#[ \t]*\\(\\sw+\\)\\>[ \t]*\\(\\sw+\\)?"
(1 font-lock-constant-face)
(2 font-lock-variable-name-face nil t))))
'("\\.[rR][cC]\\'")
nil
"Generic mode for MS-Windows Resource files."))
(when (memq 'rul-generic-mode generic-extras-enable-list)
(eval-when-compile
(defconst installshield-statement-keyword-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.")
(defconst installshield-system-functions-list
'("AddFolderIcon"
"AddProfString"
"AddressString"
"AppCommand"
"AskDestPath"
"AskOptions"
"AskPath"
"AskText"
"AskYesNo"
"BatchDeleteEx"
"BatchFileLoad"
"BatchFileSave"
"BatchFind"
"BatchGetFileName"
"BatchMoveEx"
"BatchSetFileName"
"ChangeDirectory"
"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"
"GetProfInt"
"GetProfString"
"GetSystemInfo"
"GetValidDrivesList"
"GetVersion"
"GetWindowHandle"
"InstallationInfo"
"Is"
"LaunchApp"
"LaunchAppAndWait"
"ListAddItem"
"ListAddString"
"ListCount"
"ListCreate"
"ListDestroy"
"ListFindItem"
"ListFindString"
"ListGetFirstItem"
"ListGetFirstString"
"ListGetNextItem"
"ListGetNextString"
"ListReadFromFile"
"ListSetCurrentItem"
"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"
"StrToNum"
"StrToUpper"
"StrSub"
"VarRestore"
"VarSave"
"VerCompare"
"VerGetFileVersion"
"WaitOnDialog"
"Welcome"
"WriteLine"
"WriteProfString"
"XCopyFile")
"System functions defined in InstallShield 3 and 5.")
(defconst installshield-system-variables-list
'("BATCH_INSTALL"
"CMDLINE"
"COMMONFILES"
"CORECOMPONENTHANDLING"
"DIALOGCACHE"
"ERRORFILENAME"
"FOLDER_DESKTOP"
"FOLDER_PROGRAMS"
"FOLDER_STARTMENU"
"FOLDER_STARTUP"
"INFOFILENAME"
"ISRES"
"ISUSER"
"ISVERSION"
"MEDIA"
"MODE"
"PROGRAMFILES"
"SELECTED_LANGUAGE"
"SRCDIR"
"SRCDISK"
"SUPPORTDIR"
"TARGETDIR"
"TARGETDISK"
"UNINST"
"WINDIR"
"WINDISK"
"WINMAJOR"
"WINSYSDIR"
"WINSYSDISK")
"System variables used in InstallShield 3 and 5.")
(defconst installshield-types-list
'("BOOL"
"BYREF"
"CHAR"
"HIWORD"
"HWND"
"INT"
"LIST"
"LONG"
"LOWORD"
"LPSTR"
"NUMBER"
"NUMBERLIST"
"POINTER"
"QUAD"
"RGB"
"SHORT"
"STRINGLIST"
"STRING")
"Type keywords used in InstallShield 3 and 5.")
(defconst installshield-funarg-constants-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_PROGRAMS"
"FOLDER_STARTMENU"
"FOLDER_STARTUP"
"FREEENVSPACE"
"FULLWINDOWMODE"
"FULL"
"FONT_TITLE"
"GREATER_THAN"
"GREEN"
"HKEY_CLASSES_ROOT"
"HKEY_CURRENT_USER"
"HKEY_LOCAL_MACHINE"
"HKEY_USERS"
"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"
"SYS_BOOTMACHINE"
"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."))
(defvar rul-generic-mode-syntax-table nil
"Syntax table to use in `rul-generic-mode' buffers.")
(setq rul-generic-mode-syntax-table
(make-syntax-table c++-mode-syntax-table))
(modify-syntax-entry ?\r "> b" rul-generic-mode-syntax-table)
(modify-syntax-entry ?\n "> b" rul-generic-mode-syntax-table)
(modify-syntax-entry ?/ ". 124b" rul-generic-mode-syntax-table)
(modify-syntax-entry ?* ". 23" rul-generic-mode-syntax-table)
(defun generic-rul-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 "^function\\s-+\\([A-Za-z0-9_]+\\)" 1))
parse-sexp-ignore-comments t
comment-end "*/"
comment-start "/*"
)
(setq font-lock-syntax-table rul-generic-mode-syntax-table))
(define-generic-mode rul-generic-mode
'("//" ("/*" . "*/" ))
(eval-when-compile installshield-statement-keyword-list)
(eval-when-compile
(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 "[^_]" "[^_]"))) '("\\.[rR][uU][lL]\\'")
'(generic-rul-mode-setup-function)
"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;"))
(when (memq 'mailrc-generic-mode generic-extras-enable-list)
(define-generic-mode mailrc-generic-mode
'(?#)
'("alias"
"else"
"endif"
"group"
"if"
"ignore"
"set"
"source"
"unset")
'(("^\\s-*\\(alias\\|group\\)\\s-+\\([-A-Za-z0-9_]+\\)\\s-+\\([^\n\r#]*\\)\\(#.*\\)?$"
(2 font-lock-constant-face)
(3 font-lock-variable-name-face))
("^\\s-*\\(unset\\|set\\|ignore\\)\\s-+\\([-A-Za-z0-9_]+\\)=?\\([^\n\r#]*\\)\\(#.*\\)?$"
(2 font-lock-constant-face)
(3 font-lock-variable-name-face))
("^\\s-*\\(source\\)\\s-+\\([^\n\r#]*\\)\\(#.*\\)?$"
(2 font-lock-variable-name-face)))
'("\\.mailrc\\'")
nil
"Mode for mailrc files."))
(when (memq 'inetd-conf-generic-mode generic-extras-enable-list)
(define-generic-mode inetd-conf-generic-mode
'(?#)
'("stream"
"dgram"
"tcp"
"udp"
"wait"
"nowait"
"internal")
'(("^\\([-A-Za-z0-9_]+\\)" 1 font-lock-type-face))
'("/etc/inetd.conf\\'")
(list
(function
(lambda ()
(setq imenu-generic-expression
'((nil "^\\([-A-Za-z0-9_]+\\)" 1))))))))
(when (memq 'etc-services-generic-mode generic-extras-enable-list)
(define-generic-mode etc-services-generic-mode
'(?#)
'("tcp"
"udp"
"ddp")
'(("^\\([-A-Za-z0-9_]+\\)\\s-+\\([0-9]+\\)/"
(1 font-lock-type-face)
(2 font-lock-variable-name-face)))
'("/etc/services\\'")
(list
(function
(lambda ()
(setq imenu-generic-expression
'((nil "^\\([-A-Za-z0-9_]+\\)" 1))))))))
(when (memq 'etc-passwd-generic-mode generic-extras-enable-list)
(define-generic-mode etc-passwd-generic-mode
nil '("root") (eval-when-compile
(list
(list
(concat
"^"
"\\([^:]+\\)"
":"
(mapconcat
'identity
(make-list 3 "\\([^:]+\\)")
":")
":"
"\\([^:]*\\)"
":"
"\\([^:]+\\)"
":?"
"\\([^:]*\\)"
"$")
'(1 font-lock-type-face)
'(5 font-lock-variable-name-face)
'(6 font-lock-constant-face)
'(7 font-lock-warning-face))
'("^\\([^:]+\\):\\([^:]*\\):\\([0-9]+\\):\\(.*\\)$"
(1 font-lock-type-face)
(4 font-lock-variable-name-face))))
'("/etc/passwd\\'" "/etc/group\\'")
(list
(function
(lambda ()
(setq imenu-generic-expression
'((nil "^\\([-A-Za-z0-9_]+\\):" 1))))))))
(when (memq 'etc-fstab-generic-mode generic-extras-enable-list)
(define-generic-mode etc-fstab-generic-mode
'(?#)
'("adfs"
"affs"
"autofs"
"coda"
"coherent"
"cramfs"
"devpts"
"efs"
"ext2"
"ext3"
"hfs"
"hpfs"
"iso9660"
"jfs"
"minix"
"msdos"
"ncpfs"
"nfs"
"ntfs"
"proc"
"qnx4"
"reiserfs"
"romfs"
"smbfs"
"cifs"
"usbdevfs"
"sysv"
"tmpfs"
"udf"
"ufs"
"umsdos"
"vfat"
"xenix"
"xfs"
"swap"
"auto"
"ignore")
'(("^\\([^# \t]+\\)\\s-+\\([^# \t]+\\)"
(1 font-lock-type-face t)
(2 font-lock-variable-name-face t)))
'("/etc/[v]*fstab\\'")
(list
(function
(lambda ()
(setq imenu-generic-expression
'((nil "^\\([^# \t]+\\)\\s-+" 1))))))))
(when (memq 'show-tabs-generic-mode generic-extras-enable-list)
(eval-when-compile
(defconst show-tabs-generic-mode-font-lock-defaults-1
'( ("[ \t]+$" . 'show-tabs-space)
("[^\n\t]\\(\t+\\)" (1 'show-tabs-tab))))
(defconst show-tabs-generic-mode-font-lock-defaults-2
'( ("[ \t]+$" . 'show-tabs-space)
("\t+" . 'show-tabs-tab))))
(defface show-tabs-tab
'((((class grayscale) (background light)) (:background "DimGray" :weight bold))
(((class grayscale) (background dark)) (:background "LightGray" :weight bold))
(((class color) (min-colors 88)) (:background "red1"))
(((class color)) (:background "red"))
(t (:weight bold)))
"Font Lock mode face used to highlight TABs."
:group 'generic-x)
(put 'show-tabs-tab-face 'face-alias 'show-tabs-tab)
(defface show-tabs-space
'((((class grayscale) (background light)) (:background "DimGray" :weight bold))
(((class grayscale) (background dark)) (:background "LightGray" :weight bold))
(((class color) (min-colors 88)) (:background "yellow1"))
(((class color)) (:background "yellow"))
(t (:weight bold)))
"Font Lock mode face used to highlight spaces."
:group 'generic-x)
(put 'show-tabs-space-face 'face-alias 'show-tabs-space)
(define-generic-mode show-tabs-generic-mode
nil nil (eval-when-compile show-tabs-generic-mode-font-lock-defaults-1)
nil nil
"Generic mode to show tabs and trailing spaces"))
(when (memq 'named-boot-generic-mode generic-extras-enable-list)
(define-generic-mode named-boot-generic-mode
'(?\ '("cache" "primary" "secondary" "forwarders" "limit" "options"
"directory" "check-names")
'(("\\([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\\)" 1 font-lock-constant-face)
("^directory\\s-+\\(.*\\)" 1 font-lock-variable-name-face)
("^\\(primary\\|cache\\)\\s-+\\([.A-Za-z]+\\)\\s-+\\(.*\\)"
(2 font-lock-variable-name-face)
(3 font-lock-constant-face)))
'("/etc/named.boot\\'")
nil))
(when (memq 'named-database-generic-mode generic-extras-enable-list)
(define-generic-mode named-database-generic-mode
'(?\ '("IN" "NS" "CNAME" "SOA" "PTR" "MX" "A")
'(("\\([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\\)" 1 font-lock-constant-face)
("^\\([.A-Za-z0-9]+\\)" 1 font-lock-variable-name-face))
nil
nil)
(defvar named-database-time-string "%Y%m%d%H"
"Timestring for named serial numbers.")
(defun named-database-print-serial ()
"Print a serial number based on the current date."
(interactive)
(insert (format-time-string named-database-time-string (current-time)))))
(when (memq 'resolve-conf-generic-mode generic-extras-enable-list)
(define-generic-mode resolve-conf-generic-mode
'(?#)
'("nameserver" "domain" "search" "sortlist" "options")
nil
'("/etc/resolv[e]?.conf\\'")
nil))
(when (memq 'spice-generic-mode generic-extras-enable-list)
(define-generic-mode spice-generic-mode
nil
'("and"
"cccs"
"ccvs"
"delay"
"nand"
"nor"
"npwl"
"or"
"par"
"ppwl"
"pwl"
"vccap"
"vccs"
"vcr"
"vcvs")
'(("^\\s-*\\([*].*\\)" 1 font-lock-comment-face)
(" \\(\\$ .*\\)$" 1 font-lock-comment-face)
("^\\(\\$ .*\\)$" 1 font-lock-comment-face)
("\\([*].*\\)" 1 font-lock-comment-face)
("^\\([+]\\)" 1 font-lock-string-face)
("^\\s-*\\([.]\\w+\\>\\)" 1 font-lock-keyword-face)
("\\(\\([.]\\|_\\|\\w\\)+\\)\\s-*=" 1 font-lock-variable-name-face)
("\\('[^']+'\\)" 1 font-lock-string-face)
("\\(\"[^\"]+\"\\)" 1 font-lock-string-face))
'("\\.[sS][pP]\\'"
"\\.[sS][pP][iI]\\'"
"\\.[sS][pP][iI][cC][eE]\\'"
"\\.[iI][nN][cC]\\'")
(list
'generic-bracket-support
(function
(lambda()
(setq font-lock-defaults '(generic-font-lock-keywords nil t)))))
"Generic mode for SPICE circuit netlist files."))
(when (memq 'ibis-generic-mode generic-extras-enable-list)
(define-generic-mode ibis-generic-mode
'(?|)
nil
'(("[[]\\([^]]*\\)[]]" 1 font-lock-keyword-face)
("\\(\\(_\\|\\w\\)+\\)\\s-*=" 1 font-lock-variable-name-face))
'("\\.[iI][bB][sS]\\'")
'(generic-bracket-support)
"Generic mode for IBIS circuit netlist files."))
(when (memq 'astap-generic-mode generic-extras-enable-list)
(define-generic-mode astap-generic-mode
nil
'("analyze"
"description"
"elements"
"execution"
"features"
"functions"
"ground"
"model"
"outputs"
"print"
"run"
"controls"
"table")
'(("^\\s-*\\([*].*\\)" 1 font-lock-comment-face)
(";\\s-*\\([*].*\\)" 1 font-lock-comment-face)
("^\\s-*\\([.]\\w+\\>\\)" 1 font-lock-keyword-face)
("\\('[^']+'\\)" 1 font-lock-string-face)
("\\(\"[^\"]+\"\\)" 1 font-lock-string-face)
("[(,]\\s-*\\(\\([.]\\|_\\|\\w\\)+\\)\\s-*=" 1 font-lock-variable-name-face))
'("\\.[aA][pP]\\'"
"\\.[aA][sS][xX]\\'"
"\\.[aA][sS][tT][aA][pP]\\'"
"\\.[pP][sS][pP]\\'"
"\\.[dD][eE][cC][kK]\\'"
"\\.[gG][oO][dD][aA][tT][aA]")
(list
'generic-bracket-support
(function
(lambda()
(setq font-lock-defaults '(generic-font-lock-keywords nil t)))))
"Generic mode for ASTAP circuit netlist files."))
(when (memq 'etc-modules-conf-generic-mode generic-extras-enable-list)
(define-generic-mode etc-modules-conf-generic-mode
'(?#)
'("above"
"alias"
"below"
"define"
"depfile"
"else"
"elseif"
"endif"
"if"
"include"
"insmod_opt"
"install"
"keep"
"options"
"path"
"generic_stringfile"
"pcimapfile"
"isapnpmapfile"
"usbmapfile"
"parportmapfile"
"ieee1394mapfile"
"pnpbiosmapfile"
"probe"
"probeall"
"prune"
"post-install"
"post-remove"
"pre-install"
"pre-remove"
"remove"
"persistdir")
nil
'("/etc/modules.conf" "/etc/conf.modules")
nil))
(provide 'generic-x)