bat-file-mode.el
author Oleksandr Gavenko <gavenkoa@gmail.com>
Sun, 07 Mar 2010 15:30:49 +0200
changeset 324 a32e3536d337
parent 321 d4e017c7e4fb
child 330 d38a01da2364
permissions -rw-r--r--
Spell fix.
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