aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLute Kamstra2005-04-28 09:17:06 +0000
committerLute Kamstra2005-04-28 09:17:06 +0000
commit1fffafda4373f66473fe1b41683051dfd421a2fd (patch)
tree013bd4197e89290c817185394e87e988869717ff
parent5ad24c0b2e4def8a68ae421956726d811751d3de (diff)
downloademacs-1fffafda4373f66473fe1b41683051dfd421a2fd.tar.gz
emacs-1fffafda4373f66473fe1b41683051dfd421a2fd.zip
Update commentary section.
Only require font-lock when compiling. Define all modes conditionally. Place all generic modes in the generic-x-modes customization group. (generic-x-modes): New customization group. (generic-default-modes, generic-mswindows-modes) (generic-unix-modes, generic-other-modes): New constants. (generic-define-mswindows-modes, generic-define-unix-modes): Update docstrings. Make them obsolete. (generic-extras-enable-list): New default value. Update docstring. Improve :type. Change :set function. (bat-generic-mode-syntax-table, rul-generic-mode-syntax-table): Fix docstring.
-rw-r--r--lisp/generic-x.el283
1 files changed, 183 insertions, 100 deletions
diff --git a/lisp/generic-x.el b/lisp/generic-x.el
index a13103edb3d..31aa9299fbb 100644
--- a/lisp/generic-x.el
+++ b/lisp/generic-x.el
@@ -1,4 +1,4 @@
1;;; generic-x.el --- Extra Modes for generic-mode 1;;; generic-x.el --- A collection of generic modes
2 2
3;; Copyright (C) 1997, 1998, 2003, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 1997, 1998, 2003, 2005 Free Software Foundation, Inc.
4 4
@@ -25,7 +25,7 @@
25 25
26;;; Commentary: 26;;; Commentary:
27;; 27;;
28;; This file contains some pre-defined generic-modes. 28;; This file contains a collection generic modes.
29;; 29;;
30;; INSTALLATION: 30;; INSTALLATION:
31;; 31;;
@@ -34,12 +34,18 @@
34;; (require 'generic-x) 34;; (require 'generic-x)
35;; 35;;
36;; You can decide which modes to load by setting the variable 36;; You can decide which modes to load by setting the variable
37;; `generic-extras-enable-list'. Some platform-specific modes are 37;; `generic-extras-enable-list'. Its default value is platform-
38;; affected by the variables `generic-define-mswindows-modes' and 38;; specific. The recommended way to set this variable is through
39;; `generic-define-unix-modes' (which see). 39;; customize:
40;; 40;;
41;; You can also send in new modes; if the file types a reasonably common, 41;; M-x customize-option RET generic-extras-enable-list RET
42;; we would like to install them. 42;;
43;; This lets you select generic modes from the list of available
44;; modes. If you manually set `generic-extras-enable-list' in your
45;; .emacs, do it BEFORE loading generic-x with (require 'generic-x).
46;;
47;; You can also send in new modes; if the file types are reasonably
48;; common, we would like to install them.
43;; 49;;
44;; DEFAULT GENERIC MODE: 50;; DEFAULT GENERIC MODE:
45;; 51;;
@@ -54,13 +60,13 @@
54;; PROBLEMS WHEN USED WITH FOLDING MODE: 60;; PROBLEMS WHEN USED WITH FOLDING MODE:
55;; 61;;
56;; [The following relates to the obsolete selective-display technique. 62;; [The following relates to the obsolete selective-display technique.
57;; Folding mode should use invisible text properties instead. -- Dave 63;; Folding mode should use invisible text properties instead. -- Dave
58;; Love] 64;; Love]
59;; 65;;
60;; From Anders Lindgren <andersl@csd.uu.se> 66;; From Anders Lindgren <andersl@csd.uu.se>
61;; 67;;
62;; Problem summary: Wayne Adams has found a problem when using folding 68;; Problem summary: Wayne Adams has found a problem when using folding
63;; mode in conjuction with font-lock for a mode defined in 69;; mode in conjunction with font-lock for a mode defined in
64;; `generic-x.el'. 70;; `generic-x.el'.
65;; 71;;
66;; The problem, as Wayne described it, was that error messages of the 72;; The problem, as Wayne described it, was that error messages of the
@@ -69,18 +75,18 @@
69;; > - various msgs including "Fontifying region...(error Stack 75;; > - various msgs including "Fontifying region...(error Stack
70;; > overflow in regexp matcher)" appear 76;; > overflow in regexp matcher)" appear
71;; 77;;
72;; I have just tracked down the cause of the problem. The regexp:s in 78;; I have just tracked down the cause of the problem. The regexp's in
73;; `generic-x.el' does not take into account the way that folding 79;; `generic-x.el' do not take into account the way that folding hides
74;; hides sections of the buffer. The technique is known as 80;; sections of the buffer. The technique is known as
75;; `selective-display' and has been available for a very long time (I 81;; `selective-display' and has been available for a very long time (I
76;; started using it back in the good old' Emacs 18 days). Basically, a 82;; started using it back in the good old Emacs 18 days). Basically, a
77;; section is hidden by creating one very long line were the newline 83;; section is hidden by creating one very long line were the newline
78;; character (C-j) is replaced by a linefeed (C-m) character. 84;; character (C-j) is replaced by a linefeed (C-m) character.
79;; 85;;
80;; Many other hiding packages, besides folding, use the same technique, 86;; Many other hiding packages, besides folding, use the same technique,
81;; the problem should occur when using them as well. 87;; the problem should occur when using them as well.
82;; 88;;
83;; The erroronous lines in `generic-extras' look like the following (this 89;; The erroneous lines in `generic-x.el' look like the following (this
84;; example is from the `ini' section): 90;; example is from the `ini' section):
85;; 91;;
86;; '(("^\\(\\[.*\\]\\)" 1 'font-lock-constant-face) 92;; '(("^\\(\\[.*\\]\\)" 1 'font-lock-constant-face)
@@ -92,17 +98,17 @@
92;; [foo] 98;; [foo]
93;; bar = xxx 99;; bar = xxx
94;; 100;;
95;; However, since the `.' regexp symbol match the linefeed character the 101;; However, since the `.' regexp symbol matches the linefeed character
96;; entire folded section is searched, resulting in a regexp stack 102;; the entire folded section is searched, resulting in a regexp stack
97;; overflow. 103;; overflow.
98;; 104;;
99;; Solution suggestion 2: Instead of using ".", use the sequence 105;; Solution suggestion: Instead of using ".", use the sequence
100;; "[^\n\r]". This will make the rules behave just as before, but they 106;; "[^\n\r]". This will make the rules behave just as before, but
101;; will work together with selective-display. 107;; they will work together with selective-display.
102 108
103;;; Code: 109;;; Code:
104 110
105(require 'font-lock) 111(eval-when-compile (require 'font-lock))
106 112
107(defgroup generic-x nil 113(defgroup generic-x nil
108 "A collection of generic modes." 114 "A collection of generic modes."
@@ -110,6 +116,11 @@
110 :group 'data 116 :group 'data
111 :version "20.3") 117 :version "20.3")
112 118
119(defgroup generic-x-modes nil
120 "Individual modes in the collection of generic modes."
121 :group 'generic-x
122 :version "22.1")
123
113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
114;; Default-Generic mode 125;; Default-Generic mode
115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -147,7 +158,7 @@ the regexp in `generic-find-file-regexp'. If the value is nil,
147 :type '(choice (const :tag "Don't check file names" nil) regexp)) 158 :type '(choice (const :tag "Don't check file names" nil) regexp))
148 159
149;; This generic mode is always defined 160;; This generic mode is always defined
150(define-generic-mode default-generic-mode (list ?#) nil nil nil nil :group 'generic) 161(define-generic-mode default-generic-mode (list ?#) nil nil nil nil :group 'generic-x-modes)
151 162
152;; A more general solution would allow us to enter generic-mode for 163;; A more general solution would allow us to enter generic-mode for
153;; *any* comment character, but would require us to synthesize a new 164;; *any* comment character, but would require us to synthesize a new
@@ -185,55 +196,101 @@ This hook will be installed if the variable
185;; Other Generic modes 196;; Other Generic modes
186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
187 198
188(defcustom generic-extras-enable-list nil 199;; If you add a generic mode to this file, put it in one of these four
189 "*List of generic modes to enable by default. 200;; lists as well.
190Each entry in the list should be a symbol. The variables 201
191`generic-define-mswindows-modes' and `generic-define-unix-modes' 202(defconst generic-default-modes
192also affect which generic modes are defined. Please note that if 203 '(apache-conf-generic-mode
193you set this variable after generic-x is loaded, you must reload 204 apache-log-generic-mode
194generic-x to enable the specified modes." 205 hosts-generic-mode
195 :group 'generic-x 206 java-manifest-generic-mode
196 :type '(repeat sexp)) 207 java-properties-generic-mode
208 javascript-generic-mode
209 show-tabs-generic-mode
210 vrml-generic-mode)
211 "List of generic modes that are defined by default.")
212
213(defconst generic-mswindows-modes
214 '(bat-generic-mode
215 inf-generic-mode
216 ini-generic-mode
217 rc-generic-mode
218 reg-generic-mode
219 rul-generic-mode)
220 "List of generic modes that are defined by default on MS-Windows.")
221
222(defconst generic-unix-modes
223 '(alias-generic-mode
224 etc-fstab-generic-mode
225 etc-modules-conf-generic-mode
226 etc-passwd-generic-mode
227 etc-services-generic-mode
228 fvwm-generic-mode
229 inetd-conf-generic-mode
230 mailagent-rules-generic-mode
231 mailrc-generic-mode
232 named-boot-generic-mode
233 named-database-generic-mode
234 prototype-generic-mode
235 resolve-conf-generic-mode
236 samba-generic-mode
237 x-resource-generic-mode)
238 "List of generic modes that are defined by default on Unix.")
239
240(defconst generic-other-modes
241 '(astap-generic-mode
242 ibis-generic-mode
243 pkginfo-generic-mode
244 spice-generic-mode)
245 "List of generic mode that are not defined by default.")
197 246
198(defcustom generic-define-mswindows-modes 247(defcustom generic-define-mswindows-modes
199 (memq system-type '(windows-nt ms-dos)) 248 (memq system-type '(windows-nt ms-dos))
200 "*If non-nil, some MS-Windows specific generic modes will be defined." 249 "*Non-nil means the modes in `generic-mswindows-modes' will be defined.
250This is a list of MS-Windows specific generic modes. This variable
251only effects the default value of `generic-extras-enable-list'."
201 :group 'generic-x 252 :group 'generic-x
202 :type 'boolean) 253 :type 'boolean
254 :version "22.1")
255(make-obsolete-variable 'generic-define-mswindows-modes 'generic-extras-enable-list "22.1")
203 256
204(defcustom generic-define-unix-modes 257(defcustom generic-define-unix-modes
205 (not (memq system-type '(windows-nt ms-dos))) 258 (not (memq system-type '(windows-nt ms-dos)))
206 "*If non-nil, some Unix specific generic modes will be defined." 259 "*Non-nil means the modes in `generic-unix-modes' will be defined.
260This is a list of Unix specific generic modes. This variable only
261effects the default value of `generic-extras-enable-list'."
207 :group 'generic-x 262 :group 'generic-x
208 :type 'boolean) 263 :type 'boolean
209 264 :version "22.1")
210(and generic-define-mswindows-modes 265(make-obsolete-variable 'generic-define-unix-modes 'generic-extras-enable-list "22.1")
211 (setq generic-extras-enable-list 266
212 (append '(bat-generic-mode 267(defcustom generic-extras-enable-list
213 ini-generic-mode 268 (append generic-default-modes
214 inf-generic-mode 269 (if generic-define-mswindows-modes generic-mswindows-modes)
215 rc-generic-mode 270 (if generic-define-unix-modes generic-unix-modes)
216 reg-generic-mode 271 nil)
217 rul-generic-mode 272 "List of generic modes to define.
218 hosts-generic-mode 273Each entry in the list should be a symbol. If you set this variable
219 apache-conf-generic-mode 274directly, without using customize, you must reload generic-x to put
220 apache-log-generic-mode) 275your changes into effect."
221 generic-extras-enable-list))) 276 :group 'generic-x
222 277 :type (let (list)
223(and generic-define-unix-modes 278 (dolist (mode
224 (setq generic-extras-enable-list 279 (sort (append generic-default-modes
225 (append '(apache-conf-generic-mode 280 generic-mswindows-modes
226 apache-log-generic-mode 281 generic-unix-modes
227 samba-generic-mode 282 generic-other-modes
228 hosts-generic-mode 283 nil)
229 fvwm-generic-mode 284 (lambda (a b)
230 x-resource-generic-mode 285 (string< (symbol-name b)
231 alias-generic-mode 286 (symbol-name a))))
232 inetd-conf-generic-mode 287 (cons 'set list))
233 etc-services-generic-mode 288 (push `(const ,mode) list)))
234 etc-passwd-generic-mode 289 :set (lambda (s v)
235 etc-fstab-generic-mode) 290 (set-default s v)
236 generic-extras-enable-list))) 291 (unless load-in-progress
292 (load "generic-x")))
293 :version "22.1")
237 294
238;;; Apache 295;;; Apache
239(when (memq 'apache-conf-generic-mode generic-extras-enable-list) 296(when (memq 'apache-conf-generic-mode generic-extras-enable-list)
@@ -252,7 +309,7 @@ generic-x to enable the specified modes."
252 ("*Directories*" "^\\s-*<Directory\\s-*\\([^>]+\\)>" 1) 309 ("*Directories*" "^\\s-*<Directory\\s-*\\([^>]+\\)>" 1)
253 ("*Locations*" "^\\s-*<Location\\s-*\\([^>]+\\)>" 1)))))) 310 ("*Locations*" "^\\s-*<Location\\s-*\\([^>]+\\)>" 1))))))
254 "Generic mode for Apache or HTTPD configuration files." 311 "Generic mode for Apache or HTTPD configuration files."
255 :group 'generic-x)) 312 :group 'generic-x-modes))
256 313
257(when (memq 'apache-log-generic-mode generic-extras-enable-list) 314(when (memq 'apache-log-generic-mode generic-extras-enable-list)
258 315
@@ -266,7 +323,7 @@ generic-x to enable the specified modes."
266 '("access_log\\'") 323 '("access_log\\'")
267 nil 324 nil
268 "Mode for Apache log files" 325 "Mode for Apache log files"
269 :group 'generic-x)) 326 :group 'generic-x-modes))
270 327
271;;; Samba 328;;; Samba
272(when (memq 'samba-generic-mode generic-extras-enable-list) 329(when (memq 'samba-generic-mode generic-extras-enable-list)
@@ -281,7 +338,7 @@ generic-x to enable the specified modes."
281 '("smb\\.conf\\'") 338 '("smb\\.conf\\'")
282 '(generic-bracket-support) 339 '(generic-bracket-support)
283 "Generic mode for Samba configuration files." 340 "Generic mode for Samba configuration files."
284 :group 'generic-x)) 341 :group 'generic-x-modes))
285 342
286;;; Fvwm 343;;; Fvwm
287;; This is pretty basic. Also, modes for other window managers could 344;; This is pretty basic. Also, modes for other window managers could
@@ -307,7 +364,7 @@ generic-x to enable the specified modes."
307 '("\\.fvwmrc\\'" "\\.fvwm2rc\\'") 364 '("\\.fvwmrc\\'" "\\.fvwm2rc\\'")
308 nil 365 nil
309 "Generic mode for FVWM configuration files." 366 "Generic mode for FVWM configuration files."
310 :group 'generic-x)) 367 :group 'generic-x-modes))
311 368
312;;; X Resource 369;;; X Resource
313;; I'm pretty sure I've seen an actual mode to do this, but I don't 370;; I'm pretty sure I've seen an actual mode to do this, but I don't
@@ -321,7 +378,7 @@ generic-x to enable the specified modes."
321 '("\\.Xdefaults\\'" "\\.Xresources\\'" "\\.Xenvironment\\'" "\\.ad\\'") 378 '("\\.Xdefaults\\'" "\\.Xresources\\'" "\\.Xenvironment\\'" "\\.ad\\'")
322 nil 379 nil
323 "Generic mode for X Resource configuration files." 380 "Generic mode for X Resource configuration files."
324 :group 'generic-x)) 381 :group 'generic-x-modes))
325 382
326;;; Hosts 383;;; Hosts
327(when (memq 'hosts-generic-mode generic-extras-enable-list) 384(when (memq 'hosts-generic-mode generic-extras-enable-list)
@@ -333,7 +390,7 @@ generic-x to enable the specified modes."
333 '("[hH][oO][sS][tT][sS]\\'") 390 '("[hH][oO][sS][tT][sS]\\'")
334 nil 391 nil
335 "Generic mode for HOSTS files." 392 "Generic mode for HOSTS files."
336 :group 'generic-x)) 393 :group 'generic-x-modes))
337 394
338;;; Windows INF files 395;;; Windows INF files
339(when (memq 'inf-generic-mode generic-extras-enable-list) 396(when (memq 'inf-generic-mode generic-extras-enable-list)
@@ -345,7 +402,7 @@ generic-x to enable the specified modes."
345 '("\\.[iI][nN][fF]\\'") 402 '("\\.[iI][nN][fF]\\'")
346 '(generic-bracket-support) 403 '(generic-bracket-support)
347 "Generic mode for MS-Windows INF files." 404 "Generic mode for MS-Windows INF files."
348 :group 'generic-x)) 405 :group 'generic-x-modes))
349 406
350;;; Windows INI files 407;;; Windows INI files
351;; Should define escape character as well! 408;; Should define escape character as well!
@@ -368,7 +425,7 @@ generic-x to enable the specified modes."
368 "Generic mode for MS-Windows INI files. 425 "Generic mode for MS-Windows INI files.
369You can use `ini-generic-mode-find-file-hook' to enter this mode 426You can use `ini-generic-mode-find-file-hook' to enter this mode
370automatically for INI files whose names do not end in \".ini\"." 427automatically for INI files whose names do not end in \".ini\"."
371 :group 'generic-x) 428 :group 'generic-x-modes)
372 429
373(defun ini-generic-mode-find-file-hook () 430(defun ini-generic-mode-find-file-hook ()
374 "Hook function to enter Ini-Generic mode automatically for INI files. 431 "Hook function to enter Ini-Generic mode automatically for INI files.
@@ -397,7 +454,7 @@ like an INI file. You can add this hook to `find-file-hook'."
397 (setq imenu-generic-expression 454 (setq imenu-generic-expression
398 '((nil "^\\s-*\\(.*\\)\\s-*=" 1)))))) 455 '((nil "^\\s-*\\(.*\\)\\s-*=" 1))))))
399 "Generic mode for MS-Windows Registry files." 456 "Generic mode for MS-Windows Registry files."
400 :group 'generic-x)) 457 :group 'generic-x-modes))
401 458
402;;; DOS/Windows BAT files 459;;; DOS/Windows BAT files
403(when (memq 'bat-generic-mode generic-extras-enable-list) 460(when (memq 'bat-generic-mode generic-extras-enable-list)
@@ -472,10 +529,10 @@ like an INI file. You can add this hook to `find-file-hook'."
472 "\\`[aA][uU][tT][oO][eE][xX][eE][cC]\\.") 529 "\\`[aA][uU][tT][oO][eE][xX][eE][cC]\\.")
473 '(generic-bat-mode-setup-function) 530 '(generic-bat-mode-setup-function)
474 "Generic mode for MS-Windows BAT files." 531 "Generic mode for MS-Windows BAT files."
475 :group 'generic-x) 532 :group 'generic-x-modes)
476 533
477(defvar bat-generic-mode-syntax-table nil 534(defvar bat-generic-mode-syntax-table nil
478 "Syntax table in use in bat-generic-mode buffers.") 535 "Syntax table in use in `bat-generic-mode' buffers.")
479 536
480(defvar bat-generic-mode-keymap (make-sparse-keymap) 537(defvar bat-generic-mode-keymap (make-sparse-keymap)
481 "Keymap for bet-generic-mode.") 538 "Keymap for bet-generic-mode.")
@@ -552,7 +609,7 @@ like an INI file. You can add this hook to `find-file-hook'."
552 (setq imenu-generic-expression 609 (setq imenu-generic-expression
553 '((nil "\\s-/\\([^/]+\\)/[i, \t\n]" 1)))))) 610 '((nil "\\s-/\\([^/]+\\)/[i, \t\n]" 1))))))
554 "Mode for Mailagent rules files." 611 "Mode for Mailagent rules files."
555 :group 'generic-x)) 612 :group 'generic-x-modes))
556 613
557;; Solaris/Sys V prototype files 614;; Solaris/Sys V prototype files
558(when (memq 'prototype-generic-mode generic-extras-enable-list) 615(when (memq 'prototype-generic-mode generic-extras-enable-list)
@@ -576,7 +633,7 @@ like an INI file. You can add this hook to `find-file-hook'."
576 '("prototype\\'") 633 '("prototype\\'")
577 nil 634 nil
578 "Mode for Sys V prototype files." 635 "Mode for Sys V prototype files."
579 :group 'generic-x)) 636 :group 'generic-x-modes))
580 637
581;; Solaris/Sys V pkginfo files 638;; Solaris/Sys V pkginfo files
582(when (memq 'pkginfo-generic-mode generic-extras-enable-list) 639(when (memq 'pkginfo-generic-mode generic-extras-enable-list)
@@ -590,10 +647,12 @@ like an INI file. You can add this hook to `find-file-hook'."
590 '("pkginfo\\'") 647 '("pkginfo\\'")
591 nil 648 nil
592 "Mode for Sys V pkginfo files." 649 "Mode for Sys V pkginfo files."
593 :group 'generic-x)) 650 :group 'generic-x-modes))
594 651
595;; Javascript mode 652;; Javascript mode
596;; Includes extra keywords from Armando Singer [asinger@MAIL.COLGATE.EDU] 653;; Includes extra keywords from Armando Singer [asinger@MAIL.COLGATE.EDU]
654(when (memq 'javascript-generic-mode generic-extras-enable-list)
655
597(define-generic-mode javascript-generic-mode 656(define-generic-mode javascript-generic-mode
598 '("//" ("/*" . "*/")) 657 '("//" ("/*" . "*/"))
599 '("break" 658 '("break"
@@ -668,9 +727,11 @@ like an INI file. You can add this hook to `find-file-hook'."
668 '((nil "^function\\s-+\\([A-Za-z0-9_]+\\)" 1) 727 '((nil "^function\\s-+\\([A-Za-z0-9_]+\\)" 1)
669 ("*Variables*" "^var\\s-+\\([A-Za-z0-9_]+\\)" 1)))))) 728 ("*Variables*" "^var\\s-+\\([A-Za-z0-9_]+\\)" 1))))))
670 "Mode for JavaScript files." 729 "Mode for JavaScript files."
671 :group 'generic-x) 730 :group 'generic-x-modes))
672 731
673;; VRML files 732;; VRML files
733(when (memq 'vrml-generic-mode generic-extras-enable-list)
734
674(define-generic-mode vrml-generic-mode 735(define-generic-mode vrml-generic-mode
675 '(?#) 736 '(?#)
676 '("DEF" 737 '("DEF"
@@ -720,9 +781,11 @@ like an INI file. You can add this hook to `find-file-hook'."
720 "DEF\\s-+\\([-A-Za-z0-9_]+\\)\\s-+\\([A-Za-z0-9]+\\)\\s-*{" 781 "DEF\\s-+\\([-A-Za-z0-9_]+\\)\\s-+\\([A-Za-z0-9]+\\)\\s-*{"
721 1)))))) 782 1))))))
722 "Generic Mode for VRML files." 783 "Generic Mode for VRML files."
723 :group 'generic-x) 784 :group 'generic-x-modes))
724 785
725;; Java Manifests 786;; Java Manifests
787(when (memq 'java-manifest-generic-mode generic-extras-enable-list)
788
726(define-generic-mode java-manifest-generic-mode 789(define-generic-mode java-manifest-generic-mode
727 '(?#) 790 '(?#)
728 '("Name" 791 '("Name"
@@ -740,9 +803,11 @@ like an INI file. You can add this hook to `find-file-hook'."
740 '("[mM][aA][nN][iI][fF][eE][sS][tT]\\.[mM][fF]\\'") 803 '("[mM][aA][nN][iI][fF][eE][sS][tT]\\.[mM][fF]\\'")
741 nil 804 nil
742 "Mode for Java Manifest files" 805 "Mode for Java Manifest files"
743 :group 'generic-x) 806 :group 'generic-x-modes))
744 807
745;; Java properties files 808;; Java properties files
809(when (memq 'java-properties-generic-mode generic-extras-enable-list)
810
746(define-generic-mode java-properties-generic-mode 811(define-generic-mode java-properties-generic-mode
747 '(?! ?#) 812 '(?! ?#)
748 nil 813 nil
@@ -771,7 +836,7 @@ like an INI file. You can add this hook to `find-file-hook'."
771 (setq imenu-generic-expression 836 (setq imenu-generic-expression
772 '((nil "^\\([^#! \t\n\r=:]+\\)" 1)))))) 837 '((nil "^\\([^#! \t\n\r=:]+\\)" 1))))))
773 "Mode for Java properties files." 838 "Mode for Java properties files."
774 :group 'generic-x) 839 :group 'generic-x-modes))
775 840
776;; C shell alias definitions 841;; C shell alias definitions
777(when (memq 'alias-generic-mode generic-extras-enable-list) 842(when (memq 'alias-generic-mode generic-extras-enable-list)
@@ -790,7 +855,7 @@ like an INI file. You can add this hook to `find-file-hook'."
790 (setq imenu-generic-expression 855 (setq imenu-generic-expression
791 '((nil "^\\(alias\\|unalias\\)\\s-+\\([-a-zA-Z0-9_]+\\)" 2)))))) 856 '((nil "^\\(alias\\|unalias\\)\\s-+\\([-a-zA-Z0-9_]+\\)" 2))))))
792 "Mode for C Shell alias files." 857 "Mode for C Shell alias files."
793 :group 'generic-x)) 858 :group 'generic-x-modes))
794 859
795;;; Windows RC files 860;;; Windows RC files
796;; Contributed by ACorreir@pervasive-sw.com (Alfred Correira) 861;; Contributed by ACorreir@pervasive-sw.com (Alfred Correira)
@@ -883,7 +948,7 @@ like an INI file. You can add this hook to `find-file-hook'."
883 '("\\.[rR][cC]\\'") 948 '("\\.[rR][cC]\\'")
884 nil 949 nil
885 "Generic mode for MS-Windows Resource files." 950 "Generic mode for MS-Windows Resource files."
886 :group 'generic-x)) 951 :group 'generic-x-modes))
887 952
888;; InstallShield RUL files 953;; InstallShield RUL files
889;; Contributed by Alfred.Correira@Pervasive.Com 954;; Contributed by Alfred.Correira@Pervasive.Com
@@ -1436,7 +1501,7 @@ like an INI file. You can add this hook to `find-file-hook'."
1436 "Function argument constants used in InstallShield 3 and 5.")) 1501 "Function argument constants used in InstallShield 3 and 5."))
1437 1502
1438(defvar rul-generic-mode-syntax-table nil 1503(defvar rul-generic-mode-syntax-table nil
1439 "Syntax table to use in rul-generic-mode buffers.") 1504 "Syntax table to use in `rul-generic-mode' buffers.")
1440 1505
1441(setq rul-generic-mode-syntax-table 1506(setq rul-generic-mode-syntax-table
1442 (make-syntax-table c++-mode-syntax-table)) 1507 (make-syntax-table c++-mode-syntax-table))
@@ -1504,7 +1569,7 @@ like an INI file. You can add this hook to `find-file-hook'."
1504 '("\\.[rR][uU][lL]\\'") 1569 '("\\.[rR][uU][lL]\\'")
1505 '(generic-rul-mode-setup-function) 1570 '(generic-rul-mode-setup-function)
1506 "Generic mode for InstallShield RUL files." 1571 "Generic mode for InstallShield RUL files."
1507 :group 'generic-x) 1572 :group 'generic-x-modes)
1508 1573
1509(define-skeleton rul-if 1574(define-skeleton rul-if
1510 "Insert an if statement." 1575 "Insert an if statement."
@@ -1531,6 +1596,8 @@ like an INI file. You can add this hook to `find-file-hook'."
1531 > "end;")) 1596 > "end;"))
1532 1597
1533;; Additions by ACorreir@pervasive-sw.com (Alfred Correira) 1598;; Additions by ACorreir@pervasive-sw.com (Alfred Correira)
1599(when (memq 'mailrc-generic-mode generic-extras-enable-list)
1600
1534(define-generic-mode mailrc-generic-mode 1601(define-generic-mode mailrc-generic-mode
1535 '(?#) 1602 '(?#)
1536 '("alias" 1603 '("alias"
@@ -1553,7 +1620,7 @@ like an INI file. You can add this hook to `find-file-hook'."
1553 '("\\.mailrc\\'") 1620 '("\\.mailrc\\'")
1554 nil 1621 nil
1555 "Mode for mailrc files." 1622 "Mode for mailrc files."
1556 :group 'generic-x) 1623 :group 'generic-x-modes))
1557 1624
1558;; Inetd.conf 1625;; Inetd.conf
1559(when (memq 'inetd-conf-generic-mode generic-extras-enable-list) 1626(when (memq 'inetd-conf-generic-mode generic-extras-enable-list)
@@ -1574,7 +1641,7 @@ like an INI file. You can add this hook to `find-file-hook'."
1574 (lambda () 1641 (lambda ()
1575 (setq imenu-generic-expression 1642 (setq imenu-generic-expression
1576 '((nil "^\\([-A-Za-z0-9_]+\\)" 1)))))) 1643 '((nil "^\\([-A-Za-z0-9_]+\\)" 1))))))
1577 :group 'generic-x)) 1644 :group 'generic-x-modes))
1578 1645
1579;; Services 1646;; Services
1580(when (memq 'etc-services-generic-mode generic-extras-enable-list) 1647(when (memq 'etc-services-generic-mode generic-extras-enable-list)
@@ -1593,7 +1660,7 @@ like an INI file. You can add this hook to `find-file-hook'."
1593 (lambda () 1660 (lambda ()
1594 (setq imenu-generic-expression 1661 (setq imenu-generic-expression
1595 '((nil "^\\([-A-Za-z0-9_]+\\)" 1)))))) 1662 '((nil "^\\([-A-Za-z0-9_]+\\)" 1))))))
1596 :group 'generic-x)) 1663 :group 'generic-x-modes))
1597 1664
1598;; Password and Group files 1665;; Password and Group files
1599(when (memq 'etc-passwd-generic-mode generic-extras-enable-list) 1666(when (memq 'etc-passwd-generic-mode generic-extras-enable-list)
@@ -1636,7 +1703,7 @@ like an INI file. You can add this hook to `find-file-hook'."
1636 (lambda () 1703 (lambda ()
1637 (setq imenu-generic-expression 1704 (setq imenu-generic-expression
1638 '((nil "^\\([-A-Za-z0-9_]+\\):" 1)))))) 1705 '((nil "^\\([-A-Za-z0-9_]+\\):" 1))))))
1639 :group 'generic-x)) 1706 :group 'generic-x-modes))
1640 1707
1641;; Fstab 1708;; Fstab
1642(when (memq 'etc-fstab-generic-mode generic-extras-enable-list) 1709(when (memq 'etc-fstab-generic-mode generic-extras-enable-list)
@@ -1687,9 +1754,11 @@ like an INI file. You can add this hook to `find-file-hook'."
1687 (lambda () 1754 (lambda ()
1688 (setq imenu-generic-expression 1755 (setq imenu-generic-expression
1689 '((nil "^\\([/-A-Za-z0-9_]+\\)\\s-+" 1)))))) 1756 '((nil "^\\([/-A-Za-z0-9_]+\\)\\s-+" 1))))))
1690 :group 'generic-x)) 1757 :group 'generic-x-modes))
1691 1758
1692;; From Jacques Duthen <jacques.duthen@sncf.fr> 1759;; From Jacques Duthen <jacques.duthen@sncf.fr>
1760(when (memq 'show-tabs-generic-mode generic-extras-enable-list)
1761
1693(eval-when-compile 1762(eval-when-compile
1694 1763
1695(defconst show-tabs-generic-mode-font-lock-defaults-1 1764(defconst show-tabs-generic-mode-font-lock-defaults-1
@@ -1711,7 +1780,7 @@ like an INI file. You can add this hook to `find-file-hook'."
1711 (((class color)) (:background "red")) 1780 (((class color)) (:background "red"))
1712 (t (:weight bold))) 1781 (t (:weight bold)))
1713 "Font Lock mode face used to highlight TABs." 1782 "Font Lock mode face used to highlight TABs."
1714 :group 'generic-x) 1783 :group 'generic-x-modes)
1715 1784
1716(defface show-tabs-space-face 1785(defface show-tabs-space-face
1717 '((((class grayscale) (background light)) (:background "DimGray" :weight bold)) 1786 '((((class grayscale) (background light)) (:background "DimGray" :weight bold))
@@ -1720,7 +1789,7 @@ like an INI file. You can add this hook to `find-file-hook'."
1720 (((class color)) (:background "yellow")) 1789 (((class color)) (:background "yellow"))
1721 (t (:weight bold))) 1790 (t (:weight bold)))
1722 "Font Lock mode face used to highlight spaces." 1791 "Font Lock mode face used to highlight spaces."
1723 :group 'generic-x) 1792 :group 'generic-x-modes)
1724 1793
1725(define-generic-mode show-tabs-generic-mode 1794(define-generic-mode show-tabs-generic-mode
1726 nil ;; no comment char 1795 nil ;; no comment char
@@ -1730,12 +1799,14 @@ like an INI file. You can add this hook to `find-file-hook'."
1730 ;; '(show-tabs-generic-mode-hook-fun) 1799 ;; '(show-tabs-generic-mode-hook-fun)
1731 nil 1800 nil
1732 "Generic mode to show tabs and trailing spaces" 1801 "Generic mode to show tabs and trailing spaces"
1733 :group 'generic-x) 1802 :group 'generic-x-modes))
1734 1803
1735;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1804;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1736;; DNS modes 1805;; DNS modes
1737;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1806;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1738 1807
1808(when (memq 'named-boot-generic-mode generic-extras-enable-list)
1809
1739(define-generic-mode named-boot-generic-mode 1810(define-generic-mode named-boot-generic-mode
1740 ;; List of comment characters 1811 ;; List of comment characters
1741 '(?\;) 1812 '(?\;)
@@ -1752,7 +1823,9 @@ like an INI file. You can add this hook to `find-file-hook'."
1752 '("/etc/named.boot\\'") 1823 '("/etc/named.boot\\'")
1753 ;; List of set up functions to call 1824 ;; List of set up functions to call
1754 nil 1825 nil
1755 :group 'generic-x) 1826 :group 'generic-x-modes))
1827
1828(when (memq 'named-database-generic-mode generic-extras-enable-list)
1756 1829
1757(define-generic-mode named-database-generic-mode 1830(define-generic-mode named-database-generic-mode
1758 ;; List of comment characters 1831 ;; List of comment characters
@@ -1766,7 +1839,7 @@ like an INI file. You can add this hook to `find-file-hook'."
1766 nil 1839 nil
1767 ;; List of set up functions to call 1840 ;; List of set up functions to call
1768 nil 1841 nil
1769 :group 'generic-x) 1842 :group 'generic-x-modes)
1770 1843
1771(defvar named-database-time-string "%Y%m%d%H" 1844(defvar named-database-time-string "%Y%m%d%H"
1772 "Timestring for named serial numbers.") 1845 "Timestring for named serial numbers.")
@@ -1774,7 +1847,9 @@ like an INI file. You can add this hook to `find-file-hook'."
1774(defun named-database-print-serial () 1847(defun named-database-print-serial ()
1775 "Print a serial number based on the current date." 1848 "Print a serial number based on the current date."
1776 (interactive) 1849 (interactive)
1777 (insert (format-time-string named-database-time-string (current-time)))) 1850 (insert (format-time-string named-database-time-string (current-time)))))
1851
1852(when (memq 'resolve-conf-generic-mode generic-extras-enable-list)
1778 1853
1779(define-generic-mode resolve-conf-generic-mode 1854(define-generic-mode resolve-conf-generic-mode
1780 ;; List of comment characters 1855 ;; List of comment characters
@@ -1787,12 +1862,14 @@ like an INI file. You can add this hook to `find-file-hook'."
1787 '("/etc/resolv[e]?.conf\\'") 1862 '("/etc/resolv[e]?.conf\\'")
1788 ;; List of set up functions to call 1863 ;; List of set up functions to call
1789 nil 1864 nil
1790 :group 'generic-x) 1865 :group 'generic-x-modes))
1791 1866
1792;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1867;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1793;; Modes for spice and common electrical engineering circuit netlist formats 1868;; Modes for spice and common electrical engineering circuit netlist formats
1794;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1869;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1795 1870
1871(when (memq 'spice-generic-mode generic-extras-enable-list)
1872
1796(define-generic-mode spice-generic-mode 1873(define-generic-mode spice-generic-mode
1797 nil 1874 nil
1798 '("and" 1875 '("and"
@@ -1830,7 +1907,9 @@ like an INI file. You can add this hook to `find-file-hook'."
1830 (lambda() 1907 (lambda()
1831 (setq font-lock-defaults '(generic-font-lock-keywords nil t))))) 1908 (setq font-lock-defaults '(generic-font-lock-keywords nil t)))))
1832 "Generic mode for SPICE circuit netlist files." 1909 "Generic mode for SPICE circuit netlist files."
1833 :group 'generic-x) 1910 :group 'generic-x-modes))
1911
1912(when (memq 'ibis-generic-mode generic-extras-enable-list)
1834 1913
1835(define-generic-mode ibis-generic-mode 1914(define-generic-mode ibis-generic-mode
1836 '(?|) 1915 '(?|)
@@ -1840,7 +1919,9 @@ like an INI file. You can add this hook to `find-file-hook'."
1840 '("\\.[iI][bB][sS]\\'") 1919 '("\\.[iI][bB][sS]\\'")
1841 '(generic-bracket-support) 1920 '(generic-bracket-support)
1842 "Generic mode for IBIS circuit netlist files." 1921 "Generic mode for IBIS circuit netlist files."
1843 :group 'generic-x) 1922 :group 'generic-x-modes))
1923
1924(when (memq 'astap-generic-mode generic-extras-enable-list)
1844 1925
1845(define-generic-mode astap-generic-mode 1926(define-generic-mode astap-generic-mode
1846 nil 1927 nil
@@ -1876,7 +1957,9 @@ like an INI file. You can add this hook to `find-file-hook'."
1876 (lambda() 1957 (lambda()
1877 (setq font-lock-defaults '(generic-font-lock-keywords nil t))))) 1958 (setq font-lock-defaults '(generic-font-lock-keywords nil t)))))
1878 "Generic mode for ASTAP circuit netlist files." 1959 "Generic mode for ASTAP circuit netlist files."
1879 :group 'generic-x) 1960 :group 'generic-x-modes))
1961
1962(when (memq 'etc-modules-conf-generic-mode generic-extras-enable-list)
1880 1963
1881(define-generic-mode etc-modules-conf-generic-mode 1964(define-generic-mode etc-modules-conf-generic-mode
1882 ;; List of comment characters 1965 ;; List of comment characters
@@ -1919,7 +2002,7 @@ like an INI file. You can add this hook to `find-file-hook'."
1919 '("/etc/modules.conf" "/etc/conf.modules") 2002 '("/etc/modules.conf" "/etc/conf.modules")
1920 ;; List of set up functions to call 2003 ;; List of set up functions to call
1921 nil 2004 nil
1922 :group 'generic-x) 2005 :group 'generic-x-modes))
1923 2006
1924(provide 'generic-x) 2007(provide 'generic-x)
1925 2008