bat-file-mode.el
author Oleksandr Gavenko <gavenkoa@gmail.com>
Sun, 07 Mar 2010 10:58:13 +0200
changeset 323 7a7dc2befa99
parent 321 d4e017c7e4fb
child 330 d38a01da2364
permissions -rw-r--r--
Because of Debian policy documentation covered by FDL license with invariant sections not allowed in packet repository tree. So it must be installed manually. My usually configuration install user local software into ~/usr DISTDIR.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
273
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     1
;;; bat-file-mode.el --- batch file major mode
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     2
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     3
;; Copyright (C) 2010 by Oleksandr Gavenko <gavenkoa@gmail.com>
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     4
279
fd6164dfec82 Update copyright statement and year.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 273
diff changeset
     5
;; You can do anything with this file without any warranty.
fd6164dfec82 Update copyright statement and year.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 273
diff changeset
     6
273
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     7
;; Author: Oleksandr Gavenko <gavenkoa@gmail.com>
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     8
;; Maintainer: Oleksandr Gavenko <gavenkoa@gmail.com>
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     9
;; Created: 2010-01-28
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    10
;; Version: 0.1
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    11
;; Keywords: languages
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    12
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    13
;;; Commentary:
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    14
;;
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    15
;; Very pure highlighting and not all available syntax.
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    16
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    17
;;; Code:
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    18
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    19
;;;###autoload
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    20
(define-generic-mode 'bat-file-mode
321
d4e017c7e4fb Allow lowercase rem keyword.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 319
diff changeset
    21
  (list "REM " "rem " ":: ")
273
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    22
  nil
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    23
  '(
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    24
    ("\\(:[[:alnum:]_]+\\)" (1 'font-lock-function-name-face))
307
cb789e9ce92a Added highliting for some keyword.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 306
diff changeset
    25
    ("\\<\\([iI][fF]\\|[eE][lL][sS][eE]\\|[fF][oO][rR]\\|[iI][nN]\\|[dD][oO]\\|[gG][oO][tT][oO]\
314
fa6c7a4a14d2 Added new keywords.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 311
diff changeset
    26
\\|[nN][oO][tT]\\|[eE][rR][rR][oO][rR][lL][eE][vV][eE][lL]\\|[eE][xX][iI][sS][tT]\
fa6c7a4a14d2 Added new keywords.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 311
diff changeset
    27
\\|[dD][eE][fF][iI][nN][eE][dD]\\|[cC][mM][dD][eE][xX][tT][vV][eE][rR][sS][iI][oO][nN]\
305
732fe4548ed4 Added highlighting for variavles and some keywords.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 279
diff changeset
    28
\\|[pP][aA][uU][sS][eE]\\|[eE][cC][hH][oO]\\|[pP][rR][oO][mM][pP][tT]\
319
05d8c9f1c220 Added shift keyword.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 318
diff changeset
    29
\\|[pP][rR][oO][mM][pP][tT]\\|[cC][aA][lL][lL]\\|[sS][eE][tT]\\|[sS][hH][iI][fF][tT]\\|[sS][tT][aA][rR][tT]\\|[eE][xX][iI][tT]\
316
3c923c4fe9fa Added new keywords.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 315
diff changeset
    30
\\|[cC][dD]\\|[cC][hH][dD][iI][rR]\\|[pP][uU][sS][hH][dD]\\|[pP][oO][pP][dD]\\|[cC][lL][sS]\
3c923c4fe9fa Added new keywords.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 315
diff changeset
    31
\\|[cC][mM][dD]\\|[vV][eE][rR]\
3c923c4fe9fa Added new keywords.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 315
diff changeset
    32
\\|[dD][eE][lL][eE][tT][eE]\\|[dD][eE][lL]\\|[cC][oO][pP][yY]\
3c923c4fe9fa Added new keywords.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 315
diff changeset
    33
\\)\\>" (1 'font-lock-keyword-face))
273
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    34
    ("\\(:[[:alpha:]][[:alnum:]_]*\\)" (1 'font-lock-function-name-face))
308
febb0a155d8d Highlight -op and /op switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 307
diff changeset
    35
    ("[gG][oO][tT][oO][[:blank:]]+\\([[:alpha:]][[:alnum:]_]*\\)" (1 'font-lock-function-name-face))
311
4b8f829ab2ab Highlight label after 'call'.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 309
diff changeset
    36
    ("[cC][aA][lL][lL][[:blank:]]+\\(:[[:alpha:]][[:alnum:]_]*\\)" (1 'font-lock-function-name-face))
317
686aa3fcc3a4 Highlight var if it contain underscore.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 316
diff changeset
    37
    ("\\(%[[:digit:]]\\|%%[[:alpha:]]\\|%[[:alpha:]][[:alnum:]_]*%\\)" (1 'font-lock-variable-name-face))
686aa3fcc3a4 Highlight var if it contain underscore.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 316
diff changeset
    38
    ("[sS][eE][tT][[:blank:]]+\\([[:alpha:]][[:alnum:]_]*\\)[[:blank:]]*=" (1 'font-lock-variable-name-face))
308
febb0a155d8d Highlight -op and /op switches.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 307
diff changeset
    39
    ("[[:blank:]]+\\([-/][[:alnum:]_.]+\\)" (1 'font-lock-preprocessor-face))
273
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    40
    ;; ("\\(\\%[a-z]\\)" (1 'font-lock-reference-face))
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    41
    ;; ("\\(%\\sw+%\\)" (1 'font-lock-reference-face))
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    42
    ;; ("\\(%[0-9]\\)" (1 'font-lock-reference-face))
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    43
    )
312
6f57f1693e65 Fix extension for bat file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 309
diff changeset
    44
  (list "\\.\\([bB][aA][tT]\\|[cC][mM][dD]\\)$")
273
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    45
  nil
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    46
  "Generic mode for batch files.")
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    47
309
ea77f99a8369 Modify modify-syntax-entry by hook. Removed unused code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 308
diff changeset
    48
(add-hook
ea77f99a8369 Modify modify-syntax-entry by hook. Removed unused code.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 308
diff changeset
    49
 'bat-file-mode-hook
273
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    50
 (lambda ()
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    51
   (modify-syntax-entry ?\" "\"")
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    52
   (modify-syntax-entry ?' "\"")
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    53
   (modify-syntax-entry ?\\ "\\")
306
0d8df38892d5 Mark % as punctuation.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 305
diff changeset
    54
   (modify-syntax-entry ?% ".")
273
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    55
   (modify-syntax-entry ?= ".")
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    56
   (modify-syntax-entry ?_ "w")
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    57
   )
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    58
 )
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    59
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    60
(provide 'bat-file-mode)
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    61
3b0d646154dc Added base incomplete bat-file mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    62
;;; bat-file-mode.el ends here