;;; Commentary:
;;
;; This file contains some pre-defined generic-modes.
-;;
+;;
;; INSTALLATION:
;;
;; Add this line to your .emacs file:
;; `generic-extras-enable-list'. Some platform-specific modes are
;; affected by the variables `generic-define-mswindows-modes' and
;; `generic-define-unix-modes' (which see).
-;;
+;;
;; You can also send in new modes; if the file types a reasonably common,
;; we would like to install them.
;;
;; Love]
;;
;; From Anders Lindgren <andersl@csd.uu.se>
-;;
+;;
;; Problem summary: Wayne Adams has found a problem when using folding
;; mode in conjuction with font-lock for a mode defined in
;; `generic-x.el'.
;;
;; The problem, as Wayne described it, was that error messages of the
;; following form appeared when both font-lock and folding are used:
-;;
+;;
;; > - various msgs including "Fontifying region...(error Stack
;; > overflow in regexp matcher)" appear
-;;
+;;
;; I have just tracked down the cause of the problem. The regexp:s in
;; `generic-x.el' does not take into account the way that folding
;; hides sections of the buffer. The technique is known as
;; started using it back in the good old' Emacs 18 days). Basically, a
;; section is hidden by creating one very long line were the newline
;; character (C-j) is replaced by a linefeed (C-m) character.
-;;
+;;
;; Many other hiding packages, besides folding, use the same technique,
;; the problem should occur when using them as well.
-;;
+;;
;; The erroronous lines in `generic-extras' look like the following (this
;; example is from the `ini' section):
-;;
-;; '(("^\\(\\[.*\\]\\)" 1 'font-lock-reference-face)
+;;
+;; '(("^\\(\\[.*\\]\\)" 1 'font-lock-constant-face)
;; ("^\\(.*\\)=" 1 'font-lock-variable-name-face)
-;;
+;;
;; The intention of these lines is to highlight lines of the following
;; form:
-;;
+;;
;; [foo]
;; bar = xxx
-;;
+;;
;; However, since the `.' regexp symbol match the linefeed character the
;; entire folded section is searched, resulting in a regexp stack
;; overflow.
-;;
+;;
;; Solution suggestion 2: Instead of using ".", use the sequence
;; "[^\n\r]". This will make the rules behave just as before, but they
;; will work together with selective-display.
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,
+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)
+ :type '(repeat sexp)
)
-(defcustom generic-define-mswindows-modes
+(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
(and generic-define-mswindows-modes
(setq generic-extras-enable-list
- (append (list 'bat-generic-mode 'ini-generic-mode
- 'inf-generic-mode 'rc-generic-mode
+ (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)
+ 'hosts-generic-mode
+ 'apache-conf-generic-mode
+ 'apache-log-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
+ (append (list 'apache-conf-generic-mode
+ 'apache-log-generic-mode
+ 'samba-generic-mode
+ 'hosts-generic-mode 'fvwm-generic-mode
+ 'x-resource-generic-mode
'alias-generic-mode
'inetd-conf-generic-mode
'etc-services-generic-mode
'etc-passwd-generic-mode
+ 'etc-fstab-generic-mode
)
generic-extras-enable-list)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Apache
-(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))
+(and
+ (memq 'apache-conf-generic-mode generic-extras-enable-list)
+
+(define-generic-mode 'apache-conf-generic-mode
+ (list ?#)
+ nil
+ '(("^\\(<.*>\\)" 1 'font-lock-constant-face)
+ ("^\\(\\sw+\\)\\s-" 1 'font-lock-variable-name-face))
(list "srm\\.conf\\'" "httpd\\.conf\\'" "access\\.conf\\'")
- (list
+ (list
(function
(lambda ()
- (setq imenu-generic-expression
- '((nil "^\\([-A-Za-z0-9_]+\\)" 1)))
+ (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."))
-
+
+(and
+ (memq 'apache-log-generic-mode generic-extras-enable-list)
+
+(define-generic-mode 'apache-log-generic-mode
+ nil
+ nil
+ ;; Hostname ? user date request return-code number-of-bytes
+ '(("^\\([-a-zA-z0-9.]+\\) - [-A-Za-z]+ \\(\\[.*\\]\\)"
+ (1 font-lock-constant-face)
+ (2 font-lock-variable-name-face))
+ )
+ (list "access_log\\'")
+ nil
+ "Mode for Apache log files"))
+
;;; Samba
-(and
+(and
(memq 'samba-generic-mode generic-extras-enable-list)
(define-generic-mode 'samba-generic-mode
(list ?\; ?#)
nil
'(
- ("^\\(\\[.*\\]\\)" 1 'font-lock-reference-face)
+ ("^\\(\\[.*\\]\\)" 1 'font-lock-constant-face)
("^\\s-*\\(.+\\)=\\([^\r\n]*\\)"
(1 'font-lock-variable-name-face)
(2 'font-lock-type-face))
;;; Fvwm
;; This is pretty basic. Also, modes for other window managers could
;; be defined as well.
-(and
+(and
(memq 'fvwm-generic-mode generic-extras-enable-list)
(define-generic-mode 'fvwm-generic-mode
(list ?#)
- (list
+ (list
"AddToMenu"
"AddToFunc"
"ButtonStyle"
- "EndFunction"
+ "EndFunction"
"EndPopup"
- "Function"
+ "Function"
"IconPath"
"Key"
"ModulePath"
"Mouse"
"PixmapPath"
- "Popup"
- "Style"
+ "Popup"
+ "Style"
)
nil
(list "\\.fvwmrc\\'" "\\.fvwm2rc\\'")
;;; X Resource
;; I'm pretty sure I've seen an actual mode to do this, but I don't
;; think it's standard with Emacs
-(and
+(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\\'")
+ (list "\\.Xdefaults\\'" "\\.Xresources\\'" "\\.Xenvironment\\'" "\\.ad\\'")
nil
"Generic mode for X Resource configuration files."))
;;; Hosts
-(and
+(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))
+ '(("\\([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\\)" 1 'font-lock-constant-face))
(list "[hH][oO][sS][tT][sS]\\'")
nil
"Generic mode for HOSTS files."))
;;; Windows INF files
-(and
+(and
(memq 'inf-generic-mode generic-extras-enable-list)
(define-generic-mode 'inf-generic-mode
(list ?\;)
- nil
- '(("^\\(\\[.*\\]\\)" 1 'font-lock-reference-face))
+ nil
+ '(("^\\(\\[.*\\]\\)" 1 'font-lock-constant-face))
(list "\\.[iI][nN][fF]\\'")
(list 'generic-bracket-support)
"Generic mode for MS-Windows INF files."))
;;; Windows INI files
;; Should define escape character as well!
-(and
+(and
(memq 'ini-generic-mode generic-extras-enable-list)
(define-generic-mode 'ini-generic-mode
(list ?\;)
nil
- '(("^\\(\\[.*\\]\\)" 1 'font-lock-reference-face)
+ '(("^\\(\\[.*\\]\\)" 1 'font-lock-constant-face)
("^\\([^=\n\r]*\\)=\\([^\n\r]*\\)$"
(1 font-lock-function-name-face)
(2 font-lock-variable-name-face)))
(list "\\.[iI][nN][iI]\\'")
- (list
+ (list
(function
(lambda ()
- (setq imenu-generic-expression
+ (setq imenu-generic-expression
'((nil "^\\[\\(.*\\)\\]" 1)
("*Variables*" "^\\s-*\\([^=]+\\)\\s-*=" 1)))
)))
;;; Windows REG files
;;; Unfortunately, Windows 95 and Windows NT have different REG file syntax!
-(and
+(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)
+ '(("\\(\\[.*]\\)" 1 'font-lock-constant-face)
("^\\([^\n\r]*\\)\\s-*=" 1 'font-lock-variable-name-face))
'("\\.[rR][eE][gG]\\'")
- (list
+ (list
(function
(lambda ()
- (setq imenu-generic-expression
+ (setq imenu-generic-expression
'((nil "^\\s-*\\(.*\\)\\s-*=" 1))))))
"Generic mode for MS-Windows Registry files."))
(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+\\)?"
+ (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]\\'"
(defvar bat-generic-mode-syntax-table nil
"Syntax table in use in bat-generic-mode buffers.")
-
+
;; Make underscores count as words
(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))
-
+
;; bat-generic-mode doesn't use the comment functionality of generic-mode
;; because it has a three-letter comment-string, so we do it
;; here manually instead
;;; Mailagent
;; Mailagent is a Unix mail filtering program. Anyone wanna do a generic mode
;; for procmail?
-(and
+(and
(memq 'mailagent-rules-generic-mode generic-extras-enable-list)
(define-generic-mode 'mailagent-rules-generic-mode
- (list ?#)
+ (list ?#)
(list "SAVE" "DELETE" "PIPE" "ANNOTATE" "REJECT")
'(("^\\(\\sw+\\)\\s-*=" 1 'font-lock-variable-name-face)
- ("\\s-/\\([^/]+\\)/[i, \t\n]" 1 'font-lock-reference-face))
+ ("\\s-/\\([^/]+\\)/[i, \t\n]" 1 'font-lock-constant-face))
(list "\\.rules\\'")
(list 'mailagent-rules-setup-function)
"Mode for Mailagent rules files.")
-
-(defun mailagent-rules-setup-function ()
+
+(defun mailagent-rules-setup-function ()
(make-local-variable 'imenu-generic-expression)
- (setq imenu-generic-expression
+ (setq imenu-generic-expression
'((nil "\\s-/\\([^/]+\\)/[i, \t\n]" 1))))
)
;; Solaris/Sys V prototype files
-(and
+(and
(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-reference-face)
+ (2 font-lock-constant-face)
(3 font-lock-keyword-face))
("^\\([a-z]\\) \\([A-Za-z_]+\\)=\\([^\n\r]*\\)$"
- (1 font-lock-reference-face)
+ (1 font-lock-constant-face)
(2 font-lock-keyword-face)
(3 font-lock-variable-name-face))
("^\\(!\\s-*\\(search\\|include\\|default\\)\\)\\s-*\\([^\n\r]*\\)$"
"Mode for Sys V prototype files."))
;; Solaris/Sys V pkginfo files
-(and
+(and
(memq 'pkginfo-generic-mode generic-extras-enable-list)
(define-generic-mode 'pkginfo-generic-mode
"Mode for Sys V pkginfo files."))
;; Javascript mode
+;; Includes extra keywords from Armando Singer [asinger@MAIL.COLGATE.EDU]
(define-generic-mode 'javascript-generic-mode
(list "//")
(list
- "document"
+ "break"
+ "case"
+ "continue"
+ "default"
+ "delete"
+ "do"
"else"
- "function"
+ "export"
+ "for"
"function"
"if"
- "then"
+ "import"
+ "in"
+ "new"
+ "return"
+ "switch"
+ "this"
+ "typeof"
"var"
+ "void"
+ "while"
+ "with"
+ ;; words reserved for ECMA extensions below
+ "catch"
+ "class"
+ "const"
+ "debugger"
+ "enum"
+ "extends"
+ "finally"
+ "super"
+ "throw"
+ "try"
+ ;; Java Keywords reserved by JavaScript
+ "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"
)
(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 "^\\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
+ (function
(lambda ()
- (setq imenu-generic-expression
- '((nil "^function\\s-+\\([A-Za-z0-9_]+\\)" 1)))
+ (setq imenu-generic-expression
+ '((nil "^function\\s-+\\([A-Za-z0-9_]+\\)" 1)
+ ("*Variables*" "^var\\s-+\\([A-Za-z0-9_]+\\)" 1)
+ ))
)))
"Mode for JavaScript files.")
)
(list
(list "USE\\s-+\\([-A-Za-z0-9_]+\\)"
- '(1 font-lock-reference-face))
+ '(1 font-lock-constant-face))
(list "DEF\\s-+\\([-A-Za-z0-9_]+\\)\\s-+\\([A-Za-z0-9]+\\)\\s-*{"
'(1 font-lock-type-face)
- '(2 font-lock-reference-face))
+ '(2 font-lock-constant-face))
(list "^\\s-*\\([-A-Za-z0-9_]+\\)\\s-*{"
'(1 font-lock-function-name-face))
- (list
+ (list
"^\\s-*\\(geometry\\|appearance\\|material\\)\\s-+\\([-A-Za-z0-9_]+\\)"
'(2 font-lock-variable-name-face))
)
(list "\\.wrl\\'")
(list
- (function
+ (function
(lambda ()
- (setq imenu-generic-expression
+ (setq imenu-generic-expression
'((nil "^\\([A-Za-z0-9_]+\\)\\s-*{" 1)
- ("*Definitions*"
+ ("*Definitions*"
"DEF\\s-+\\([-A-Za-z0-9_]+\\)\\s-+\\([A-Za-z0-9]+\\)\\s-*{"
1)))
)))
;; Java Manifests
(define-generic-mode 'java-manifest-generic-mode
(list ?#)
- (list
- "Name"
- "Digest-Algorithms"
- "Manifest-Version"
- "Required-Version"
+ (list
+ "Name"
+ "Digest-Algorithms"
+ "Manifest-Version"
+ "Required-Version"
"Signature-Version"
"Magic"
"Java-Bean"
'(("^Name:\\s-+\\([^\n\r]*\\)$"
(1 font-lock-variable-name-face))
("^\\(Manifest\\|Required\\|Signature\\)-Version:\\s-+\\([^\n\r]*\\)$"
- (2 font-lock-reference-face))
+ (2 font-lock-constant-face))
)
- (list "manifest\\.mf\\'")
+ (list "[mM][aA][nN][iI][fF][eE][sS][tT]\\.[mM][fF]\\'")
nil
"Mode for Java Manifest files")
(define-generic-mode 'java-properties-generic-mode
(list ?! ?#)
nil
- (let ((java-properties-key
+ (let ((java-properties-key
"\\(\\([-A-Za-z0-9_\\./]\\|\\(\\\\[ =:]\\)\\)+\\)")
- (java-properties-value
+ (java-properties-value
"\\([^\r\n]*\\)")
)
;; Property and value can be separated in a number of different ways:
;; * an equal sign
;; * a colon
(mapcar
- (function
+ (function
(lambda (elt)
- (list
+ (list
(concat "^" java-properties-key elt java-properties-value "$")
- '(1 font-lock-reference-face)
+ '(1 font-lock-constant-face)
'(4 font-lock-variable-name-face)
)))
;; These are the separators
- (list ":\\s-+" "\\s-+" "\\s-*=\\s-*")
+ (list ":\\s-*" "\\s-+" "\\s-*=\\s-*")
)
)
nil
(list
(function
(lambda ()
- (setq imenu-generic-expression
+ (setq imenu-generic-expression
'((nil "^\\([^#! \t\n\r=:]+\\)" 1)))
- )))
+ )))
"Mode for Java properties files.")
;; C shell alias definitions
-(and
+(and
(memq 'alias-generic-mode generic-extras-enable-list)
(define-generic-mode 'alias-generic-mode
(list
(function
(lambda ()
- (setq imenu-generic-expression
+ (setq imenu-generic-expression
'((nil "^\\(alias\\|unalias\\)\\s-+\\([-a-zA-Z0-9_]+\\)" 2)))
)))
"Mode for C Shell alias files.")
;;; Windows RC files
;; Contributed by ACorreir@pervasive-sw.com (Alfred Correira)
-(and
+(and
(memq 'rc-generic-mode generic-extras-enable-list)
(define-generic-mode 'rc-generic-mode
"LEFTMARGIN"
"LISTBOX"
"LTEXT"
- "MENUITEM SEPARATOR"
- "MENUITEM"
+ "MENUITEM SEPARATOR"
+ "MENUITEM"
"MENU"
"MOVEABLE"
"POPUP"
'("^#[ \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)))
+ (1 font-lock-constant-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)))
+ (1 font-lock-constant-face) (2 font-lock-variable-name-face nil t)))
(list "\\.[rR][cC]$")
nil
"Generic mode for MS-Windows Resource files."))
;; InstallShield RUL files
;; Contributed by Alfred.Correira@Pervasive.Com
-(and
+(and
(memq 'rul-generic-mode generic-extras-enable-list)
;;; build the regexp strings using regexp-opt
(defvar installshield-statement-keyword-list
"BatchGetFileName"
"BatchMoveEx"
"BatchSetFileName"
+ "ChangeDirectory"
"CloseFile"
"CmdGetHwndDlg"
"ComponentAddItem" ; differs between IS3 and IS5
"GetExtents"
"GetFileInfo"
"GetLine"
+ "GetProfInt"
"GetProfString"
"GetSystemInfo"
"GetValidDrivesList"
"InstallationInfo"
"Is"
"LaunchApp"
+ "LaunchAppAndWait"
"ListAddItem"
"ListAddString"
"ListCount"
"ListGetNextItem"
"ListGetNextString"
"ListReadFromFile"
+ "ListSetCurrentItem"
"ListSetNextItem"
"ListSetNextString"
"ListSetIndex"
"PlayMMedia" ; IS5 only
"ProgDefGroupType"
"RegDBCreateKeyEx"
- "RegDbDeleteValue"
+ "RegDBDeleteValue"
"RegDBGetItem"
"RegDBKeyExist"
"RegDBSetItem"
"StrLength"
"StrRemoveLastSlash"
"StrToLower"
+ "StrToNum"
"StrToUpper"
"StrSub"
"VarRestore"
(defvar installshield-system-variables-list
(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"
"LIST"
"LONG"
"LOWORD"
+ "LPSTR"
"NUMBER"
+ "NUMBERLIST"
"POINTER"
"QUAD"
"RGB"
"FILENAME"
"FIXED_DRIVE"
"FOLDER_DESKTOP"
+ "FOLDER_PROGRAMS"
"FOLDER_STARTMENU"
"FOLDER_STARTUP"
"FREEENVSPACE"
"FONT_TITLE"
"GREATER_THAN"
"GREEN"
+ "HKEY_CLASSES_ROOT"
+ "HKEY_CURRENT_USER"
+ "HKEY_LOCAL_MACHINE"
+ "HKEY_USERS"
"HOURGLASS"
"INCLUDE_SUBDIR"
"INDVFILESTATUS"
"SW_MINIMIZE"
"SW_RESTORE"
"SW_SHOW"
+ "SYS_BOOTMACHINE"
"TIME"
"TRUE"
"TYPICAL"
)
"Function argument constants used in InstallShield 3 and 5.")
-(define-generic-mode 'rul-generic-mode
+(define-generic-mode 'rul-generic-mode
;; Using "/*" and "*/" doesn't seem to be working right
(list "//")
installshield-statement-keyword-list
'("#[ \t]*include[ \t]+\\(<[^>\"\n]+>\\)"
1 font-lock-string-face)
'("#[ \t]*\\(\\sw+\\)\\>[ \t]*\\(\\sw+\\)?"
- (1 font-lock-reference-face)
+ (1 font-lock-constant-face)
(2 font-lock-variable-name-face nil t))
;; indirect string constants
'("\\(@[A-Za-z][A-Za-z0-9_]+\\)" 1 font-lock-builtin-face)
;; gotos
- '("[ \t]*\\(\\sw+:\\)" 1 font-lock-reference-face)
- '("\\<\\(goto\\)\\>[ \t]*\\(\\sw+\\)?"
+ '("[ \t]*\\(\\sw+:\\)" 1 font-lock-constant-face)
+ '("\\<\\(goto\\)\\>[ \t]*\\(\\sw+\\)?"
(1 font-lock-keyword-face)
- (2 font-lock-reference-face nil t))
+ (2 font-lock-constant-face nil t))
;; system variables
(generic-make-keywords-list
installshield-system-variables-list
)
(list "\\.[rR][uU][lL]$")
(list
- (function
+ (function
(lambda ()
- (setq imenu-generic-expression
+ (setq imenu-generic-expression
'((nil "^function\\s-+\\([A-Za-z0-9_]+\\)" 1)))
)))
"Generic mode for InstallShield RUL files.")
> _ \n
( "other condition, %s: "
> "elseif(" str ") then" \n
- > \n)
+ > \n)
> "else" \n
> \n
resume:
;; Additions by ACorreir@pervasive-sw.com (Alfred Correira)
(define-generic-mode 'mailrc-generic-mode
(list ?#)
- (list
- "alias"
- "else"
- "endif"
- "group"
- "if"
- "ignore"
- "set"
+ (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))
+ (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-reference-face) (3 font-lock-variable-name-face)))
+ (2 font-lock-constant-face) (3 font-lock-variable-name-face)))
(list "\\.mailrc\\'")
nil
"Mode for mailrc files.")
;; Inetd.conf
-(and
+(and
(memq 'inetd-conf-generic-mode generic-extras-enable-list)
(define-generic-mode 'inetd-conf-generic-mode
(list ?#)
- (list
+ (list
"stream"
"dgram"
"tcp"
1 'font-lock-type-face)
)
'("/etc/inetd.conf\\'")
- (list
+ (list
(function
(lambda ()
- (setq imenu-generic-expression
+ (setq imenu-generic-expression
'((nil "^\\([-A-Za-z0-9_]+\\)" 1)))
)))
)
)
;; Services
-(and
+(and
(memq 'etc-services-generic-mode generic-extras-enable-list)
(define-generic-mode 'etc-services-generic-mode
(list ?#)
- (list
+ (list
"tcp"
"udp"
"ddp"
)
)
'("/etc/services\\'")
- (list
+ (list
(function
(lambda ()
- (setq imenu-generic-expression
+ (setq imenu-generic-expression
'((nil "^\\([-A-Za-z0-9_]+\\)" 1)))
)))
)
)
;; Password and Group files
-(and
+(and
(memq 'etc-passwd-generic-mode generic-extras-enable-list)
(define-generic-mode 'etc-passwd-generic-mode
)
'(1 'font-lock-type-face)
'(5 'font-lock-variable-name-face)
- '(6 'font-lock-reference-face)
+ '(6 'font-lock-constant-face)
'(7 'font-lock-warning-face)
)
'("^\\([^:]+\\):\\([^:]*\\):\\([0-9]+\\):\\(.*\\)$"
)
)
'("/etc/passwd\\'" "/etc/group\\'")
- (list
+ (list
(function
(lambda ()
- (setq imenu-generic-expression
+ (setq imenu-generic-expression
'((nil "^\\([-A-Za-z0-9_]+\\):" 1)))
)))
)
nil
"Generic mode to show tabs and trailing spaces")
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; DNS modes
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(define-generic-mode 'named-boot-generic-mode
+ ;;List of comment characters
+ (list ?\;)
+ ;;List of keywords
+ (list "cache" "primary" "secondary" "forwarders" "limit" "options"
+ "directory" "check-names")
+ ;;List of additional font-lock-expressions
+ (list
+ (list "\\([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\\)" 1 'font-lock-constant-face)
+ (list "^directory\\s-+\\(.*\\)" 1 'font-lock-variable-name-face)
+ (list "^\\(primary\\|cache\\)\\s-+\\([.A-Za-z]+\\)\\s-+\\(.*\\)"
+ (list 2 'font-lock-variable-name-face)
+ (list 3 'font-lock-constant-face))
+ )
+ ;;List of additional automode-alist expressions
+ (list "/etc/named.boot\\'")
+ ;;List of set up functions to call
+ nil
+ )
+
+(define-generic-mode 'named-database-generic-mode
+ ;;List of comment characters
+ (list ?\;)
+ ;;List of keywords
+ (list "IN" "NS" "CNAME" "SOA" "PTR" "MX" "A")
+ ;;List of additional font-lock-expressions
+ (list
+ (list "\\([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\\)" 1 'font-lock-constant-face)
+ (list "^\\([.A-Za-z0-9]+\\)" 1 'font-lock-variable-name-face)
+ )
+ ;;List of additional automode-alist expressions
+ nil
+ ;;List of set up functions to call
+ 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)))
+ )
+
+(define-generic-mode 'resolve-conf-generic-mode
+ ;;List of comment characters
+ (list ?#)
+ ;;List of keywords
+ (list "nameserver" "domain" "search" "sortlist" "options")
+ ;;List of additional font-lock-expressions
+ nil
+ ;;List of additional automode-alist expressions
+ (list "/etc/resolv[e]?.conf\\'")
+ ;;List of set up functions to call
+ nil
+ )
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Modes for spice and common electrical engineering circuit netlist formats
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(define-generic-mode 'spice-generic-mode
+ nil
+ (list
+ "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)
+ )
+ (list "\\.[sS][pP]\\'"
+ "\\.[sS][pP][iI]\\'"
+ "\\.[sS][pP][iI][cC][eE]\\'"
+ "\\.[iI][nN][cC]\\'")
+ (list
+ 'generic-bracket-support
+ ;; Make keywords case-insensitive
+ (function
+ (lambda()
+ (setq font-lock-defaults (list 'generic-font-lock-defaults nil t))))
+ )
+ "Generic mode for SPICE circuit netlist files."
+ )
+
+(define-generic-mode 'ibis-generic-mode
+ (list ?|)
+ nil
+ '(
+ ("[[]\\([^]]*\\)[]]" 1 'font-lock-keyword-face)
+ ("\\(\\(_\\|\\w\\)+\\)\\s-*=" 1 'font-lock-variable-name-face)
+ )
+ (list "\\.[iI][bB][sS]\\'")
+ (list 'generic-bracket-support)
+ "Generic mode for IBIS circuit netlist files."
+ )
+
+(define-generic-mode 'astap-generic-mode
+ nil
+ (list
+ "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)
+ )
+ (list "\\.[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
+ ;; Make keywords case-insensitive
+ (function
+ (lambda()
+ (setq font-lock-defaults (list 'generic-font-lock-defaults nil t))))
+ )
+ "Generic mode for ASTAP circuit netlist files."
+ )
+
+
(provide 'generic-x)
;;; generic-x.el ends here
-