generic-x.el 48 KB

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