Mercurial > emacs
comparison lisp/generic-x.el @ 25603:db167bb5dfd8
(generic-define-unix-modes): Added new modes:
inetd-conf-generic-mode, etc-services-generic-mode,
etc-passwd-generic-mode. These are all defined for Unix by default.
(apache-generic-mode): Use an imenu-generic-expression to list
Configuration keywords.
(samba-generic-mode): Use both ; and # as comment characters.
(samba-generic-mode): Font-lock expressions now highlight name value pairs.
(bat-generic-mode): Keywords are now case-insensitive through
font-lock-defaults setting.
(java-properties-generic-mode): Supports both ! and # as comment characters.
(java-properties-generic-mode): Added an imenu-generic-expression
(java-properties-generic-mode): Reworked to support the various
different ways to separate name and value (viz, '=', ':' and whitespace).
(show-tabs-generic-mode): Added this new generic-mode.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Wed, 08 Sep 1999 07:32:49 +0000 |
parents | ba60301081e8 |
children | 39262276b212 |
comparison
equal
deleted
inserted
replaced
25602:fbb721a3bfaa | 25603:db167bb5dfd8 |
---|---|
138 (setq generic-extras-enable-list | 138 (setq generic-extras-enable-list |
139 (append (list 'apache-generic-mode 'samba-generic-mode | 139 (append (list 'apache-generic-mode 'samba-generic-mode |
140 'hosts-generic-mode 'fvwm-generic-mode | 140 'hosts-generic-mode 'fvwm-generic-mode |
141 'x-resource-generic-mode | 141 'x-resource-generic-mode |
142 'alias-generic-mode | 142 'alias-generic-mode |
143 'inetd-conf-generic-mode | |
144 'etc-services-generic-mode | |
145 'etc-passwd-generic-mode | |
143 ) | 146 ) |
144 generic-extras-enable-list))) | 147 generic-extras-enable-list))) |
145 | 148 |
146 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 149 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
147 ;; Generic-modes | 150 ;; Generic-modes |
155 (list ?#) | 158 (list ?#) |
156 nil | 159 nil |
157 '(("^\\(<.*>\\)" 1 'font-lock-reference-face) | 160 '(("^\\(<.*>\\)" 1 'font-lock-reference-face) |
158 ("^\\(\\sw+\\)\\s-" 1 'font-lock-variable-name-face)) | 161 ("^\\(\\sw+\\)\\s-" 1 'font-lock-variable-name-face)) |
159 (list "srm\\.conf\\'" "httpd\\.conf\\'" "access\\.conf\\'") | 162 (list "srm\\.conf\\'" "httpd\\.conf\\'" "access\\.conf\\'") |
160 nil | 163 (list |
164 (function | |
165 (lambda () | |
166 (setq imenu-generic-expression | |
167 '((nil "^\\([-A-Za-z0-9_]+\\)" 1))) | |
168 ))) | |
161 "Generic mode for Apache or HTTPD configuration files.")) | 169 "Generic mode for Apache or HTTPD configuration files.")) |
162 | 170 |
163 ;;; Samba | 171 ;;; Samba |
164 (and | 172 (and |
165 (memq 'samba-generic-mode generic-extras-enable-list) | 173 (memq 'samba-generic-mode generic-extras-enable-list) |
166 | 174 |
167 (define-generic-mode 'samba-generic-mode | 175 (define-generic-mode 'samba-generic-mode |
168 (list ?\;) | 176 (list ?\; ?#) |
169 nil | 177 nil |
170 '(("^\\(\\[.*\\]\\)" 1 'font-lock-reference-face)) | 178 '( |
179 ("^\\(\\[.*\\]\\)" 1 'font-lock-reference-face) | |
180 ("^\\s-*\\(.+\\)=\\([^\r\n]*\\)" | |
181 (1 'font-lock-variable-name-face) | |
182 (2 'font-lock-type-face)) | |
183 ) | |
171 (list "smb\\.conf\\'") | 184 (list "smb\\.conf\\'") |
172 (list 'generic-bracket-support) | 185 (list 'generic-bracket-support) |
173 "Generic mode for Samba configuration files.")) | 186 "Generic mode for Samba configuration files.")) |
174 | 187 |
175 ;;; Fvwm | 188 ;;; Fvwm |
249 '(("^\\(\\[.*\\]\\)" 1 'font-lock-reference-face) | 262 '(("^\\(\\[.*\\]\\)" 1 'font-lock-reference-face) |
250 ("^\\([^=\n\r]*\\)=\\([^\n\r]*\\)$" | 263 ("^\\([^=\n\r]*\\)=\\([^\n\r]*\\)$" |
251 (1 font-lock-function-name-face) | 264 (1 font-lock-function-name-face) |
252 (2 font-lock-variable-name-face))) | 265 (2 font-lock-variable-name-face))) |
253 (list "\\.[iI][nN][iI]\\'") | 266 (list "\\.[iI][nN][iI]\\'") |
254 (list | 267 (list |
255 (function | 268 (function |
256 (lambda () | 269 (lambda () |
257 (setq imenu-generic-expression | 270 (setq imenu-generic-expression |
258 '((nil "^\\[\\(.*\\)\\]" 1) | 271 '((nil "^\\[\\(.*\\)\\]" 1) |
259 ("*Variables*" "^\\s-*\\([^=]+\\)\\s-*=" 1))) | 272 ("*Variables*" "^\\s-*\\([^=]+\\)\\s-*=" 1))) |
260 ))) | 273 ))) |
261 "Generic mode for MS-Windows INI files.")) | 274 "Generic mode for MS-Windows INI files.")) |
262 | 275 |
263 ;;; Windows REG files | 276 ;;; Windows REG files |
264 ;;; Unfortunately, Windows 95 and Windows NT have different REG file syntax! | 277 ;;; Unfortunately, Windows 95 and Windows NT have different REG file syntax! |
265 (and | 278 (and |
300 '(3 font-lock-constant-face t t) | 313 '(3 font-lock-constant-face t t) |
301 '(5 font-lock-string-face t t)) | 314 '(5 font-lock-string-face t t)) |
302 ;; These keywords appear as the first word on a line. (Actually, they | 315 ;; These keywords appear as the first word on a line. (Actually, they |
303 ;; can also appear after "if ..." or "for ..." clause, but since they | 316 ;; can also appear after "if ..." or "for ..." clause, but since they |
304 ;; are frequently used in simple text, we punt.) | 317 ;; are frequently used in simple text, we punt.) |
318 ;; In `generic-bat-mode-setup-function' we make the keywords | |
319 ;; case-insensitive | |
305 (generic-make-keywords-list | 320 (generic-make-keywords-list |
306 (list | 321 (list |
307 "FOR" "for" "For" | 322 "call" |
308 "IF" "if" "If" | 323 "echo" |
324 "for" | |
325 "if" | |
326 "path" | |
327 "pause" | |
328 "prompt" | |
329 "set" | |
330 "start" | |
309 ) | 331 ) |
310 'font-lock-keyword-face "^[@ \t]*") | 332 'font-lock-keyword-face "^[@ \t]*") |
311 ;; These keywords can be anywhere on a line | 333 ;; These keywords can be anywhere on a line |
334 ;; In `generic-bat-mode-setup-function' we make the keywords | |
335 ;; case-insensitive | |
312 (generic-make-keywords-list | 336 (generic-make-keywords-list |
313 (list | 337 (list |
314 "DO" "do" "Do" | 338 "exist" |
315 "EXIST" "exist" "Exist" | 339 "errorlevel" |
316 "ERRORLEVEL" "errorlevel" "ErrorLevel" "Errorlevel" | 340 "goto" |
317 "GOTO" "goto" "GoTo" "Goto" | 341 "not" |
318 "NOT" "not" "Not" | 342 ) 'font-lock-keyword-face) |
319 ) 'font-lock-keyword-face "[ \t|\n]") | 343 ;; These are built-in commands. Only frequently-used ones are listed. |
320 ; These are built-in commands. Only frequently-used ones are listed. | |
321 (generic-make-keywords-list | 344 (generic-make-keywords-list |
322 (list | 345 (list |
323 "CALL" "call" "Call" | 346 "CALL" "call" "Call" |
324 "CD" "cd" "Cd" | 347 "CD" "cd" "Cd" |
325 "CLS" "cls" "Cls" | 348 "CLS" "cls" "Cls" |
378 comment-end "" | 401 comment-end "" |
379 comment-start "REM " | 402 comment-start "REM " |
380 comment-start-skip "[Rr][Ee][Mm] *" | 403 comment-start-skip "[Rr][Ee][Mm] *" |
381 ) | 404 ) |
382 (set-syntax-table bat-generic-mode-syntax-table) | 405 (set-syntax-table bat-generic-mode-syntax-table) |
406 ;; Make keywords case-insensitive | |
407 (setq font-lock-defaults (list 'generic-font-lock-defaults nil t)) | |
383 ) | 408 ) |
384 ) | 409 ) |
385 | 410 |
386 ;;; Mailagent | 411 ;;; Mailagent |
387 ;; Mailagent is a Unix mail filtering program. Anyone wanna do a generic mode | 412 ;; Mailagent is a Unix mail filtering program. Anyone wanna do a generic mode |
552 nil | 577 nil |
553 "Mode for Java Manifest files") | 578 "Mode for Java Manifest files") |
554 | 579 |
555 ;; Java properties files | 580 ;; Java properties files |
556 (define-generic-mode 'java-properties-generic-mode | 581 (define-generic-mode 'java-properties-generic-mode |
557 (list ?#) | 582 (list ?! ?#) |
558 nil | |
559 ;; Property and value can be separated with whitespace or an equal sign | |
560 '(("^\\([\\.A-Za-z0-9_]+\\)\\(\\s-+\\|\\(\\s-*=\\s-*\\)\\)\\([^\r\n]*\\)$" | |
561 (1 font-lock-reference-face) (4 font-lock-variable-name-face))) | |
562 nil | 583 nil |
584 (let ((java-properties-key | |
585 "\\(\\([-A-Za-z0-9_\\./]\\|\\(\\\\[ =:]\\)\\)+\\)") | |
586 (java-properties-value | |
587 "\\([^\r\n]*\\)") | |
588 ) | |
589 ;; Property and value can be separated in a number of different ways: | |
590 ;; * whitespace | |
591 ;; * an equal sign | |
592 ;; * a colon | |
593 (mapcar | |
594 (function | |
595 (lambda (elt) | |
596 (list | |
597 (concat "^" java-properties-key elt java-properties-value "$") | |
598 '(1 font-lock-reference-face) | |
599 '(4 font-lock-variable-name-face) | |
600 ))) | |
601 ;; These are the separators | |
602 (list ":\\s-+" "\\s-+" "\\s-*=\\s-*") | |
603 ) | |
604 ) | |
563 nil | 605 nil |
606 (list | |
607 (function | |
608 (lambda () | |
609 (setq imenu-generic-expression | |
610 '((nil "^\\([^#! \t\n\r=:]+\\)" 1))) | |
611 ))) | |
564 "Mode for Java properties files.") | 612 "Mode for Java properties files.") |
565 | 613 |
566 ;; C shell alias definitions | 614 ;; C shell alias definitions |
567 (and | 615 (and |
568 (memq 'alias-generic-mode generic-extras-enable-list) | 616 (memq 'alias-generic-mode generic-extras-enable-list) |
1301 (2 font-lock-reference-face) (3 font-lock-variable-name-face))) | 1349 (2 font-lock-reference-face) (3 font-lock-variable-name-face))) |
1302 (list "\\.mailrc\\'") | 1350 (list "\\.mailrc\\'") |
1303 nil | 1351 nil |
1304 "Mode for mailrc files.") | 1352 "Mode for mailrc files.") |
1305 | 1353 |
1354 ;; Inetd.conf | |
1355 (and | |
1356 (memq 'inetd-conf-generic-mode generic-extras-enable-list) | |
1357 | |
1358 (define-generic-mode 'inetd-conf-generic-mode | |
1359 (list ?#) | |
1360 (list | |
1361 "stream" | |
1362 "dgram" | |
1363 "tcp" | |
1364 "udp" | |
1365 "wait" | |
1366 "nowait" | |
1367 "internal" | |
1368 ) | |
1369 '( | |
1370 ("^\\([-A-Za-z0-9_]+\\)" | |
1371 1 'font-lock-type-face) | |
1372 ) | |
1373 '("/etc/inetd.conf\\'") | |
1374 (list | |
1375 (function | |
1376 (lambda () | |
1377 (setq imenu-generic-expression | |
1378 '((nil "^\\([-A-Za-z0-9_]+\\)" 1))) | |
1379 ))) | |
1380 ) | |
1381 ) | |
1382 | |
1383 ;; Services | |
1384 (and | |
1385 (memq 'etc-services-generic-mode generic-extras-enable-list) | |
1386 | |
1387 (define-generic-mode 'etc-services-generic-mode | |
1388 (list ?#) | |
1389 (list | |
1390 "tcp" | |
1391 "udp" | |
1392 "ddp" | |
1393 ) | |
1394 '( | |
1395 ("^\\([-A-Za-z0-9_]+\\)\\s-+\\([0-9]+\\)/" | |
1396 (1 'font-lock-type-face) | |
1397 (2 'font-lock-variable-name-face) | |
1398 ) | |
1399 ) | |
1400 '("/etc/services\\'") | |
1401 (list | |
1402 (function | |
1403 (lambda () | |
1404 (setq imenu-generic-expression | |
1405 '((nil "^\\([-A-Za-z0-9_]+\\)" 1))) | |
1406 ))) | |
1407 ) | |
1408 ) | |
1409 | |
1410 ;; Password and Group files | |
1411 (and | |
1412 (memq 'etc-passwd-generic-mode generic-extras-enable-list) | |
1413 | |
1414 (define-generic-mode 'etc-passwd-generic-mode | |
1415 nil ;; No comment characters | |
1416 (list "root") ;; Only one keyword | |
1417 (list | |
1418 (list | |
1419 (concat | |
1420 "^" | |
1421 ;; User name -- Never blank! | |
1422 "\\([^:]+\\)" | |
1423 ":" | |
1424 ;; Password, UID and GID | |
1425 (mapconcat | |
1426 'identity | |
1427 (make-list 3 "\\([^:]+\\)") | |
1428 ":" | |
1429 ) | |
1430 ":" | |
1431 ;; GECOS/Name -- might be blank | |
1432 "\\([^:]*\\)" | |
1433 ":" | |
1434 ;; Home directory and shell | |
1435 "\\([^:]+\\)" | |
1436 ":?" | |
1437 "\\([^:]*\\)" | |
1438 "$" | |
1439 ) | |
1440 '(1 'font-lock-type-face) | |
1441 '(5 'font-lock-variable-name-face) | |
1442 '(6 'font-lock-reference-face) | |
1443 '(7 'font-lock-warning-face) | |
1444 ) | |
1445 '("^\\([^:]+\\):\\([^:]*\\):\\([0-9]+\\):\\(.*\\)$" | |
1446 (1 'font-lock-type-face) | |
1447 (4 'font-lock-variable-name-face) | |
1448 ) | |
1449 ) | |
1450 '("/etc/passwd\\'" "/etc/group\\'") | |
1451 (list | |
1452 (function | |
1453 (lambda () | |
1454 (setq imenu-generic-expression | |
1455 '((nil "^\\([-A-Za-z0-9_]+\\):" 1))) | |
1456 ))) | |
1457 ) | |
1458 ) | |
1459 | |
1460 | |
1461 ;; From Jacques Duthen <jacques.duthen@sncf.fr> | |
1462 (defvar show-tabs-generic-mode-font-lock-defaults-1 | |
1463 '( ;; trailing spaces must come before... | |
1464 ("[ \t]+$" . 'show-tabs-space-face) | |
1465 ;; ...embedded tabs | |
1466 ("[^\n\t]\\(\t+\\)" (1 'show-tabs-tab-face)))) | |
1467 | |
1468 (defvar show-tabs-generic-mode-font-lock-defaults-2 | |
1469 '( ;; trailing spaces must come before... | |
1470 ("[ \t]+$" . 'show-tabs-space-face) | |
1471 ;; ...tabs | |
1472 ("\t+" . 'show-tabs-tab-face))) | |
1473 | |
1474 (defface show-tabs-tab-face | |
1475 '((((class grayscale) (background light)) (:foreground "LightGray" :bold t)) | |
1476 (((class grayscale) (background dark)) (:foreground "DimGray" :bold t)) | |
1477 (((class color) (background light)) (:foreground "red")) | |
1478 (((class color) (background dark)) (:foreground "red")) | |
1479 (t (:bold t))) | |
1480 "Font Lock mode face used to highlight TABs." | |
1481 :group 'show-tabs) | |
1482 | |
1483 (defface show-tabs-space-face | |
1484 '((((class grayscale) (background light)) (:foreground "LightGray" :bold t)) | |
1485 (((class grayscale) (background dark)) (:foreground "DimGray" :bold t)) | |
1486 (((class color) (background light)) (:foreground "yellow")) | |
1487 (((class color) (background dark)) (:foreground "yellow")) | |
1488 (t (:bold t))) | |
1489 "Font Lock mode face used to highlight spaces." | |
1490 :group 'show-tabs) | |
1491 | |
1492 (define-generic-mode 'show-tabs-generic-mode | |
1493 () ;; no comment char | |
1494 () ;; no keywords | |
1495 show-tabs-generic-mode-font-lock-defaults-1 | |
1496 () ;; no auto-mode-alist | |
1497 ;; (list 'show-tabs-generic-mode-hook-fun) | |
1498 nil | |
1499 "Generic mode to show tabs and trailing spaces") | |
1500 | |
1306 (provide 'generic-x) | 1501 (provide 'generic-x) |
1307 | 1502 |
1308 ;;; generic-x.el ends here | 1503 ;;; generic-x.el ends here |
1504 |