bat-file-mode.el
changeset 318 6a430707c23e
parent 317 686aa3fcc3a4
child 319 05d8c9f1c220
equal deleted inserted replaced
317:686aa3fcc3a4 318:6a430707c23e
       
     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