|
1 ;;; bat-file-mode.el --- batch file major mode |
|
2 |
|
3 ;; Copyright (C) 2010 by Oleksandr Gavenko <gavenkoa@gmail.com> |
|
4 |
|
5 ;; You can do anything with this file without any warranty. |
|
6 |
|
7 ;; Author: Oleksandr Gavenko <gavenkoa@gmail.com> |
|
8 ;; Maintainer: Oleksandr Gavenko <gavenkoa@gmail.com> |
|
9 ;; Created: 2010-01-28 |
|
10 ;; Version: 0.1 |
|
11 ;; Keywords: languages |
|
12 |
|
13 ;;; Commentary: |
|
14 ;; |
|
15 ;; Very pure highlighting and not all available syntax. |
|
16 |
|
17 ;;; Code: |
|
18 |
|
19 ;;;###autoload |
|
20 (define-generic-mode 'bat-file-mode |
|
21 (list "REM " ":: ") |
|
22 nil |
|
23 '( |
|
24 ("\\(:[[:alnum:]_]+\\)" (1 'font-lock-function-name-face)) |
|
25 ("\\<\\([iI][fF]\\|[eE][lL][sS][eE]\\|[fF][oO][rR]\\|[iI][nN]\\|[dD][oO]\\|[gG][oO][tT][oO]\ |
|
26 \\|[nN][oO][tT]\\|[eE][rR][rR][oO][rR][lL][eE][vV][eE][lL]\\|[eE][xX][iI][sS][tT]\ |
|
27 \\|[dD][eE][fF][iI][nN][eE][dD]\\|[cC][mM][dD][eE][xX][tT][vV][eE][rR][sS][iI][oO][nN]\ |
|
28 \\|[pP][aA][uU][sS][eE]\\|[eE][cC][hH][oO]\\|[pP][rR][oO][mM][pP][tT]\ |
|
29 \\|[pP][rR][oO][mM][pP][tT]\\|[cC][aA][lL][lL]\\|[sS][eE][tT]\\|[sS][tT][aA][rR][tT]\\|[eE][xX][iI][tT]\ |
|
30 \\|[cC][dD]\\|[cC][hH][dD][iI][rR]\\|[pP][uU][sS][hH][dD]\\|[pP][oO][pP][dD]\\|[cC][lL][sS]\ |
|
31 \\|[cC][mM][dD]\\|[vV][eE][rR]\ |
|
32 \\|[dD][eE][lL][eE][tT][eE]\\|[dD][eE][lL]\\|[cC][oO][pP][yY]\ |
|
33 \\)\\>" (1 'font-lock-keyword-face)) |
|
34 ("\\(:[[:alpha:]][[:alnum:]_]*\\)" (1 'font-lock-function-name-face)) |
|
35 ("[gG][oO][tT][oO][[:blank:]]+\\([[:alpha:]][[:alnum:]_]*\\)" (1 'font-lock-function-name-face)) |
|
36 ("[cC][aA][lL][lL][[:blank:]]+\\(:[[:alpha:]][[:alnum:]_]*\\)" (1 'font-lock-function-name-face)) |
|
37 ("\\(%[[:digit:]]\\|%%[[:alpha:]]\\|%[[:alpha:]][[:alnum:]_]*%\\)" (1 'font-lock-variable-name-face)) |
|
38 ("[sS][eE][tT][[:blank:]]+\\([[:alpha:]][[:alnum:]_]*\\)[[:blank:]]*=" (1 'font-lock-variable-name-face)) |
|
39 ("[[:blank:]]+\\([-/][[:alnum:]_.]+\\)" (1 'font-lock-preprocessor-face)) |
|
40 ;; ("\\(\\%[a-z]\\)" (1 'font-lock-reference-face)) |
|
41 ;; ("\\(%\\sw+%\\)" (1 'font-lock-reference-face)) |
|
42 ;; ("\\(%[0-9]\\)" (1 'font-lock-reference-face)) |
|
43 ) |
|
44 (list "\\.\\([bB][aA][tT]\\|[cC][mM][dD]\\)$") |
|
45 nil |
|
46 "Generic mode for batch files.") |
|
47 |
|
48 (add-hook |
|
49 'bat-file-mode-hook |
|
50 (lambda () |
|
51 (modify-syntax-entry ?\" "\"") |
|
52 (modify-syntax-entry ?' "\"") |
|
53 (modify-syntax-entry ?\\ "\\") |
|
54 (modify-syntax-entry ?% ".") |
|
55 (modify-syntax-entry ?= ".") |
|
56 (modify-syntax-entry ?_ "w") |
|
57 ) |
|
58 ) |
|
59 |
|
60 (provide 'bat-file-mode) |
|
61 |
|
62 ;;; bat-file-mode.el ends here |