X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/a2d66c78bb183476b4976e879857b011e155a2c1..5e56b3fb5aac96b5a65800da0495cef072388edf:/lisp/generic-x.el diff --git a/lisp/generic-x.el b/lisp/generic-x.el index a13103edb3..3310c38ade 100644 --- a/lisp/generic-x.el +++ b/lisp/generic-x.el @@ -1,6 +1,7 @@ -;;; generic-x.el --- Extra Modes for generic-mode +;;; generic-x.el --- A collection of generic modes -;; Copyright (C) 1997, 1998, 2003, 2005 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, +;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. ;; Author: Peter Breton ;; Created: Tue Oct 08 1996 @@ -10,7 +11,7 @@ ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) +;; the Free Software Foundation; either version 3, or (at your option) ;; any later version. ;; GNU Emacs is distributed in the hope that it will be useful, @@ -20,12 +21,12 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; -;; This file contains some pre-defined generic-modes. +;; This file contains a collection of generic modes. ;; ;; INSTALLATION: ;; @@ -34,12 +35,18 @@ ;; (require 'generic-x) ;; ;; You can decide which modes to load by setting the variable -;; `generic-extras-enable-list'. Some platform-specific modes are -;; affected by the variables `generic-define-mswindows-modes' and -;; `generic-define-unix-modes' (which see). +;; `generic-extras-enable-list'. Its default value is platform- +;; specific. The recommended way to set this variable is through +;; customize: ;; -;; You can also send in new modes; if the file types a reasonably common, -;; we would like to install them. +;; M-x customize-option RET generic-extras-enable-list RET +;; +;; This lets you select generic modes from the list of available +;; modes. If you manually set `generic-extras-enable-list' in your +;; .emacs, do it BEFORE loading generic-x with (require 'generic-x). +;; +;; You can also send in new modes; if the file types are reasonably +;; common, we would like to install them. ;; ;; DEFAULT GENERIC MODE: ;; @@ -54,13 +61,13 @@ ;; PROBLEMS WHEN USED WITH FOLDING MODE: ;; ;; [The following relates to the obsolete selective-display technique. -;; Folding mode should use invisible text properties instead. -- Dave +;; Folding mode should use invisible text properties instead. -- Dave ;; Love] ;; ;; From Anders Lindgren ;; ;; Problem summary: Wayne Adams has found a problem when using folding -;; mode in conjuction with font-lock for a mode defined in +;; mode in conjunction with font-lock for a mode defined in ;; `generic-x.el'. ;; ;; The problem, as Wayne described it, was that error messages of the @@ -69,18 +76,18 @@ ;; > - 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 +;; I have just tracked down the cause of the problem. The regexp's in +;; `generic-x.el' do not take into account the way that folding hides +;; sections of the buffer. The technique is known as ;; `selective-display' and has been available for a very long time (I -;; started using it back in the good old' Emacs 18 days). Basically, a +;; 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 +;; The erroneous lines in `generic-x.el' look like the following (this ;; example is from the `ini' section): ;; ;; '(("^\\(\\[.*\\]\\)" 1 'font-lock-constant-face) @@ -92,17 +99,17 @@ ;; [foo] ;; bar = xxx ;; -;; However, since the `.' regexp symbol match the linefeed character the -;; entire folded section is searched, resulting in a regexp stack +;; However, since the `.' regexp symbol matches 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. +;; Solution suggestion: 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. ;;; Code: -(require 'font-lock) +(eval-when-compile (require 'font-lock)) (defgroup generic-x nil "A collection of generic modes." @@ -147,7 +154,7 @@ the regexp in `generic-find-file-regexp'. If the value is nil, :type '(choice (const :tag "Don't check file names" nil) regexp)) ;; This generic mode is always defined -(define-generic-mode default-generic-mode (list ?#) nil nil nil nil :group 'generic) +(define-generic-mode default-generic-mode (list ?#) nil nil nil nil) ;; A more general solution would allow us to enter generic-mode for ;; *any* comment character, but would require us to synthesize a new @@ -185,55 +192,102 @@ This hook will be installed if the variable ;; Other Generic modes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(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)) +;; If you add a generic mode to this file, put it in one of these four +;; lists as well. + +(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 + etc-sudoers-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)) - "*If non-nil, some MS-Windows specific generic modes will be defined." + "*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 affects the default value of `generic-extras-enable-list'." :group 'generic-x - :type 'boolean) + :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))) - "*If non-nil, some Unix specific generic modes will be defined." + "*Non-nil means the modes in `generic-unix-modes' will be defined. +This is a list of Unix specific generic modes. This variable only +affects the default value of `generic-extras-enable-list'." :group 'generic-x - :type 'boolean) - -(and generic-define-mswindows-modes - (setq generic-extras-enable-list - (append '(bat-generic-mode - ini-generic-mode - inf-generic-mode - rc-generic-mode - reg-generic-mode - rul-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 '(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))) + :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") ;;; Apache (when (memq 'apache-conf-generic-mode generic-extras-enable-list) @@ -251,8 +305,7 @@ generic-x to enable the specified modes." '((nil "^\\([-A-Za-z0-9_]+\\)" 1) ("*Directories*" "^\\s-*]+\\)>" 1) ("*Locations*" "^\\s-*]+\\)>" 1)))))) - "Generic mode for Apache or HTTPD configuration files." - :group 'generic-x)) + "Generic mode for Apache or HTTPD configuration files.")) (when (memq 'apache-log-generic-mode generic-extras-enable-list) @@ -265,8 +318,7 @@ generic-x to enable the specified modes." (2 font-lock-variable-name-face))) '("access_log\\'") nil - "Mode for Apache log files" - :group 'generic-x)) + "Mode for Apache log files.")) ;;; Samba (when (memq 'samba-generic-mode generic-extras-enable-list) @@ -280,8 +332,7 @@ generic-x to enable the specified modes." (2 font-lock-type-face))) '("smb\\.conf\\'") '(generic-bracket-support) - "Generic mode for Samba configuration files." - :group 'generic-x)) + "Generic mode for Samba configuration files.")) ;;; Fvwm ;; This is pretty basic. Also, modes for other window managers could @@ -306,8 +357,7 @@ generic-x to enable the specified modes." nil '("\\.fvwmrc\\'" "\\.fvwm2rc\\'") nil - "Generic mode for FVWM configuration files." - :group 'generic-x)) + "Generic mode for FVWM configuration files.")) ;;; X Resource ;; I'm pretty sure I've seen an actual mode to do this, but I don't @@ -320,8 +370,7 @@ generic-x to enable the specified modes." '(("^\\([^:\n]+:\\)" 1 font-lock-variable-name-face)) '("\\.Xdefaults\\'" "\\.Xresources\\'" "\\.Xenvironment\\'" "\\.ad\\'") nil - "Generic mode for X Resource configuration files." - :group 'generic-x)) + "Generic mode for X Resource configuration files.")) ;;; Hosts (when (memq 'hosts-generic-mode generic-extras-enable-list) @@ -332,10 +381,13 @@ generic-x to enable the specified modes." '(("\\([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\\)" 1 font-lock-constant-face)) '("[hH][oO][sS][tT][sS]\\'") nil - "Generic mode for HOSTS files." - :group 'generic-x)) + "Generic mode for HOSTS files.")) ;;; Windows INF files + +;; If i-g-m-f-f-h is defined, then so is i-g-m. +(declare-function ini-generic-mode "generic-x") + (when (memq 'inf-generic-mode generic-extras-enable-list) (define-generic-mode inf-generic-mode @@ -344,8 +396,7 @@ generic-x to enable the specified modes." '(("^\\(\\[.*\\]\\)" 1 font-lock-constant-face)) '("\\.[iI][nN][fF]\\'") '(generic-bracket-support) - "Generic mode for MS-Windows INF files." - :group 'generic-x)) + "Generic mode for MS-Windows INF files.")) ;;; Windows INI files ;; Should define escape character as well! @@ -367,8 +418,7 @@ generic-x to enable the specified modes." ("*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\"." - :group 'generic-x) +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. @@ -388,7 +438,7 @@ like an INI file. You can add this hook to `find-file-hook'." (define-generic-mode reg-generic-mode '(?\;) '("key" "classes_root" "REGEDIT" "REGEDIT4") - '(("\\(\\[.*]\\)" 1 font-lock-constant-face) + '(("\\(\\[.*\\]\\)" 1 font-lock-constant-face) ("^\\([^\n\r]*\\)\\s-*=" 1 font-lock-variable-name-face)) '("\\.[rR][eE][gG]\\'") (list @@ -396,8 +446,9 @@ like an INI file. You can add this hook to `find-file-hook'." (lambda () (setq imenu-generic-expression '((nil "^\\s-*\\(.*\\)\\s-*=" 1)))))) - "Generic mode for MS-Windows Registry files." - :group 'generic-x)) + "Generic mode for MS-Windows Registry files.")) + +(declare-function w32-shell-name "w32-fns" ()) ;;; DOS/Windows BAT files (when (memq 'bat-generic-mode generic-extras-enable-list) @@ -449,7 +500,7 @@ like an INI file. You can add this hook to `find-file-hook'." "MD" "md" "Md" "PATH" "path" "Path" "PAUSE" "pause" "Pause" - "PROMPT" "prompt" "Prompt" + "PROMPT" "prompt" "Prompt" "RD" "rd" "Rd" "REN" "ren" "Ren" "SET" "set" "Set" @@ -468,17 +519,17 @@ like an INI file. You can add this hook to `find-file-hook'." (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 BAT files." - :group 'generic-x) + "Generic mode for MS-Windows batch files.") (defvar bat-generic-mode-syntax-table nil - "Syntax table in use in bat-generic-mode buffers.") + "Syntax table in use in `bat-generic-mode' buffers.") (defvar bat-generic-mode-keymap (make-sparse-keymap) - "Keymap for bet-generic-mode.") + "Keymap for `bat-generic-mode'.") (defun bat-generic-mode-compile () "Run the current BAT file in a compilation buffer." @@ -551,8 +602,7 @@ like an INI file. You can add this hook to `find-file-hook'." (lambda () (setq imenu-generic-expression '((nil "\\s-/\\([^/]+\\)/[i, \t\n]" 1)))))) - "Mode for Mailagent rules files." - :group 'generic-x)) + "Mode for Mailagent rules files.")) ;; Solaris/Sys V prototype files (when (memq 'prototype-generic-mode generic-extras-enable-list) @@ -575,8 +625,7 @@ like an INI file. You can add this hook to `find-file-hook'." (2 font-lock-variable-name-face))) '("prototype\\'") nil - "Mode for Sys V prototype files." - :group 'generic-x)) + "Mode for Sys V prototype files.")) ;; Solaris/Sys V pkginfo files (when (memq 'pkginfo-generic-mode generic-extras-enable-list) @@ -589,11 +638,12 @@ like an INI file. You can add this hook to `find-file-hook'." (2 font-lock-variable-name-face))) '("pkginfo\\'") nil - "Mode for Sys V pkginfo files." - :group 'generic-x)) + "Mode for Sys V pkginfo files.")) ;; Javascript mode ;; Includes extra keywords from Armando Singer [asinger@MAIL.COLGATE.EDU] +(when (memq 'javascript-generic-mode generic-extras-enable-list) + (define-generic-mode javascript-generic-mode '("//" ("/*" . "*/")) '("break" @@ -667,10 +717,11 @@ like an INI file. You can add this hook to `find-file-hook'." (setq imenu-generic-expression '((nil "^function\\s-+\\([A-Za-z0-9_]+\\)" 1) ("*Variables*" "^var\\s-+\\([A-Za-z0-9_]+\\)" 1)))))) - "Mode for JavaScript files." - :group 'generic-x) + "Mode for JavaScript files.")) ;; VRML files +(when (memq 'vrml-generic-mode generic-extras-enable-list) + (define-generic-mode vrml-generic-mode '(?#) '("DEF" @@ -719,10 +770,11 @@ like an INI file. You can add this hook to `find-file-hook'." ("*Definitions*" "DEF\\s-+\\([-A-Za-z0-9_]+\\)\\s-+\\([A-Za-z0-9]+\\)\\s-*{" 1)))))) - "Generic Mode for VRML files." - :group 'generic-x) + "Generic Mode for VRML files.")) ;; Java Manifests +(when (memq 'java-manifest-generic-mode generic-extras-enable-list) + (define-generic-mode java-manifest-generic-mode '(?#) '("Name" @@ -739,10 +791,11 @@ like an INI file. You can add this hook to `find-file-hook'." (2 font-lock-constant-face))) '("[mM][aA][nN][iI][fF][eE][sS][tT]\\.[mM][fF]\\'") nil - "Mode for Java Manifest files" - :group 'generic-x) + "Mode for Java Manifest files.")) ;; Java properties files +(when (memq 'java-properties-generic-mode generic-extras-enable-list) + (define-generic-mode java-properties-generic-mode '(?! ?#) nil @@ -770,8 +823,7 @@ like an INI file. You can add this hook to `find-file-hook'." (lambda () (setq imenu-generic-expression '((nil "^\\([^#! \t\n\r=:]+\\)" 1)))))) - "Mode for Java properties files." - :group 'generic-x) + "Mode for Java properties files.")) ;; C shell alias definitions (when (memq 'alias-generic-mode generic-extras-enable-list) @@ -789,8 +841,7 @@ like an INI file. You can add this hook to `find-file-hook'." (lambda () (setq imenu-generic-expression '((nil "^\\(alias\\|unalias\\)\\s-+\\([-a-zA-Z0-9_]+\\)" 2)))))) - "Mode for C Shell alias files." - :group 'generic-x)) + "Mode for C Shell alias files.")) ;;; Windows RC files ;; Contributed by ACorreir@pervasive-sw.com (Alfred Correira) @@ -882,8 +933,7 @@ like an INI file. You can add this hook to `find-file-hook'." (2 font-lock-variable-name-face nil t)))) '("\\.[rR][cC]\\'") nil - "Generic mode for MS-Windows Resource files." - :group 'generic-x)) + "Generic mode for MS-Windows Resource files.")) ;; InstallShield RUL files ;; Contributed by Alfred.Correira@Pervasive.Com @@ -1436,7 +1486,7 @@ like an INI file. You can add this hook to `find-file-hook'." "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.") + "Syntax table to use in `rul-generic-mode' buffers.") (setq rul-generic-mode-syntax-table (make-syntax-table c++-mode-syntax-table)) @@ -1503,8 +1553,7 @@ like an INI file. You can add this hook to `find-file-hook'." font-lock-variable-name-face "[^_]" "[^_]"))) ; is this face the best choice? '("\\.[rR][uU][lL]\\'") '(generic-rul-mode-setup-function) - "Generic mode for InstallShield RUL files." - :group 'generic-x) + "Generic mode for InstallShield RUL files.") (define-skeleton rul-if "Insert an if statement." @@ -1531,6 +1580,8 @@ like an INI file. You can add this hook to `find-file-hook'." > "end;")) ;; Additions by ACorreir@pervasive-sw.com (Alfred Correira) +(when (memq 'mailrc-generic-mode generic-extras-enable-list) + (define-generic-mode mailrc-generic-mode '(?#) '("alias" @@ -1552,8 +1603,7 @@ like an INI file. You can add this hook to `find-file-hook'." (2 font-lock-variable-name-face))) '("\\.mailrc\\'") nil - "Mode for mailrc files." - :group 'generic-x) + "Mode for mailrc files.")) ;; Inetd.conf (when (memq 'inetd-conf-generic-mode generic-extras-enable-list) @@ -1573,8 +1623,7 @@ like an INI file. You can add this hook to `find-file-hook'." (function (lambda () (setq imenu-generic-expression - '((nil "^\\([-A-Za-z0-9_]+\\)" 1)))))) - :group 'generic-x)) + '((nil "^\\([-A-Za-z0-9_]+\\)" 1)))))))) ;; Services (when (memq 'etc-services-generic-mode generic-extras-enable-list) @@ -1592,8 +1641,7 @@ like an INI file. You can add this hook to `find-file-hook'." (function (lambda () (setq imenu-generic-expression - '((nil "^\\([-A-Za-z0-9_]+\\)" 1)))))) - :group 'generic-x)) + '((nil "^\\([-A-Za-z0-9_]+\\)" 1)))))))) ;; Password and Group files (when (memq 'etc-passwd-generic-mode generic-extras-enable-list) @@ -1635,8 +1683,7 @@ like an INI file. You can add this hook to `find-file-hook'." (function (lambda () (setq imenu-generic-expression - '((nil "^\\([-A-Za-z0-9_]+\\):" 1)))))) - :group 'generic-x)) + '((nil "^\\([-A-Za-z0-9_]+\\):" 1)))))))) ;; Fstab (when (memq 'etc-fstab-generic-mode generic-extras-enable-list) @@ -1667,6 +1714,8 @@ like an INI file. You can add this hook to `find-file-hook'." "reiserfs" "romfs" "smbfs" + "cifs" + "usbdevfs" "sysv" "tmpfs" "udf" @@ -1678,7 +1727,7 @@ like an INI file. You can add this hook to `find-file-hook'." "swap" "auto" "ignore") - '(("^\\([/-A-Za-z0-9_]+\\)\\s-+\\([/-A-Za-z0-9_]+\\)" + '(("^\\([^# \t]+\\)\\s-+\\([^# \t]+\\)" (1 font-lock-type-face t) (2 font-lock-variable-name-face t))) '("/etc/[v]*fstab\\'") @@ -1686,25 +1735,41 @@ like an INI file. You can add this hook to `find-file-hook'." (function (lambda () (setq imenu-generic-expression - '((nil "^\\([/-A-Za-z0-9_]+\\)\\s-+" 1)))))) - :group 'generic-x)) + '((nil "^\\([^# \t]+\\)\\s-+" 1)))))))) + +;; /etc/sudoers +(when (memq 'etc-sudoers-generic-mode generic-extras-enable-list) + +(define-generic-mode etc-sudoers-generic-mode + '(?#) + '("User_Alias" "Runas_Alias" "Host_Alias" "Cmnd_Alias" + "NOPASSWD" "PASSWD" "NOEXEC" "EXEC" + "ALL") + '(("\\<\\(root\\|su\\)\\>" 1 font-lock-warning-face) + ("\\(\\*\\)" 1 font-lock-warning-face) + ("\\<\\(%[A-Za-z0-9_]+\\)\\>" 1 font-lock-variable-name-face)) + '("/etc/sudoers\\'") + nil + "Generic mode for sudoers configuration files.")) ;; From Jacques Duthen +(when (memq 'show-tabs-generic-mode generic-extras-enable-list) + (eval-when-compile (defconst show-tabs-generic-mode-font-lock-defaults-1 '(;; trailing spaces must come before... - ("[ \t]+$" . 'show-tabs-space-face) + ("[ \t]+$" . 'show-tabs-space) ;; ...embedded tabs - ("[^\n\t]\\(\t+\\)" (1 'show-tabs-tab-face)))) + ("[^\n\t]\\(\t+\\)" (1 'show-tabs-tab)))) (defconst show-tabs-generic-mode-font-lock-defaults-2 '(;; trailing spaces must come before... - ("[ \t]+$" . 'show-tabs-space-face) + ("[ \t]+$" . 'show-tabs-space) ;; ...tabs - ("\t+" . 'show-tabs-tab-face)))) + ("\t+" . 'show-tabs-tab)))) -(defface show-tabs-tab-face +(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")) @@ -1712,8 +1777,10 @@ like an INI file. You can add this hook to `find-file-hook'." (t (:weight bold))) "Font Lock mode face used to highlight TABs." :group 'generic-x) +;; backward-compatibility alias +(put 'show-tabs-tab-face 'face-alias 'show-tabs-tab) -(defface show-tabs-space-face +(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")) @@ -1721,6 +1788,8 @@ like an INI file. You can add this hook to `find-file-hook'." (t (:weight bold))) "Font Lock mode face used to highlight spaces." :group 'generic-x) +;; backward-compatibility alias +(put 'show-tabs-space-face 'face-alias 'show-tabs-space) (define-generic-mode show-tabs-generic-mode nil ;; no comment char @@ -1729,13 +1798,14 @@ like an INI file. You can add this hook to `find-file-hook'." nil ;; no auto-mode-alist ;; '(show-tabs-generic-mode-hook-fun) nil - "Generic mode to show tabs and trailing spaces" - :group 'generic-x) + "Generic mode to show tabs and trailing spaces.")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; DNS modes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(when (memq 'named-boot-generic-mode generic-extras-enable-list) + (define-generic-mode named-boot-generic-mode ;; List of comment characters '(?\;) @@ -1751,8 +1821,9 @@ like an INI file. You can add this hook to `find-file-hook'." ;; List of additional automode-alist expressions '("/etc/named.boot\\'") ;; List of set up functions to call - nil - :group 'generic-x) + nil)) + +(when (memq 'named-database-generic-mode generic-extras-enable-list) (define-generic-mode named-database-generic-mode ;; List of comment characters @@ -1765,8 +1836,7 @@ like an INI file. You can add this hook to `find-file-hook'." ;; List of additional auto-mode-alist expressions nil ;; List of set up functions to call - nil - :group 'generic-x) + nil) (defvar named-database-time-string "%Y%m%d%H" "Timestring for named serial numbers.") @@ -1774,7 +1844,9 @@ like an INI file. You can add this hook to `find-file-hook'." (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)))) + (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 ;; List of comment characters @@ -1786,13 +1858,14 @@ like an INI file. You can add this hook to `find-file-hook'." ;; List of additional auto-mode-alist expressions '("/etc/resolv[e]?.conf\\'") ;; List of set up functions to call - nil - :group 'generic-x) + nil)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Modes for spice and common electrical engineering circuit netlist formats ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(when (memq 'spice-generic-mode generic-extras-enable-list) + (define-generic-mode spice-generic-mode nil '("and" @@ -1829,8 +1902,9 @@ like an INI file. You can add this hook to `find-file-hook'." (function (lambda() (setq font-lock-defaults '(generic-font-lock-keywords nil t))))) - "Generic mode for SPICE circuit netlist files." - :group 'generic-x) + "Generic mode for SPICE circuit netlist files.")) + +(when (memq 'ibis-generic-mode generic-extras-enable-list) (define-generic-mode ibis-generic-mode '(?|) @@ -1839,8 +1913,9 @@ like an INI file. You can add this hook to `find-file-hook'." ("\\(\\(_\\|\\w\\)+\\)\\s-*=" 1 font-lock-variable-name-face)) '("\\.[iI][bB][sS]\\'") '(generic-bracket-support) - "Generic mode for IBIS circuit netlist files." - :group 'generic-x) + "Generic mode for IBIS circuit netlist files.")) + +(when (memq 'astap-generic-mode generic-extras-enable-list) (define-generic-mode astap-generic-mode nil @@ -1875,8 +1950,9 @@ like an INI file. You can add this hook to `find-file-hook'." (function (lambda() (setq font-lock-defaults '(generic-font-lock-keywords nil t))))) - "Generic mode for ASTAP circuit netlist files." - :group 'generic-x) + "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 ;; List of comment characters @@ -1918,8 +1994,7 @@ like an INI file. You can add this hook to `find-file-hook'." ;; List of additional automode-alist expressions '("/etc/modules.conf" "/etc/conf.modules") ;; List of set up functions to call - nil - :group 'generic-x) + nil)) (provide 'generic-x)