bat-file-mode.el
author Oleksandr Gavenko <gavenkoa@gmail.com>
Sun, 14 Mar 2010 20:12:11 +0200
changeset 336 a252995f7d6b
parent 330 d38a01da2364
permissions -rw-r--r--
Move general getting into one place.

;;; bat-file-mode.el --- batch file major mode

;; Copyright (C) 2010 by Oleksandr Gavenko <gavenkoa@gmail.com>

;; You can do anything with this file without any warranty.

;; Author: Oleksandr Gavenko <gavenkoa@gmail.com>
;; Maintainer: Oleksandr Gavenko <gavenkoa@gmail.com>
;; Created: 2010-01-28
;; Version: 0.1
;; Keywords: languages

;;; Commentary:
;;
;; Very pure highlighting and not all available syntax.

;;; Code:

;;;###autoload
(define-generic-mode 'bat-file-mode
  (list "REM " "rem " ":: ")
  nil
  '(
    ("\\(:[[:alnum:]_]+\\)" (1 'font-lock-function-name-face))
    ("\\<\\([iI][fF]\\|[eE][lL][sS][eE]\\|[fF][oO][rR]\\|[iI][nN]\\|[dD][oO]\\|[gG][oO][tT][oO]\
\\|[nN][oO][tT]\\|[eE][rR][rR][oO][rR][lL][eE][vV][eE][lL]\\|[eE][xX][iI][sS][tT]\
\\|[dD][eE][fF][iI][nN][eE][dD]\\|[cC][mM][dD][eE][xX][tT][vV][eE][rR][sS][iI][oO][nN]\
\\|[pP][aA][uU][sS][eE]\\|[eE][cC][hH][oO]\\|[pP][rR][oO][mM][pP][tT]\
\\|[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]\
\\|[cC][dD]\\|[cC][hH][dD][iI][rR]\\|[pP][uU][sS][hH][dD]\\|[pP][oO][pP][dD]\\|[cC][lL][sS]\
\\|[cC][mM][dD]\\|[vV][eE][rR]\
\\|[dD][eE][lL][eE][tT][eE]\\|[dD][eE][lL]\\|[cC][oO][pP][yY]\
\\)\\>" (1 'font-lock-keyword-face))
    ("\\(:[[:alpha:]][[:alnum:]_]*\\)" (1 'font-lock-function-name-face))
    ("[gG][oO][tT][oO][[:blank:]]+\\([[:alpha:]][[:alnum:]_]*\\)" (1 'font-lock-function-name-face))
    ("[cC][aA][lL][lL][[:blank:]]+\\(:[[:alpha:]][[:alnum:]_]*\\)" (1 'font-lock-function-name-face))
    ("\\(%[[:digit:]]\\|%%[[:alpha:]]\\|%[[:alpha:]][[:alnum:]_]*%\\)" (1 'font-lock-variable-name-face))
    ("[sS][eE][tT][[:blank:]]+\\([[:alpha:]][[:alnum:]_]*\\)[[:blank:]]*=" (1 'font-lock-variable-name-face))
    ;; Options for program like --help or /quiet.
    ("[[:blank:]]+\\([-/]-?[[:alnum:]_.]+\\)" (1 'font-lock-preprocessor-face))
    ;; ("\\(\\%[a-z]\\)" (1 'font-lock-reference-face))
    ;; ("\\(%\\sw+%\\)" (1 'font-lock-reference-face))
    ;; ("\\(%[0-9]\\)" (1 'font-lock-reference-face))
    )
  (list "\\.\\([bB][aA][tT]\\|[cC][mM][dD]\\)$")
  nil
  "Generic mode for batch files.")

(add-hook
 'bat-file-mode-hook
 (lambda ()
   (modify-syntax-entry ?\" "\"")
   (modify-syntax-entry ?' "\"")
   (modify-syntax-entry ?\\ "\\")
   (modify-syntax-entry ?% ".")
   (modify-syntax-entry ?= ".")
   (modify-syntax-entry ?_ "w")
   )
 )

(provide 'bat-file-mode)

;;; bat-file-mode.el ends here