generic-x.el 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833
  1. ;;; generic-x.el --- A collection of generic modes
  2. ;; Copyright (C) 1997-1998, 2001-2017 Free Software Foundation, Inc.
  3. ;; Author: Peter Breton <pbreton@cs.umb.edu>
  4. ;; Created: Tue Oct 08 1996
  5. ;; Keywords: generic, comment, font-lock
  6. ;; Package: emacs
  7. ;; This file is part of GNU Emacs.
  8. ;; GNU Emacs is free software: you can redistribute it and/or modify
  9. ;; it under the terms of the GNU General Public License as published by
  10. ;; the Free Software Foundation, either version 3 of the License, or
  11. ;; (at your option) any later version.
  12. ;; GNU Emacs is distributed in the hope that it will be useful,
  13. ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. ;; GNU General Public License for more details.
  16. ;; You should have received a copy of the GNU General Public License
  17. ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
  18. ;;; Commentary:
  19. ;;
  20. ;; This file contains a collection of generic modes.
  21. ;;
  22. ;; INSTALLATION:
  23. ;;
  24. ;; Add this line to your init file:
  25. ;;
  26. ;; (require 'generic-x)
  27. ;;
  28. ;; You can decide which modes to load by setting the variable
  29. ;; `generic-extras-enable-list'. Its default value is platform-
  30. ;; specific. The recommended way to set this variable is through
  31. ;; customize:
  32. ;;
  33. ;; M-x customize-option RET generic-extras-enable-list RET
  34. ;;
  35. ;; This lets you select generic modes from the list of available
  36. ;; modes. If you manually set `generic-extras-enable-list' in your
  37. ;; .emacs, do it BEFORE loading generic-x with (require 'generic-x).
  38. ;;
  39. ;; You can also send in new modes; if the file types are reasonably
  40. ;; common, we would like to install them.
  41. ;;
  42. ;; DEFAULT GENERIC MODE:
  43. ;;
  44. ;; This file provides a hook which automatically puts a file into
  45. ;; `default-generic-mode' if the first few lines of a file in
  46. ;; fundamental mode start with a hash comment character. To disable
  47. ;; this functionality, set the variable `generic-use-find-file-hook'
  48. ;; to nil BEFORE loading generic-x. See the variables
  49. ;; `generic-lines-to-scan' and `generic-find-file-regexp' for
  50. ;; customization options.
  51. ;;
  52. ;; PROBLEMS WHEN USED WITH FOLDING MODE:
  53. ;;
  54. ;; [The following relates to the obsolete selective-display technique.
  55. ;; Folding mode should use invisible text properties instead. -- Dave
  56. ;; Love]
  57. ;;
  58. ;; From Anders Lindgren
  59. ;;
  60. ;; Problem summary: Wayne Adams has found a problem when using folding
  61. ;; mode in conjunction with font-lock for a mode defined in
  62. ;; `generic-x.el'.
  63. ;;
  64. ;; The problem, as Wayne described it, was that error messages of the
  65. ;; following form appeared when both font-lock and folding are used:
  66. ;;
  67. ;; > - various msgs including "Fontifying region...(error Stack
  68. ;; > overflow in regexp matcher)" appear
  69. ;;
  70. ;; I have just tracked down the cause of the problem. The regexp's in
  71. ;; `generic-x.el' do not take into account the way that folding hides
  72. ;; sections of the buffer. The technique is known as
  73. ;; `selective-display' and has been available for a very long time (I
  74. ;; started using it back in the good old Emacs 18 days). Basically, a
  75. ;; section is hidden by creating one very long line were the newline
  76. ;; character (C-j) is replaced by a linefeed (C-m) character.
  77. ;;
  78. ;; Many other hiding packages, besides folding, use the same technique,
  79. ;; the problem should occur when using them as well.
  80. ;;
  81. ;; The erroneous lines in `generic-x.el' look like the following (this
  82. ;; example is from the `ini' section):
  83. ;;
  84. ;; '(("^\\(\\[.*\\]\\)" 1 'font-lock-constant-face)
  85. ;; ("^\\(.*\\)=" 1 'font-lock-variable-name-face)
  86. ;;
  87. ;; The intention of these lines is to highlight lines of the following
  88. ;; form:
  89. ;;
  90. ;; [foo]
  91. ;; bar = xxx
  92. ;;
  93. ;; However, since the `.' regexp symbol matches the linefeed character
  94. ;; the entire folded section is searched, resulting in a regexp stack
  95. ;; overflow.
  96. ;;
  97. ;; Solution suggestion: Instead of using ".", use the sequence
  98. ;; "[^\n\r]". This will make the rules behave just as before, but
  99. ;; they will work together with selective-display.
  100. ;;; Code:
  101. (eval-when-compile (require 'font-lock))
  102. (defgroup generic-x nil
  103. "A collection of generic modes."
  104. :prefix "generic-"
  105. :group 'data
  106. :version "20.3")
  107. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  108. ;; Default-Generic mode
  109. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  110. (defcustom generic-use-find-file-hook t
  111. "If non-nil, add a hook to enter `default-generic-mode' automatically.
  112. This is done if the first few lines of a file in fundamental mode
  113. start with a hash comment character."
  114. :group 'generic-x
  115. :type 'boolean)
  116. (defcustom generic-lines-to-scan 3
  117. "Number of lines that `generic-mode-find-file-hook' looks at.
  118. Relevant when deciding whether to enter Default-Generic mode automatically.
  119. This variable should be set to a small positive number."
  120. :group 'generic-x
  121. :type 'integer)
  122. (defcustom generic-find-file-regexp "^#"
  123. "Regular expression used by `generic-mode-find-file-hook'.
  124. Files in fundamental mode whose first few lines contain a match
  125. for this regexp, should be put into Default-Generic mode instead.
  126. The number of lines tested for the matches is specified by the
  127. value of the variable `generic-lines-to-scan', which see."
  128. :group 'generic-x
  129. :type 'regexp)
  130. (defcustom generic-ignore-files-regexp "[Tt][Aa][Gg][Ss]\\'"
  131. "Regular expression used by `generic-mode-find-file-hook'.
  132. Files whose names match this regular expression should not be put
  133. into Default-Generic mode, even if they have lines which match
  134. the regexp in `generic-find-file-regexp'. If the value is nil,
  135. `generic-mode-find-file-hook' does not check the file names."
  136. :group 'generic-x
  137. :type '(choice (const :tag "Don't check file names" nil) regexp))
  138. ;; This generic mode is always defined
  139. (define-generic-mode default-generic-mode (list ?#) nil nil nil nil)
  140. ;; A more general solution would allow us to enter generic-mode for
  141. ;; *any* comment character, but would require us to synthesize a new
  142. ;; generic-mode on the fly. I think this gives us most of what we
  143. ;; want.
  144. (defun generic-mode-find-file-hook ()
  145. "Hook function to enter Default-Generic mode automatically.
  146. Done if the first few lines of a file in Fundamental mode start
  147. with a match for the regexp in `generic-find-file-regexp', unless
  148. the file's name matches the regexp which is the value of the
  149. variable `generic-ignore-files-regexp'.
  150. This hook will be installed if the variable
  151. `generic-use-find-file-hook' is non-nil. The variable
  152. `generic-lines-to-scan' determines the number of lines to look at."
  153. (when (and (eq major-mode 'fundamental-mode)
  154. (or (null generic-ignore-files-regexp)
  155. (not (string-match-p
  156. generic-ignore-files-regexp
  157. (file-name-sans-versions buffer-file-name)))))
  158. (save-excursion
  159. (goto-char (point-min))
  160. (when (re-search-forward generic-find-file-regexp
  161. (save-excursion
  162. (forward-line generic-lines-to-scan)
  163. (point)) t)
  164. (goto-char (point-min))
  165. (default-generic-mode)))))
  166. (and generic-use-find-file-hook
  167. (add-hook 'find-file-hook 'generic-mode-find-file-hook))
  168. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  169. ;; Other Generic modes
  170. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  171. ;; If you add a generic mode to this file, put it in one of these four
  172. ;; lists as well.
  173. (defconst generic-default-modes
  174. '(apache-conf-generic-mode
  175. apache-log-generic-mode
  176. hosts-generic-mode
  177. java-manifest-generic-mode
  178. java-properties-generic-mode
  179. javascript-generic-mode
  180. show-tabs-generic-mode
  181. vrml-generic-mode)
  182. "List of generic modes that are defined by default.")
  183. (defconst generic-mswindows-modes
  184. '(bat-generic-mode
  185. inf-generic-mode
  186. ini-generic-mode
  187. rc-generic-mode
  188. reg-generic-mode
  189. rul-generic-mode)
  190. "List of generic modes that are defined by default on MS-Windows.")
  191. (defconst generic-unix-modes
  192. '(alias-generic-mode
  193. ansible-inventory-generic-mode
  194. etc-fstab-generic-mode
  195. etc-modules-conf-generic-mode
  196. etc-passwd-generic-mode
  197. etc-services-generic-mode
  198. etc-sudoers-generic-mode
  199. fvwm-generic-mode
  200. inetd-conf-generic-mode
  201. mailagent-rules-generic-mode
  202. mailrc-generic-mode
  203. named-boot-generic-mode
  204. named-database-generic-mode
  205. prototype-generic-mode
  206. resolve-conf-generic-mode
  207. samba-generic-mode
  208. x-resource-generic-mode
  209. xmodmap-generic-mode)
  210. "List of generic modes that are defined by default on Unix.")
  211. (defconst generic-other-modes
  212. '(astap-generic-mode
  213. ibis-generic-mode
  214. pkginfo-generic-mode
  215. spice-generic-mode)
  216. "List of generic modes that are not defined by default.")
  217. (defcustom generic-define-mswindows-modes
  218. (memq system-type '(windows-nt ms-dos))
  219. "Non-nil means the modes in `generic-mswindows-modes' will be defined.
  220. This is a list of MS-Windows specific generic modes. This variable
  221. only affects the default value of `generic-extras-enable-list'."
  222. :group 'generic-x
  223. :type 'boolean
  224. :version "22.1")
  225. (make-obsolete-variable 'generic-define-mswindows-modes 'generic-extras-enable-list "22.1")
  226. (defcustom generic-define-unix-modes
  227. (not (memq system-type '(windows-nt ms-dos)))
  228. "Non-nil means the modes in `generic-unix-modes' will be defined.
  229. This is a list of Unix specific generic modes. This variable only
  230. affects the default value of `generic-extras-enable-list'."
  231. :group 'generic-x
  232. :type 'boolean
  233. :version "22.1")
  234. (make-obsolete-variable 'generic-define-unix-modes 'generic-extras-enable-list "22.1")
  235. (defcustom generic-extras-enable-list
  236. (append generic-default-modes
  237. (if generic-define-mswindows-modes generic-mswindows-modes)
  238. (if generic-define-unix-modes generic-unix-modes)
  239. nil)
  240. "List of generic modes to define.
  241. Each entry in the list should be a symbol. If you set this variable
  242. directly, without using customize, you must reload generic-x to put
  243. your changes into effect."
  244. :group 'generic-x
  245. :type (let (list)
  246. (dolist (mode
  247. (sort (append generic-default-modes
  248. generic-mswindows-modes
  249. generic-unix-modes
  250. generic-other-modes
  251. nil)
  252. (lambda (a b)
  253. (string< (symbol-name b)
  254. (symbol-name a))))
  255. (cons 'set list))
  256. (push `(const ,mode) list)))
  257. :set (lambda (s v)
  258. (set-default s v)
  259. (unless load-in-progress
  260. (load "generic-x")))
  261. :version "22.1")
  262. ;;; Apache
  263. (when (memq 'apache-conf-generic-mode generic-extras-enable-list)
  264. (define-generic-mode apache-conf-generic-mode
  265. '(?#)
  266. nil
  267. '(("^\\s-*\\(<.*>\\)" 1 font-lock-constant-face)
  268. ("^\\s-*\\(\\sw+\\)\\s-" 1 font-lock-variable-name-face))
  269. '("srm\\.conf\\'" "httpd\\.conf\\'" "access\\.conf\\'")
  270. (list
  271. (function
  272. (lambda ()
  273. (setq imenu-generic-expression
  274. '((nil "^\\([-A-Za-z0-9_]+\\)" 1)
  275. ("*Directories*" "^\\s-*<Directory\\s-*\\([^>]+\\)>" 1)
  276. ("*Locations*" "^\\s-*<Location\\s-*\\([^>]+\\)>" 1))))))
  277. "Generic mode for Apache or HTTPD configuration files."))
  278. (when (memq 'apache-log-generic-mode generic-extras-enable-list)
  279. (define-generic-mode apache-log-generic-mode
  280. nil
  281. nil
  282. ;; Hostname ? user date request return-code number-of-bytes
  283. '(("^\\([-a-zA-z0-9.]+\\) - [-A-Za-z]+ \\(\\[.*\\]\\)"
  284. (1 font-lock-constant-face)
  285. (2 font-lock-variable-name-face)))
  286. '("access_log\\'")
  287. nil
  288. "Generic mode for Apache log files."))
  289. ;;; Samba
  290. (when (memq 'samba-generic-mode generic-extras-enable-list)
  291. (define-generic-mode samba-generic-mode
  292. '(?\; ?#)
  293. nil
  294. '(("^\\(\\[.*\\]\\)" 1 font-lock-constant-face)
  295. ("^\\s-*\\(.+\\)=\\([^\r\n]*\\)"
  296. (1 font-lock-variable-name-face)
  297. (2 font-lock-type-face)))
  298. '("smb\\.conf\\'")
  299. '(generic-bracket-support)
  300. "Generic mode for Samba configuration files."))
  301. ;;; Fvwm
  302. ;; This is pretty basic. Also, modes for other window managers could
  303. ;; be defined as well.
  304. (when (memq 'fvwm-generic-mode generic-extras-enable-list)
  305. (define-generic-mode fvwm-generic-mode
  306. '(?#)
  307. '("AddToMenu"
  308. "AddToFunc"
  309. "ButtonStyle"
  310. "EndFunction"
  311. "EndPopup"
  312. "Function"
  313. "IconPath"
  314. "Key"
  315. "ModulePath"
  316. "Mouse"
  317. "PixmapPath"
  318. "Popup"
  319. "Style")
  320. nil
  321. '("\\.fvwmrc\\'" "\\.fvwm2rc\\'")
  322. nil
  323. "Generic mode for FVWM configuration files."))
  324. ;;; X Resource
  325. ;; I'm pretty sure I've seen an actual mode to do this, but I don't
  326. ;; think it's standard with Emacs
  327. (when (memq 'x-resource-generic-mode generic-extras-enable-list)
  328. (define-generic-mode x-resource-generic-mode
  329. '(?!)
  330. nil
  331. '(("^\\([^:\n]+:\\)" 1 font-lock-variable-name-face))
  332. '("\\.Xdefaults\\'" "\\.Xresources\\'" "\\.Xenvironment\\'" "\\.ad\\'")
  333. nil
  334. "Generic mode for X Resource configuration files."))
  335. (if (memq 'xmodmap-generic-mode generic-extras-enable-list)
  336. (define-generic-mode xmodmap-generic-mode
  337. '(?!)
  338. '("add" "clear" "keycode" "keysym" "remove" "pointer")
  339. nil
  340. '("[xX]modmap\\(rc\\)?\\'")
  341. nil
  342. "Simple mode for xmodmap files."))
  343. ;;; Hosts
  344. (when (memq 'hosts-generic-mode generic-extras-enable-list)
  345. (define-generic-mode hosts-generic-mode
  346. '(?#)
  347. '("localhost")
  348. '(("\\([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+\\)" 1 font-lock-constant-face))
  349. '("[hH][oO][sS][tT][sS]\\'")
  350. nil
  351. "Generic mode for HOSTS files."))
  352. ;;; Windows INF files
  353. ;; If i-g-m-f-f-h is defined, then so is i-g-m.
  354. (declare-function ini-generic-mode "generic-x")
  355. (when (memq 'inf-generic-mode generic-extras-enable-list)
  356. (define-generic-mode inf-generic-mode
  357. '(?\;)
  358. nil
  359. '(("^\\(\\[.*\\]\\)" 1 font-lock-constant-face))
  360. '("\\.[iI][nN][fF]\\'")
  361. '(generic-bracket-support)
  362. "Generic mode for MS-Windows INF files."))
  363. ;;; Windows INI files
  364. ;; Should define escape character as well!
  365. (when (memq 'ini-generic-mode generic-extras-enable-list)
  366. (define-generic-mode ini-generic-mode
  367. '(?\;)
  368. nil
  369. '(("^\\(\\[.*\\]\\)" 1 font-lock-constant-face)
  370. ("^\\([^=\n\r]*\\)=\\([^\n\r]*\\)$"
  371. (1 font-lock-function-name-face)
  372. (2 font-lock-variable-name-face)))
  373. '("\\.[iI][nN][iI]\\'")
  374. (list
  375. (function
  376. (lambda ()
  377. (setq imenu-generic-expression
  378. '((nil "^\\[\\(.*\\)\\]" 1)
  379. ("*Variables*" "^\\s-*\\([^=]+\\)\\s-*=" 1))))))
  380. "Generic mode for MS-Windows INI files.
  381. You can use `ini-generic-mode-find-file-hook' to enter this mode
  382. automatically for INI files whose names do not end in \".ini\".")
  383. (defun ini-generic-mode-find-file-hook ()
  384. "Hook function to enter Ini-Generic mode automatically for INI files.
  385. Done if the first few lines of a file in Fundamental mode look
  386. like an INI file. You can add this hook to `find-file-hook'."
  387. (and (eq major-mode 'fundamental-mode)
  388. (save-excursion
  389. (goto-char (point-min))
  390. (and (looking-at "^\\s-*\\[.*\\]")
  391. (ini-generic-mode)))))
  392. (defalias 'generic-mode-ini-file-find-file-hook 'ini-generic-mode-find-file-hook))
  393. ;;; Windows REG files
  394. ;;; Unfortunately, Windows 95 and Windows NT have different REG file syntax!
  395. (when (memq 'reg-generic-mode generic-extras-enable-list)
  396. (define-generic-mode reg-generic-mode
  397. '(?\;)
  398. '("key" "classes_root" "REGEDIT" "REGEDIT4")
  399. '(("\\(\\[.*\\]\\)" 1 font-lock-constant-face)
  400. ("^\\([^\n\r]*\\)\\s-*=" 1 font-lock-variable-name-face))
  401. '("\\.[rR][eE][gG]\\'")
  402. (list
  403. (function
  404. (lambda ()
  405. (setq imenu-generic-expression
  406. '((nil "^\\s-*\\(.*\\)\\s-*=" 1))))))
  407. "Generic mode for MS-Windows Registry files."))
  408. (declare-function w32-shell-name "w32-fns" ())
  409. ;;; DOS/Windows BAT files
  410. (when (memq 'bat-generic-mode generic-extras-enable-list)
  411. (define-obsolete-function-alias 'bat-generic-mode 'bat-mode "24.4"))
  412. ;;; Mailagent
  413. ;; Mailagent is a Unix mail filtering program. Anyone wanna do a
  414. ;; generic mode for procmail?
  415. (when (memq 'mailagent-rules-generic-mode generic-extras-enable-list)
  416. (define-generic-mode mailagent-rules-generic-mode
  417. '(?#)
  418. '("SAVE" "DELETE" "PIPE" "ANNOTATE" "REJECT")
  419. '(("^\\(\\sw+\\)\\s-*=" 1 font-lock-variable-name-face)
  420. ("\\s-/\\([^/]+\\)/[i, \t\n]" 1 font-lock-constant-face))
  421. '("\\.rules\\'")
  422. (list
  423. (function
  424. (lambda ()
  425. (setq imenu-generic-expression
  426. '((nil "\\s-/\\([^/]+\\)/[i, \t\n]" 1))))))
  427. "Generic mode for Mailagent rules files."))
  428. ;; Solaris/Sys V prototype files
  429. (when (memq 'prototype-generic-mode generic-extras-enable-list)
  430. (define-generic-mode prototype-generic-mode
  431. '(?#)
  432. nil
  433. '(("^\\([0-9]\\)?\\s-*\\([a-z]\\)\\s-+\\([A-Za-z_]+\\)\\s-+\\([^\n\r]*\\)$"
  434. (2 font-lock-constant-face)
  435. (3 font-lock-keyword-face))
  436. ("^\\([a-z]\\) \\([A-Za-z_]+\\)=\\([^\n\r]*\\)$"
  437. (1 font-lock-constant-face)
  438. (2 font-lock-keyword-face)
  439. (3 font-lock-variable-name-face))
  440. ("^\\(!\\s-*\\(search\\|include\\|default\\)\\)\\s-*\\([^\n\r]*\\)$"
  441. (1 font-lock-keyword-face)
  442. (3 font-lock-variable-name-face))
  443. ("^\\(!\\s-*\\sw+\\)=\\([^\n\r]*\\)$"
  444. (1 font-lock-keyword-face)
  445. (2 font-lock-variable-name-face)))
  446. '("prototype\\'")
  447. nil
  448. "Generic mode for Sys V prototype files."))
  449. ;; Solaris/Sys V pkginfo files
  450. (when (memq 'pkginfo-generic-mode generic-extras-enable-list)
  451. (define-generic-mode pkginfo-generic-mode
  452. '(?#)
  453. nil
  454. '(("^\\([A-Za-z_]+\\)=\\([^\n\r]*\\)$"
  455. (1 font-lock-keyword-face)
  456. (2 font-lock-variable-name-face)))
  457. '("pkginfo\\'")
  458. nil
  459. "Generic mode for Sys V pkginfo files."))
  460. ;; Javascript mode
  461. ;; Obsolete; defer to js-mode from js.el.
  462. (when (memq 'javascript-generic-mode generic-extras-enable-list)
  463. (define-obsolete-function-alias 'javascript-generic-mode 'js-mode "24.3")
  464. (define-obsolete-variable-alias 'javascript-generic-mode-hook 'js-mode-hook "24.3"))
  465. ;; VRML files
  466. (when (memq 'vrml-generic-mode generic-extras-enable-list)
  467. (define-generic-mode vrml-generic-mode
  468. '(?#)
  469. '("DEF"
  470. "NULL"
  471. "USE"
  472. "Viewpoint"
  473. "ambientIntensity"
  474. "appearance"
  475. "children"
  476. "color"
  477. "coord"
  478. "coordIndex"
  479. "creaseAngle"
  480. "diffuseColor"
  481. "emissiveColor"
  482. "fieldOfView"
  483. "geometry"
  484. "info"
  485. "material"
  486. "normal"
  487. "orientation"
  488. "position"
  489. "shininess"
  490. "specularColor"
  491. "texCoord"
  492. "texture"
  493. "textureTransform"
  494. "title"
  495. "transparency"
  496. "type")
  497. '(("USE\\s-+\\([-A-Za-z0-9_]+\\)"
  498. (1 font-lock-constant-face))
  499. ("DEF\\s-+\\([-A-Za-z0-9_]+\\)\\s-+\\([A-Za-z0-9]+\\)\\s-*{"
  500. (1 font-lock-type-face)
  501. (2 font-lock-constant-face))
  502. ("^\\s-*\\([-A-Za-z0-9_]+\\)\\s-*{"
  503. (1 font-lock-function-name-face))
  504. ("^\\s-*\\(geometry\\|appearance\\|material\\)\\s-+\\([-A-Za-z0-9_]+\\)"
  505. (2 font-lock-variable-name-face)))
  506. '("\\.wrl\\'")
  507. (list
  508. (function
  509. (lambda ()
  510. (setq imenu-generic-expression
  511. '((nil "^\\([A-Za-z0-9_]+\\)\\s-*{" 1)
  512. ("*Definitions*"
  513. "DEF\\s-+\\([-A-Za-z0-9_]+\\)\\s-+\\([A-Za-z0-9]+\\)\\s-*{"
  514. 1))))))
  515. "Generic Mode for VRML files."))
  516. ;; Java Manifests
  517. (when (memq 'java-manifest-generic-mode generic-extras-enable-list)
  518. (define-generic-mode java-manifest-generic-mode
  519. '(?#)
  520. '("Name"
  521. "Digest-Algorithms"
  522. "Manifest-Version"
  523. "Required-Version"
  524. "Signature-Version"
  525. "Magic"
  526. "Java-Bean"
  527. "Depends-On")
  528. '(("^Name:\\s-+\\([^\n\r]*\\)$"
  529. (1 font-lock-variable-name-face))
  530. ("^\\(Manifest\\|Required\\|Signature\\)-Version:\\s-+\\([^\n\r]*\\)$"
  531. (2 font-lock-constant-face)))
  532. '("[mM][aA][nN][iI][fF][eE][sS][tT]\\.[mM][fF]\\'")
  533. nil
  534. "Generic mode for Java Manifest files."))
  535. ;; Java properties files
  536. (when (memq 'java-properties-generic-mode generic-extras-enable-list)
  537. (define-generic-mode java-properties-generic-mode
  538. '(?! ?#)
  539. nil
  540. (eval-when-compile
  541. (let ((java-properties-key
  542. "\\(\\([-A-Za-z0-9_\\./]\\|\\(\\\\[ =:]\\)\\)+\\)")
  543. (java-properties-value
  544. "\\([^\r\n]*\\)"))
  545. ;; Property and value can be separated in a number of different ways:
  546. ;; * whitespace
  547. ;; * an equal sign
  548. ;; * a colon
  549. (mapcar
  550. (function
  551. (lambda (elt)
  552. (list
  553. (concat "^" java-properties-key elt java-properties-value "$")
  554. '(1 font-lock-constant-face)
  555. '(4 font-lock-variable-name-face))))
  556. ;; These are the separators
  557. '(":\\s-*" "\\s-+" "\\s-*=\\s-*"))))
  558. nil
  559. (list
  560. (function
  561. (lambda ()
  562. (setq imenu-generic-expression
  563. '((nil "^\\([^#! \t\n\r=:]+\\)" 1))))))
  564. "Generic mode for Java properties files."))
  565. ;; C shell alias definitions
  566. (when (memq 'alias-generic-mode generic-extras-enable-list)
  567. (define-generic-mode alias-generic-mode
  568. '(?#)
  569. '("alias" "unalias")
  570. '(("^alias\\s-+\\([-A-Za-z0-9_]+\\)\\s-+"
  571. (1 font-lock-variable-name-face))
  572. ("^unalias\\s-+\\([-A-Za-z0-9_]+\\)\\s-*$"
  573. (1 font-lock-variable-name-face)))
  574. '("alias\\'")
  575. (list
  576. (function
  577. (lambda ()
  578. (setq imenu-generic-expression
  579. '((nil "^\\(alias\\|unalias\\)\\s-+\\([-a-zA-Z0-9_]+\\)" 2))))))
  580. "Generic mode for C Shell alias files."))
  581. ;; Ansible inventory files
  582. (when (memq 'ansible-inventory-generic-mode generic-extras-enable-list)
  583. (define-generic-mode ansible-inventory-generic-mode
  584. '(?#)
  585. nil
  586. '(("^\\s-*\\(\\[.*\\]\\)" 1 font-lock-constant-face)
  587. ("^\\s-*\\([^ \n\r]*\\)" 1 font-lock-function-name-face)
  588. ;; Variable assignments must be x=y, so highlight as warning if
  589. ;; the value is missing.
  590. ("\\s-\\([^ =\n\r]+\\)[\n\r ]" 1 font-lock-warning-face)
  591. ;; Variable assignments: x=y
  592. ("\\([^ =\n\r]+\\)=\\([^ \n\r]*\\)"
  593. (1 font-lock-variable-name-face)
  594. (2 font-lock-keyword-face)))
  595. '("inventory")
  596. (list
  597. (function
  598. (lambda ()
  599. (setq imenu-generic-expression
  600. '((nil "^\\s-*\\[\\(.*\\)\\]" 1)
  601. ("*Variables*" "\\s-+\\([^ =\n\r]+\\)=" 1))))))
  602. "Generic mode for Ansible inventory files."))
  603. ;;; Windows RC files
  604. ;; Contributed by ACorreir@pervasive-sw.com (Alfred Correira)
  605. (when (memq 'rc-generic-mode generic-extras-enable-list)
  606. (define-generic-mode rc-generic-mode
  607. ;; '(?\/)
  608. '("//")
  609. '("ACCELERATORS"
  610. "AUTO3STATE"
  611. "AUTOCHECKBOX"
  612. "AUTORADIOBUTTON"
  613. "BITMAP"
  614. "BOTTOMMARGIN"
  615. "BUTTON"
  616. "CAPTION"
  617. "CHARACTERISTICS"
  618. "CHECKBOX"
  619. "CLASS"
  620. "COMBOBOX"
  621. "CONTROL"
  622. "CTEXT"
  623. "CURSOR"
  624. "DEFPUSHBUTTON"
  625. "DESIGNINFO"
  626. "DIALOG"
  627. "DISCARDABLE"
  628. "EDITTEXT"
  629. "EXSTYLE"
  630. "FONT"
  631. "GROUPBOX"
  632. "GUIDELINES"
  633. "ICON"
  634. "LANGUAGE"
  635. "LEFTMARGIN"
  636. "LISTBOX"
  637. "LTEXT"
  638. "MENUITEM SEPARATOR"
  639. "MENUITEM"
  640. "MENU"
  641. "MOVEABLE"
  642. "POPUP"
  643. "PRELOAD"
  644. "PURE"
  645. "PUSHBOX"
  646. "PUSHBUTTON"
  647. "RADIOBUTTON"
  648. "RCDATA"
  649. "RIGHTMARGIN"
  650. "RTEXT"
  651. "SCROLLBAR"
  652. "SEPARATOR"
  653. "STATE3"
  654. "STRINGTABLE"
  655. "STYLE"
  656. "TEXTINCLUDE"
  657. "TOOLBAR"
  658. "TOPMARGIN"
  659. "VERSIONINFO"
  660. "VERSION")
  661. ;; the choice of what tokens go where is somewhat arbitrary,
  662. ;; as is the choice of which value tokens are included, as
  663. ;; the choice of face for each token group
  664. (eval-when-compile
  665. (list
  666. (list (regexp-opt '("FILEFLAGSMASK"
  667. "FILEFLAGS"
  668. "FILEOS"
  669. "FILESUBTYPE"
  670. "FILETYPE"
  671. "FILEVERSION"
  672. "PRODUCTVERSION") 'symbols)
  673. 1 font-lock-type-face)
  674. (list (regexp-opt '("BEGIN" "BLOCK" "END" "VALUE") 'symbols)
  675. 1 font-lock-function-name-face)
  676. '("^#[ \t]*include[ \t]+\\(<[^>\"\n]+>\\)" 1 font-lock-string-face)
  677. '("^#[ \t]*define[ \t]+\\(\\sw+\\)(" 1 font-lock-function-name-face)
  678. '("^#[ \t]*\\(elif\\|if\\)\\>"
  679. ("\\<\\(defined\\)\\>[ \t]*(?\\(\\sw+\\)?" nil nil
  680. (1 font-lock-constant-face)
  681. (2 font-lock-variable-name-face nil t)))
  682. '("^#[ \t]*\\(\\sw+\\)\\>[ \t]*\\(\\sw+\\)?"
  683. (1 font-lock-constant-face)
  684. (2 font-lock-variable-name-face nil t))))
  685. '("\\.[rR][cC]\\'")
  686. nil
  687. "Generic mode for MS-Windows Resource files."))
  688. ;; InstallShield RUL files
  689. ;; Contributed by Alfred.Correira@Pervasive.Com
  690. ;; Bugfixes by "Rolf Sandau" <Rolf.Sandau@marconi.com>
  691. (when (memq 'rul-generic-mode generic-extras-enable-list)
  692. (eval-when-compile
  693. ;;; build the regexp strings using regexp-opt
  694. (defconst installshield-statement-keyword-list
  695. '("abort"
  696. "begin"
  697. "call"
  698. "case"
  699. "declare"
  700. "default"
  701. "downto"
  702. "elseif"
  703. "else"
  704. "endfor"
  705. "endif"
  706. "endswitch"
  707. "endwhile"
  708. "end"
  709. "exit"
  710. "external"
  711. "for"
  712. "function"
  713. ;; "goto" -- handled elsewhere
  714. "if"
  715. "program"
  716. "prototype"
  717. "repeat"
  718. "return"
  719. "step"
  720. "switch"
  721. "then"
  722. "to"
  723. "typedef"
  724. "until"
  725. "void"
  726. "while")
  727. "Statement keywords used in InstallShield 3 and 5.")
  728. (defconst installshield-system-functions-list
  729. '("AddFolderIcon"
  730. "AddProfString"
  731. "AddressString"
  732. "AppCommand"
  733. "AskDestPath"
  734. "AskOptions"
  735. "AskPath"
  736. "AskText"
  737. "AskYesNo"
  738. "BatchDeleteEx"
  739. "BatchFileLoad"
  740. "BatchFileSave"
  741. "BatchFind"
  742. "BatchGetFileName"
  743. "BatchMoveEx"
  744. "BatchSetFileName"
  745. "ChangeDirectory"
  746. "CloseFile"
  747. "CmdGetHwndDlg"
  748. "ComponentAddItem" ; differs between IS3 and IS5
  749. "ComponentCompareSizeRequired" ; IS5 only
  750. "ComponentDialog"
  751. "ComponentError" ; IS5 only
  752. "ComponentFileEnum" ; IS5 only
  753. "ComponentFileInfo" ; IS5 only
  754. "ComponentFilterLanguage" ; IS5 only
  755. "ComponentFilterOS" ; IS5 only
  756. "ComponentGetData" ; IS5 only
  757. "ComponentGetItemInfo" ; IS3 only
  758. "ComponentGetItemSize" ; differs between IS3 and IS5
  759. "ComponentIsItemSelected" ; differs between IS3 and IS5
  760. "ComponentListItems"
  761. "ComponentMoveData" ; IS5 only
  762. "ComponentSelectItem" ; differs between IS3 and IS5
  763. "ComponentSetData" ; IS5 only
  764. "ComponentSetItemInfo" ; IS3 only
  765. "ComponentSetTarget" ; IS5 only
  766. "ComponentSetupTypeEnum" ; IS5 only
  767. "ComponentSetupTypeGetData" ; IS5 only
  768. "ComponentSetupTypeSet" ; IS5 only
  769. "ComponentTotalSize"
  770. "ComponentValidate" ; IS5 only
  771. "CompressAdd" ; IS3 only
  772. "CompressDel" ; IS3 only
  773. "CompressEnum" ; IS3 only
  774. "CompressGet" ; IS3 only
  775. "CompressInfo" ; IS3 only
  776. "CopyFile"
  777. "CreateDir"
  778. "CreateFile"
  779. "CreateProgramFolder"
  780. "DeinstallSetReference" ; IS5 only
  781. "DeinstallStart"
  782. "Delay"
  783. "DeleteDir"
  784. "DeleteFile"
  785. "DialogSetInfo"
  786. "Disable"
  787. "DoInstall"
  788. "Do"
  789. "Enable"
  790. "EnterDisk"
  791. "ExistsDir"
  792. "ExistsDisk"
  793. "ExitProgMan"
  794. "EzBatchAddPath"
  795. "EzBatchAddString"
  796. "EzBatchReplace"
  797. "EzConfigAddDriver"
  798. "EzConfigAddString"
  799. "EzConfigGetValue"
  800. "EzConfigSetValue"
  801. "EzDefineDialog"
  802. "FileCompare"
  803. "FileDeleteLine"
  804. "FileGrep"
  805. "FileInsertLine"
  806. "FileSetBeginDefine" ; IS3 only
  807. "FileSetEndDefine" ; IS3 only
  808. "FileSetPerformEz" ; IS3 only
  809. "FileSetPerform" ; IS3 only
  810. "FileSetReset" ; IS3 only
  811. "FileSetRoot" ; IS3 only
  812. "FindAllDirs"
  813. "FindAllFiles"
  814. "FindFile"
  815. "FindWindow"
  816. "GetDiskSpace"
  817. "GetDisk"
  818. "GetEnvVar"
  819. "GetExtents"
  820. "GetFileInfo"
  821. "GetLine"
  822. "GetProfInt"
  823. "GetProfString"
  824. "GetSystemInfo"
  825. "GetValidDrivesList"
  826. "GetVersion"
  827. "GetWindowHandle"
  828. "InstallationInfo"
  829. "Is"
  830. "LaunchApp"
  831. "LaunchAppAndWait"
  832. "ListAddItem"
  833. "ListAddString"
  834. "ListCount"
  835. "ListCreate"
  836. "ListDestroy"
  837. "ListFindItem"
  838. "ListFindString"
  839. "ListGetFirstItem"
  840. "ListGetFirstString"
  841. "ListGetNextItem"
  842. "ListGetNextString"
  843. "ListReadFromFile"
  844. "ListSetCurrentItem"
  845. "ListSetNextItem"
  846. "ListSetNextString"
  847. "ListSetIndex"
  848. "ListWriteToFile"
  849. "LongPathToQuote"
  850. "LongPathToShortPath"
  851. "MessageBox"
  852. "NumToStr"
  853. "OpenFileMode"
  854. "OpenFile"
  855. "ParsePath"
  856. "PathAdd"
  857. "PathDelete"
  858. "PathFind"
  859. "PathGet"
  860. "PathMove"
  861. "PathSet"
  862. "Path"
  863. "PlaceBitmap"
  864. "PlaceWindow"
  865. "PlayMMedia" ; IS5 only
  866. "ProgDefGroupType"
  867. "RegDBCreateKeyEx"
  868. "RegDBDeleteValue"
  869. "RegDBGetItem"
  870. "RegDBKeyExist"
  871. "RegDBSetItem"
  872. "RegDBGetKeyValueEx"
  873. "RegDBSetKeyValueEx"
  874. "RegDBSetDefaultRoot"
  875. "RenameFile"
  876. "ReplaceFolderIcon"
  877. "ReplaceProfString"
  878. "SdAskDestPath"
  879. "SdAskOptions"
  880. "SdAskOptionsList"
  881. "SdBitmap"
  882. "SdCloseDlg"
  883. "SdComponentAdvCheckSpace"
  884. "SdComponentAdvInit"
  885. "SdComponentAdvUpdateSpace"
  886. "SdComponentDialog"
  887. "SdComponentDialog2"
  888. "SdComponentDialogAdv"
  889. "SdComponentDialogEx"
  890. "SdComponentDlgCheckSpace"
  891. "SdComponentMult"
  892. "SdConfirmNewDir"
  893. "SdConfirmRegistration"
  894. "SdDiskSpace"
  895. "SdDisplayTopics"
  896. "SdDoStdButton"
  897. "SdEnablement"
  898. "SdError"
  899. "SdFinish"
  900. "SdFinishInit32"
  901. "SdFinishReboot"
  902. "SdGeneralInit"
  903. "SdGetItemName"
  904. "SdGetTextExtent"
  905. "SdGetUserCompanyInfo"
  906. "SdInit"
  907. "SdIsShellExplorer"
  908. "SdIsStdButton"
  909. "SdLicense"
  910. "SdMakeName"
  911. "SdOptionInit"
  912. "SdOptionSetState"
  913. "SdOptionsButtons"
  914. "SdOptionsButtonsInit"
  915. "SdPlugInProductName"
  916. "SdProductName"
  917. "SdRegEnableButton"
  918. "SdRegExEnableButton"
  919. "SdRegisterUser"
  920. "SdRegisterUserEx"
  921. "SdRemoveEndSpace"
  922. "SdSelectFolder"
  923. "SdSetSequentialItems"
  924. "SdSetStatic"
  925. "SdSetupTypeEx" ; IS5 only
  926. "SdSetupType"
  927. "SdShowAnyDialog"
  928. "SdShowDlgEdit1"
  929. "SdShowDlgEdit2"
  930. "SdShowDlgEdit3"
  931. "SdShowFileMods"
  932. "SdShowInfoList"
  933. "SdShowMsg"
  934. "SdStartCopy"
  935. "SdUnInit"
  936. "SdUpdateComponentSelection"
  937. "SdWelcome"
  938. "SendMessage"
  939. "SetColor"
  940. "SetFont"
  941. "SetDialogTitle"
  942. "SetDisplayEffect" ; IS5 only
  943. "SetFileInfo"
  944. "SetForegroundWindow"
  945. "SetStatusWindow"
  946. "SetTitle"
  947. "SetupType"
  948. "ShowProgramFolder"
  949. "Split" ; IS3 only
  950. "SprintfBox"
  951. "Sprintf"
  952. "StatusUpdate"
  953. "StrCompare"
  954. "StrFind"
  955. "StrGetTokens"
  956. "StrLength"
  957. "StrRemoveLastSlash"
  958. "StrToLower"
  959. "StrToNum"
  960. "StrToUpper"
  961. "StrSub"
  962. "VarRestore"
  963. "VarSave"
  964. "VerCompare"
  965. "VerGetFileVersion"
  966. "WaitOnDialog"
  967. "Welcome"
  968. "WriteLine"
  969. "WriteProfString"
  970. "XCopyFile")
  971. "System functions defined in InstallShield 3 and 5.")
  972. (defconst installshield-system-variables-list
  973. '("BATCH_INSTALL"
  974. "CMDLINE"
  975. "COMMONFILES"
  976. "CORECOMPONENTHANDLING"
  977. "DIALOGCACHE"
  978. "ERRORFILENAME"
  979. "FOLDER_DESKTOP"
  980. "FOLDER_PROGRAMS"
  981. "FOLDER_STARTMENU"
  982. "FOLDER_STARTUP"
  983. "INFOFILENAME"
  984. "ISRES"
  985. "ISUSER"
  986. "ISVERSION"
  987. "MEDIA"
  988. "MODE"
  989. "PROGRAMFILES"
  990. "SELECTED_LANGUAGE"
  991. "SRCDIR"
  992. "SRCDISK"
  993. "SUPPORTDIR"
  994. "TARGETDIR"
  995. "TARGETDISK"
  996. "UNINST"
  997. "WINDIR"
  998. "WINDISK"
  999. "WINMAJOR"
  1000. "WINSYSDIR"
  1001. "WINSYSDISK")
  1002. "System variables used in InstallShield 3 and 5.")
  1003. (defconst installshield-types-list
  1004. '("BOOL"
  1005. "BYREF"
  1006. "CHAR"
  1007. "HIWORD"
  1008. "HWND"
  1009. "INT"
  1010. "LIST"
  1011. "LONG"
  1012. "LOWORD"
  1013. "LPSTR"
  1014. "NUMBER"
  1015. "NUMBERLIST"
  1016. "POINTER"
  1017. "QUAD"
  1018. "RGB"
  1019. "SHORT"
  1020. "STRINGLIST"
  1021. "STRING")
  1022. "Type keywords used in InstallShield 3 and 5.")
  1023. ;;; some might want to skip highlighting these to improve performance
  1024. (defconst installshield-funarg-constants-list
  1025. '("AFTER"
  1026. "APPEND"
  1027. "ALLCONTENTS"
  1028. "BACKBUTTON"
  1029. "BACKGROUNDCAPTION"
  1030. "BACKGROUND"
  1031. "BACK"
  1032. "BASEMEMORY"
  1033. "BEFORE"
  1034. "BIOS"
  1035. "BITMAPICON"
  1036. "BK_BLUE"
  1037. "BK_GREEN"
  1038. "BK_RED"
  1039. "BLUE"
  1040. "BOOTUPDRIVE"
  1041. "CANCEL"
  1042. "CDROM_DRIVE"
  1043. "CDROM"
  1044. "CHECKBOX95"
  1045. "CHECKBOX"
  1046. "CHECKLINE"
  1047. "CHECKMARK"
  1048. "COLORS"
  1049. "COMMANDEX"
  1050. "COMMAND"
  1051. "COMP_NORMAL"
  1052. "COMP_UPDATE_DATE"
  1053. "COMP_UPDATE_SAME"
  1054. "COMP_UPDATE_VERSION"
  1055. "COMPACT"
  1056. "CONTINUE"
  1057. "CPU"
  1058. "CUSTOM"
  1059. "DATE"
  1060. "DEFWINDOWMODE"
  1061. "DIR_WRITEABLE"
  1062. "DIRECTORY"
  1063. "DISABLE"
  1064. "DISK_TOTALSPACE"
  1065. "DISK"
  1066. "DLG_OPTIONS"
  1067. "DLG_PATH"
  1068. "DLG_TEXT"
  1069. "DLG_ASK_YESNO"
  1070. "DLG_ENTER_DISK"
  1071. "DLG_ERR"
  1072. "DLG_INFO_ALTIMAGE"
  1073. "DLG_INFO_CHECKSELECTION"
  1074. "DLG_INFO_KUNITS"
  1075. "DLG_INFO_USEDECIMAL"
  1076. "DLG_MSG_INFORMATION"
  1077. "DLG_MSG_SEVERE"
  1078. "DLG_MSG_WARNING"
  1079. "DLG_STATUS"
  1080. "DLG_WARNING"
  1081. "DLG_USER_CAPTION"
  1082. "DRIVE"
  1083. "ENABLE"
  1084. "END_OF_FILE"
  1085. "END_OF_LIST"
  1086. "ENVSPACE"
  1087. "EQUALS"
  1088. "EXCLUDE_SUBDIR"
  1089. "EXCLUSIVE"
  1090. "EXISTS"
  1091. "EXIT"
  1092. "EXTENDED_MEMORY"
  1093. "EXTENSION_ONLY"
  1094. "FAILIFEXISTS"
  1095. "FALSE"
  1096. "FEEDBACK_FULL"
  1097. "FILE_ATTR_ARCHIVED"
  1098. "FILE_ATTR_DIRECTORY"
  1099. "FILE_ATTR_HIDDEN"
  1100. "FILE_ATTR_NORMAL"
  1101. "FILE_ATTR_READONLY"
  1102. "FILE_ATTR_SYSTEM"
  1103. "FILE_ATTRIBUTE"
  1104. "FILE_DATE"
  1105. "FILE_LINE_LENGTH"
  1106. "FILE_MODE_APPEND"
  1107. "FILE_MODE_BINARYREADONLY"
  1108. "FILE_MODE_BINARY"
  1109. "FILE_MODE_NORMAL"
  1110. "FILE_NO_VERSION"
  1111. "FILE_NOT_FOUND"
  1112. "FILE_SIZE"
  1113. "FILE_TIME"
  1114. "FILENAME_ONLY"
  1115. "FILENAME"
  1116. "FIXED_DRIVE"
  1117. "FOLDER_DESKTOP"
  1118. "FOLDER_PROGRAMS"
  1119. "FOLDER_STARTMENU"
  1120. "FOLDER_STARTUP"
  1121. "FREEENVSPACE"
  1122. "FULLWINDOWMODE"
  1123. "FULL"
  1124. "FONT_TITLE"
  1125. "GREATER_THAN"
  1126. "GREEN"
  1127. "HKEY_CLASSES_ROOT"
  1128. "HKEY_CURRENT_USER"
  1129. "HKEY_LOCAL_MACHINE"
  1130. "HKEY_USERS"
  1131. "HOURGLASS"
  1132. "INCLUDE_SUBDIR"
  1133. "INDVFILESTATUS"
  1134. "INFORMATION"
  1135. "IS_WINDOWSNT"
  1136. "IS_WINDOWS95"
  1137. "IS_WINDOWS"
  1138. "IS_WIN32S"
  1139. "ISTYPE"
  1140. "LANGUAGE_DRV"
  1141. "LANGUAGE"
  1142. "LESS_THAN"
  1143. "LIST_NULL"
  1144. "LISTFIRST"
  1145. "LISTNEXT"
  1146. "LOCKEDFILE"
  1147. "LOGGING"
  1148. "LOWER_LEFT"
  1149. "LOWER_RIGHT"
  1150. "MAGENTA"
  1151. "MOUSE_DRV"
  1152. "MOUSE"
  1153. "NETWORK_DRV"
  1154. "NETWORK"
  1155. "NEXT"
  1156. "NONEXCLUSIVE"
  1157. "NORMALMODE"
  1158. "NOSET"
  1159. "NOTEXISTS"
  1160. "NOWAIT"
  1161. "NO"
  1162. "OFF"
  1163. "ONLYDIR"
  1164. "ON"
  1165. "OSMAJOR"
  1166. "OSMINOR"
  1167. "OS"
  1168. "OTHER_FAILURE"
  1169. "PARALLEL"
  1170. "PARTIAL"
  1171. "PATH_EXISTS"
  1172. "PATH"
  1173. "RED"
  1174. "REGDB_APPPATH_DEFAULT"
  1175. "REGDB_APPPATH"
  1176. "REGDB_BINARY"
  1177. "REGDB_ERR_CONNECTIONEXISTS"
  1178. "REGDB_ERR_CORRUPTEDREGISTRY"
  1179. "REGDB_ERR_INITIALIZATION"
  1180. "REGDB_ERR_INVALIDHANDLE"
  1181. "REGDB_ERR_INVALIDNAME"
  1182. "REGDB_NUMBER"
  1183. "REGDB_STRING_EXPAND"
  1184. "REGDB_STRING_MULTI"
  1185. "REGDB_STRING"
  1186. "REGDB_UNINSTALL_NAME"
  1187. "REMOTE_DRIVE"
  1188. "REMOVEABLE_DRIVE"
  1189. "REPLACE_ITEM"
  1190. "REPLACE"
  1191. "RESET"
  1192. "RESTART"
  1193. "ROOT"
  1194. "SELFREGISTER"
  1195. "SERIAL"
  1196. "SET"
  1197. "SEVERE"
  1198. "SHAREDFILE"
  1199. "SHARE"
  1200. "SILENTMODE"
  1201. "SRCTARGETDIR"
  1202. "STATUSBAR"
  1203. "STATUSDLG"
  1204. "STATUSOLD"
  1205. "STATUS"
  1206. "STYLE_NORMAL"
  1207. "SW_MAXIMIZE"
  1208. "SW_MINIMIZE"
  1209. "SW_RESTORE"
  1210. "SW_SHOW"
  1211. "SYS_BOOTMACHINE"
  1212. "TIME"
  1213. "TRUE"
  1214. "TYPICAL"
  1215. "UPPER_LEFT"
  1216. "UPPER_RIGHT"
  1217. "VALID_PATH"
  1218. "VERSION"
  1219. "VIDEO"
  1220. "VOLUMELABEL"
  1221. "YELLOW"
  1222. "YES"
  1223. "WAIT"
  1224. "WARNING"
  1225. "WINMAJOR"
  1226. "WINMINOR"
  1227. "WIN32SINSTALLED"
  1228. "WIN32SMAJOR"
  1229. "WIN32SMINOR")
  1230. "Function argument constants used in InstallShield 3 and 5."))
  1231. ;; c++-mode-syntax-table used to be autoloaded, with an initial nil value.
  1232. ;; This file did not load cc-mode, and therefore rul-generic-mode-syntax-table
  1233. ;; would have different values according to whether or not cc-mode
  1234. ;; happened to be loaded before this file was.
  1235. (require 'cc-mode)
  1236. (defvar c++-mode-syntax-table)
  1237. (defvar rul-generic-mode-syntax-table
  1238. (let ((table (make-syntax-table c++-mode-syntax-table)))
  1239. (modify-syntax-entry ?\r "> b" table)
  1240. (modify-syntax-entry ?\n "> b" table)
  1241. (modify-syntax-entry ?/ ". 124b" table)
  1242. (modify-syntax-entry ?* ". 23" table)
  1243. table)
  1244. "Syntax table to use in `rul-generic-mode' buffers.")
  1245. ;; here manually instead
  1246. (defun generic-rul-mode-setup-function ()
  1247. (make-local-variable 'parse-sexp-ignore-comments)
  1248. (make-local-variable 'comment-start)
  1249. (make-local-variable 'comment-start-skip)
  1250. (make-local-variable 'comment-end)
  1251. (setq imenu-generic-expression
  1252. '((nil "^function\\s-+\\([A-Za-z0-9_]+\\)" 1))
  1253. parse-sexp-ignore-comments t
  1254. comment-end "*/"
  1255. comment-start "/*"
  1256. ;;; comment-end ""
  1257. ;;; comment-start "//"
  1258. ;;; comment-start-skip ""
  1259. )
  1260. ;; (set-syntax-table rul-generic-mode-syntax-table)
  1261. (setq-local font-lock-syntax-table rul-generic-mode-syntax-table))
  1262. ;; moved mode-definition behind defun-definition to be warning-free - 15.11.02/RSan
  1263. (define-generic-mode rul-generic-mode
  1264. ;; Using "/*" and "*/" doesn't seem to be working right
  1265. '("//" ("/*" . "*/" ))
  1266. (eval-when-compile installshield-statement-keyword-list)
  1267. (eval-when-compile
  1268. (list
  1269. ;; preprocessor constructs
  1270. '("#[ \t]*include[ \t]+\\(<[^>\"\n]+>\\)"
  1271. 1 font-lock-string-face)
  1272. '("#[ \t]*\\(\\sw+\\)\\>[ \t]*\\(\\sw+\\)?"
  1273. (1 font-lock-constant-face)
  1274. (2 font-lock-variable-name-face nil t))
  1275. ;; indirect string constants
  1276. '("\\(@[A-Za-z][A-Za-z0-9_]+\\)" 1 font-lock-builtin-face)
  1277. ;; gotos
  1278. '("[ \t]*\\(\\sw+:\\)" 1 font-lock-constant-face)
  1279. '("\\<\\(goto\\)\\>[ \t]*\\(\\sw+\\)?"
  1280. (1 font-lock-keyword-face)
  1281. (2 font-lock-constant-face nil t))
  1282. ;; system variables
  1283. (list (concat "[^_]"
  1284. (regexp-opt installshield-system-variables-list 'symbols)
  1285. "[^_]")
  1286. 1 font-lock-variable-name-face)
  1287. ;; system functions
  1288. (list (concat "[^_]"
  1289. (regexp-opt installshield-system-functions-list 'symbols)
  1290. "[^_]")
  1291. 1 font-lock-function-name-face)
  1292. ;; type keywords
  1293. (list (concat "[^_]"
  1294. (regexp-opt installshield-types-list 'symbols)
  1295. "[^_]")
  1296. 1 font-lock-type-face)
  1297. ;; function argument constants
  1298. (list (concat "[^_]"
  1299. (regexp-opt installshield-funarg-constants-list 'symbols)
  1300. "[^_]")
  1301. 1 font-lock-variable-name-face))) ; is this face the best choice?
  1302. '("\\.[rR][uU][lL]\\'")
  1303. '(generic-rul-mode-setup-function)
  1304. "Generic mode for InstallShield RUL files.")
  1305. (define-skeleton rul-if
  1306. "Insert an if statement."
  1307. "condition: "
  1308. "if(" str ") then" \n
  1309. > _ \n
  1310. ( "other condition, %s: "
  1311. > "elseif(" str ") then" \n
  1312. > \n)
  1313. > "else" \n
  1314. > \n
  1315. resume:
  1316. > "endif;")
  1317. (define-skeleton rul-function
  1318. "Insert a function statement."
  1319. "function: "
  1320. "function " str " ()" \n
  1321. ( "local variables, %s: "
  1322. > " " str ";" \n)
  1323. > "begin" \n
  1324. > _ \n
  1325. resume:
  1326. > "end;"))
  1327. ;; Additions by ACorreir@pervasive-sw.com (Alfred Correira)
  1328. (when (memq 'mailrc-generic-mode generic-extras-enable-list)
  1329. (define-generic-mode mailrc-generic-mode
  1330. '(?#)
  1331. '("alias"
  1332. "else"
  1333. "endif"
  1334. "group"
  1335. "if"
  1336. "ignore"
  1337. "set"
  1338. "source"
  1339. "unset")
  1340. '(("^\\s-*\\(alias\\|group\\)\\s-+\\([-A-Za-z0-9_]+\\)\\s-+\\([^\n\r#]*\\)\\(#.*\\)?$"
  1341. (2 font-lock-constant-face)
  1342. (3 font-lock-variable-name-face))
  1343. ("^\\s-*\\(unset\\|set\\|ignore\\)\\s-+\\([-A-Za-z0-9_]+\\)=?\\([^\n\r#]*\\)\\(#.*\\)?$"
  1344. (2 font-lock-constant-face)
  1345. (3 font-lock-variable-name-face))
  1346. ("^\\s-*\\(source\\)\\s-+\\([^\n\r#]*\\)\\(#.*\\)?$"
  1347. (2 font-lock-variable-name-face)))
  1348. '("\\.mailrc\\'")
  1349. nil
  1350. "Mode for mailrc files."))
  1351. ;; Inetd.conf
  1352. (when (memq 'inetd-conf-generic-mode generic-extras-enable-list)
  1353. (define-generic-mode inetd-conf-generic-mode
  1354. '(?#)
  1355. '("stream"
  1356. "dgram"
  1357. "tcp"
  1358. "udp"
  1359. "wait"
  1360. "nowait"
  1361. "internal")
  1362. '(("^\\([-A-Za-z0-9_]+\\)" 1 font-lock-type-face))
  1363. '("/etc/inetd.conf\\'")
  1364. (list
  1365. (function
  1366. (lambda ()
  1367. (setq imenu-generic-expression
  1368. '((nil "^\\([-A-Za-z0-9_]+\\)" 1))))))))
  1369. ;; Services
  1370. (when (memq 'etc-services-generic-mode generic-extras-enable-list)
  1371. (define-generic-mode etc-services-generic-mode
  1372. '(?#)
  1373. '("tcp"
  1374. "udp"
  1375. "ddp")
  1376. '(("^\\([-A-Za-z0-9_]+\\)\\s-+\\([0-9]+\\)/"
  1377. (1 font-lock-type-face)
  1378. (2 font-lock-variable-name-face)))
  1379. '("/etc/services\\'")
  1380. (list
  1381. (function
  1382. (lambda ()
  1383. (setq imenu-generic-expression
  1384. '((nil "^\\([-A-Za-z0-9_]+\\)" 1))))))))
  1385. ;; Password and Group files
  1386. (when (memq 'etc-passwd-generic-mode generic-extras-enable-list)
  1387. (define-generic-mode etc-passwd-generic-mode
  1388. nil ;; No comment characters
  1389. '("root") ;; Only one keyword
  1390. (eval-when-compile
  1391. (list
  1392. (list
  1393. (concat
  1394. "^"
  1395. ;; User name -- Never blank!
  1396. "\\([^:]+\\)"
  1397. ":"
  1398. ;; Password, UID and GID
  1399. (mapconcat
  1400. 'identity
  1401. (make-list 3 "\\([^:]+\\)")
  1402. ":")
  1403. ":"
  1404. ;; GECOS/Name -- might be blank
  1405. "\\([^:]*\\)"
  1406. ":"
  1407. ;; Home directory and shell
  1408. "\\([^:]+\\)"
  1409. ":?"
  1410. "\\([^:]*\\)"
  1411. "$")
  1412. '(1 font-lock-type-face)
  1413. '(5 font-lock-variable-name-face)
  1414. '(6 font-lock-constant-face)
  1415. '(7 font-lock-warning-face))
  1416. '("^\\([^:]+\\):\\([^:]*\\):\\([0-9]+\\):\\(.*\\)$"
  1417. (1 font-lock-type-face)
  1418. (4 font-lock-variable-name-face))))
  1419. '("/etc/passwd\\'" "/etc/group\\'")
  1420. (list
  1421. (function
  1422. (lambda ()
  1423. (setq imenu-generic-expression
  1424. '((nil "^\\([-A-Za-z0-9_]+\\):" 1))))))))
  1425. ;; Fstab
  1426. (when (memq 'etc-fstab-generic-mode generic-extras-enable-list)
  1427. (define-generic-mode etc-fstab-generic-mode
  1428. '(?#)
  1429. '("adfs"
  1430. "affs"
  1431. "autofs"
  1432. "coda"
  1433. "coherent"
  1434. "cramfs"
  1435. "devpts"
  1436. "efs"
  1437. "ext2"
  1438. "ext3"
  1439. "ext4"
  1440. "hfs"
  1441. "hpfs"
  1442. "iso9660"
  1443. "jfs"
  1444. "minix"
  1445. "msdos"
  1446. "ncpfs"
  1447. "nfs"
  1448. "ntfs"
  1449. "proc"
  1450. "qnx4"
  1451. "reiserfs"
  1452. "romfs"
  1453. "smbfs"
  1454. "cifs"
  1455. "usbdevfs"
  1456. "sysv"
  1457. "sysfs"
  1458. "tmpfs"
  1459. "udf"
  1460. "ufs"
  1461. "umsdos"
  1462. "vfat"
  1463. "xenix"
  1464. "xfs"
  1465. "swap"
  1466. "auto"
  1467. "ignore")
  1468. '(("^\\([^# \t]+\\)\\s-+\\([^# \t]+\\)"
  1469. (1 font-lock-type-face t)
  1470. (2 font-lock-variable-name-face t)))
  1471. '("/etc/[v]*fstab\\'")
  1472. (list
  1473. (function
  1474. (lambda ()
  1475. (setq imenu-generic-expression
  1476. '((nil "^\\([^# \t]+\\)\\s-+" 1))))))))
  1477. ;; /etc/sudoers
  1478. (when (memq 'etc-sudoers-generic-mode generic-extras-enable-list)
  1479. (define-generic-mode etc-sudoers-generic-mode
  1480. '(?#)
  1481. '("User_Alias" "Runas_Alias" "Host_Alias" "Cmnd_Alias"
  1482. "NOPASSWD" "PASSWD" "NOEXEC" "EXEC"
  1483. "ALL")
  1484. '(("\\<\\(root\\|su\\)\\>" 1 font-lock-warning-face)
  1485. ("\\(\\*\\)" 1 font-lock-warning-face)
  1486. ("\\<\\(%[A-Za-z0-9_]+\\)\\>" 1 font-lock-variable-name-face))
  1487. '("/etc/sudoers\\'")
  1488. nil
  1489. "Generic mode for sudoers configuration files."))
  1490. ;; From Jacques Duthen <jacques.duthen@sncf.fr>
  1491. (when (memq 'show-tabs-generic-mode generic-extras-enable-list)
  1492. (eval-when-compile
  1493. (defconst show-tabs-generic-mode-font-lock-defaults-1
  1494. '(;; trailing spaces must come before...
  1495. ("[ \t]+$" . 'show-tabs-space)
  1496. ;; ...embedded tabs
  1497. ("[^\n\t]\\(\t+\\)" (1 'show-tabs-tab))))
  1498. (defconst show-tabs-generic-mode-font-lock-defaults-2
  1499. '(;; trailing spaces must come before...
  1500. ("[ \t]+$" . 'show-tabs-space)
  1501. ;; ...tabs
  1502. ("\t+" . 'show-tabs-tab))))
  1503. (defface show-tabs-tab
  1504. '((((class grayscale) (background light)) (:background "DimGray" :weight bold))
  1505. (((class grayscale) (background dark)) (:background "LightGray" :weight bold))
  1506. (((class color) (min-colors 88)) (:background "red1"))
  1507. (((class color)) (:background "red"))
  1508. (t (:weight bold)))
  1509. "Font Lock mode face used to highlight TABs."
  1510. :group 'generic-x)
  1511. (define-obsolete-face-alias 'show-tabs-tab-face 'show-tabs-tab "22.1")
  1512. (defface show-tabs-space
  1513. '((((class grayscale) (background light)) (:background "DimGray" :weight bold))
  1514. (((class grayscale) (background dark)) (:background "LightGray" :weight bold))
  1515. (((class color) (min-colors 88)) (:background "yellow1"))
  1516. (((class color)) (:background "yellow"))
  1517. (t (:weight bold)))
  1518. "Font Lock mode face used to highlight spaces."
  1519. :group 'generic-x)
  1520. (define-obsolete-face-alias 'show-tabs-space-face 'show-tabs-space "22.1")
  1521. (define-generic-mode show-tabs-generic-mode
  1522. nil ;; no comment char
  1523. nil ;; no keywords
  1524. (eval-when-compile show-tabs-generic-mode-font-lock-defaults-1)
  1525. nil ;; no auto-mode-alist
  1526. ;; '(show-tabs-generic-mode-hook-fun)
  1527. nil
  1528. "Generic mode to show tabs and trailing spaces."))
  1529. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1530. ;; DNS modes
  1531. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1532. (when (memq 'named-boot-generic-mode generic-extras-enable-list)
  1533. (define-generic-mode named-boot-generic-mode
  1534. ;; List of comment characters
  1535. '(?\;)
  1536. ;; List of keywords
  1537. '("cache" "primary" "secondary" "forwarders" "limit" "options"
  1538. "directory" "check-names")
  1539. ;; List of additional font-lock-expressions
  1540. '(("\\([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+\\)" 1 font-lock-constant-face)
  1541. ("^directory\\s-+\\(.*\\)" 1 font-lock-variable-name-face)
  1542. ("^\\(primary\\|cache\\)\\s-+\\([.A-Za-z]+\\)\\s-+\\(.*\\)"
  1543. (2 font-lock-variable-name-face)
  1544. (3 font-lock-constant-face)))
  1545. ;; List of additional automode-alist expressions
  1546. '("/etc/named.boot\\'")
  1547. ;; List of set up functions to call
  1548. nil))
  1549. (when (memq 'named-database-generic-mode generic-extras-enable-list)
  1550. (define-generic-mode named-database-generic-mode
  1551. ;; List of comment characters
  1552. '(?\;)
  1553. ;; List of keywords
  1554. '("IN" "NS" "CNAME" "SOA" "PTR" "MX" "A")
  1555. ;; List of additional font-lock-expressions
  1556. '(("\\([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+\\)" 1 font-lock-constant-face)
  1557. ("^\\([.A-Za-z0-9]+\\)" 1 font-lock-variable-name-face))
  1558. ;; List of additional auto-mode-alist expressions
  1559. nil
  1560. ;; List of set up functions to call
  1561. nil)
  1562. (defvar named-database-time-string "%Y%m%d%H"
  1563. "Timestring for named serial numbers.")
  1564. (defun named-database-print-serial ()
  1565. "Print a serial number based on the current date."
  1566. (interactive)
  1567. (insert (format-time-string named-database-time-string))))
  1568. (when (memq 'resolve-conf-generic-mode generic-extras-enable-list)
  1569. (define-generic-mode resolve-conf-generic-mode
  1570. ;; List of comment characters
  1571. '(?#)
  1572. ;; List of keywords
  1573. '("nameserver" "domain" "search" "sortlist" "options")
  1574. ;; List of additional font-lock-expressions
  1575. nil
  1576. ;; List of additional auto-mode-alist expressions
  1577. '("/etc/resolv[e]?.conf\\'")
  1578. ;; List of set up functions to call
  1579. nil))
  1580. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1581. ;; Modes for spice and common electrical engineering circuit netlist formats
  1582. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1583. (when (memq 'spice-generic-mode generic-extras-enable-list)
  1584. (define-generic-mode spice-generic-mode
  1585. nil
  1586. '("and"
  1587. "cccs"
  1588. "ccvs"
  1589. "delay"
  1590. "nand"
  1591. "nor"
  1592. "npwl"
  1593. "or"
  1594. "par"
  1595. "ppwl"
  1596. "pwl"
  1597. "vccap"
  1598. "vccs"
  1599. "vcr"
  1600. "vcvs")
  1601. '(("^\\s-*\\([*].*\\)" 1 font-lock-comment-face)
  1602. (" \\(\\$ .*\\)$" 1 font-lock-comment-face)
  1603. ("^\\(\\$ .*\\)$" 1 font-lock-comment-face)
  1604. ("\\([*].*\\)" 1 font-lock-comment-face)
  1605. ("^\\([+]\\)" 1 font-lock-string-face)
  1606. ("^\\s-*\\([.]\\w+\\>\\)" 1 font-lock-keyword-face)
  1607. ("\\(\\([.]\\|_\\|\\w\\)+\\)\\s-*=" 1 font-lock-variable-name-face)
  1608. ("\\('[^']+'\\)" 1 font-lock-string-face)
  1609. ("\\(\"[^\"]+\"\\)" 1 font-lock-string-face))
  1610. '("\\.[sS][pP]\\'"
  1611. "\\.[sS][pP][iI]\\'"
  1612. "\\.[sS][pP][iI][cC][eE]\\'"
  1613. "\\.[iI][nN][cC]\\'")
  1614. (list
  1615. 'generic-bracket-support
  1616. ;; Make keywords case-insensitive
  1617. (function
  1618. (lambda()
  1619. (setq font-lock-defaults '(generic-font-lock-keywords nil t)))))
  1620. "Generic mode for SPICE circuit netlist files."))
  1621. (when (memq 'ibis-generic-mode generic-extras-enable-list)
  1622. (define-generic-mode ibis-generic-mode
  1623. '(?|)
  1624. nil
  1625. '(("[[]\\([^]]*\\)[]]" 1 font-lock-keyword-face)
  1626. ("\\(\\(_\\|\\w\\)+\\)\\s-*=" 1 font-lock-variable-name-face))
  1627. '("\\.[iI][bB][sS]\\'")
  1628. '(generic-bracket-support)
  1629. "Generic mode for IBIS circuit netlist files."))
  1630. (when (memq 'astap-generic-mode generic-extras-enable-list)
  1631. (define-generic-mode astap-generic-mode
  1632. nil
  1633. '("analyze"
  1634. "description"
  1635. "elements"
  1636. "execution"
  1637. "features"
  1638. "functions"
  1639. "ground"
  1640. "model"
  1641. "outputs"
  1642. "print"
  1643. "run"
  1644. "controls"
  1645. "table")
  1646. '(("^\\s-*\\([*].*\\)" 1 font-lock-comment-face)
  1647. (";\\s-*\\([*].*\\)" 1 font-lock-comment-face)
  1648. ("^\\s-*\\([.]\\w+\\>\\)" 1 font-lock-keyword-face)
  1649. ("\\('[^']+'\\)" 1 font-lock-string-face)
  1650. ("\\(\"[^\"]+\"\\)" 1 font-lock-string-face)
  1651. ("[(,]\\s-*\\(\\([.]\\|_\\|\\w\\)+\\)\\s-*=" 1 font-lock-variable-name-face))
  1652. '("\\.[aA][pP]\\'"
  1653. "\\.[aA][sS][xX]\\'"
  1654. "\\.[aA][sS][tT][aA][pP]\\'"
  1655. "\\.[pP][sS][pP]\\'"
  1656. "\\.[dD][eE][cC][kK]\\'"
  1657. "\\.[gG][oO][dD][aA][tT][aA]")
  1658. (list
  1659. 'generic-bracket-support
  1660. ;; Make keywords case-insensitive
  1661. (function
  1662. (lambda()
  1663. (setq font-lock-defaults '(generic-font-lock-keywords nil t)))))
  1664. "Generic mode for ASTAP circuit netlist files."))
  1665. (when (memq 'etc-modules-conf-generic-mode generic-extras-enable-list)
  1666. (define-generic-mode etc-modules-conf-generic-mode
  1667. ;; List of comment characters
  1668. '(?#)
  1669. ;; List of keywords
  1670. '("above"
  1671. "alias"
  1672. "below"
  1673. "define"
  1674. "depfile"
  1675. "else"
  1676. "elseif"
  1677. "endif"
  1678. "if"
  1679. "include"
  1680. "insmod_opt"
  1681. "install"
  1682. "keep"
  1683. "options"
  1684. "path"
  1685. "generic_stringfile"
  1686. "pcimapfile"
  1687. "isapnpmapfile"
  1688. "usbmapfile"
  1689. "parportmapfile"
  1690. "ieee1394mapfile"
  1691. "pnpbiosmapfile"
  1692. "probe"
  1693. "probeall"
  1694. "prune"
  1695. "post-install"
  1696. "post-remove"
  1697. "pre-install"
  1698. "pre-remove"
  1699. "remove"
  1700. "persistdir")
  1701. ;; List of additional font-lock-expressions
  1702. nil
  1703. ;; List of additional automode-alist expressions
  1704. '("/etc/modules.conf" "/etc/conf.modules")
  1705. ;; List of set up functions to call
  1706. nil))
  1707. (provide 'generic-x)
  1708. ;;; generic-x.el ends here