- (list
- "CALL" "call" "Call"
- "CD" "cd" "Cd"
- "CLS" "cls" "Cls"
- "COPY" "copy" "Copy"
- "DEL" "del" "Del"
- "ECHO" "echo" "Echo"
- "MD" "md" "Md"
- "PATH" "path" "Path"
- "PAUSE" "pause" "Pause"
- "PROMPT" "prompt" "Prompt"
- "RD" "rd" "Rd"
- "REN" "ren" "Ren"
- "SET" "set" "Set"
- "START" "start" "Start"
- "SHIFT" "shift" "Shift"
- ) 'font-lock-builtin-face "[ \t|\n]")
- (list "^[ \t]*\\(:\\sw+\\)" 1 'font-lock-function-name-face t)
- (list "\\(%\\sw+%\\)" 1 'font-lock-variable-name-face t)
- (list "\\(%[0-9]\\)" 1 'font-lock-variable-name-face t)
- (list "\\(/[^/ \"\t\n]+\\)" 1 'font-lock-type-face)
- (list "[\t ]+\\([+-][^\t\n\" ]+\\)" 1 'font-lock-type-face)
- (list "[ \t\n|]\\<\\([gG][oO][tT][oO]\\)\\>[ \t]*\\(\\sw+\\)?"
- '(1 font-lock-keyword-face)
- '(2 font-lock-function-name-face nil t))
- (list "[ \t\n|]\\<\\([sS][eE][tT]\\)\\>[ \t]*\\(\\sw+\\)?[ \t]*=?"
- '(1 font-lock-builtin-face)
- '(2 font-lock-variable-name-face t t))
-
- )
- (list
- "\\.[bB][aA][tT]\\'"
- "\\`[cC][oO][nN][fF][iI][gG]\\."
- "\\`[aA][uU][tT][oO][eE][xX][eE][cC]\\." )
- (list 'generic-bat-mode-setup-function)
- "Generic mode for MS-Windows BAT files.")
-
- (defvar bat-generic-mode-syntax-table nil
- "Syntax table in use in bat-generic-mode buffers.")
-
- (defvar bat-generic-mode-keymap (make-sparse-keymap)
- "Keymap for bet-generic-mode.")
-
- (defun bat-generic-mode-compile ()
- "Run the current BAT file in a compilation buffer."
- (interactive)
- (let ((compilation-buffer-name-function
- (function
- (lambda(ign)
- (concat "*" (buffer-file-name) "*")))
- )
- )
- (compile
- (concat (w32-shell-name) " -c " (buffer-file-name)))))
-
- (defun bat-generic-mode-run-as-comint ()
- "Run the current BAT file in a comint buffer."
- (interactive)
- (require 'comint)
- (let* ((file (buffer-file-name))
- (buf-name (concat "*" file "*")))
- (save-excursion
- (set-buffer
- (get-buffer-create buf-name))
- (erase-buffer)
- (comint-mode)
- (comint-exec
- buf-name
- file
- (w32-shell-name)
- nil
- (list
- "-c"
- file
- )
- )
- (display-buffer buf-name))))
-
- (define-key bat-generic-mode-keymap "\C-c\C-c" 'bat-generic-mode-compile)
-
- ;; Make underscores count as words
- (if bat-generic-mode-syntax-table
- nil
- (setq bat-generic-mode-syntax-table (make-syntax-table))
- (modify-syntax-entry ?_ "w" bat-generic-mode-syntax-table))
-
- ;; bat-generic-mode doesn't use the comment functionality of generic-mode
- ;; because it has a three-letter comment-string, so we do it
- ;; here manually instead
- (defun generic-bat-mode-setup-function ()
- (make-local-variable 'parse-sexp-ignore-comments)
- (make-local-variable 'comment-start)
- (make-local-variable 'comment-start-skip)
- (make-local-variable 'comment-end)
- (setq imenu-generic-expression '((nil "^:\\(\\sw+\\)" 1))
- parse-sexp-ignore-comments t
- comment-end ""
- comment-start "REM "
- comment-start-skip "[Rr][Ee][Mm] *"
- )
- (set-syntax-table bat-generic-mode-syntax-table)
- ;; Make keywords case-insensitive
- (setq font-lock-defaults (list 'generic-font-lock-defaults nil t))
- (use-local-map bat-generic-mode-keymap)
- )
- )
+ '("CALL" "call" "Call"
+ "CD" "cd" "Cd"
+ "CLS" "cls" "Cls"
+ "COPY" "copy" "Copy"
+ "DEL" "del" "Del"
+ "ECHO" "echo" "Echo"
+ "MD" "md" "Md"
+ "PATH" "path" "Path"
+ "PAUSE" "pause" "Pause"
+ "PROMPT" "prompt" "Prompt"
+ "RD" "rd" "Rd"
+ "REN" "ren" "Ren"
+ "SET" "set" "Set"
+ "START" "start" "Start"
+ "SHIFT" "shift" "Shift")
+ font-lock-builtin-face "[ \t|\n]")
+ '("^[ \t]*\\(:\\sw+\\)" 1 font-lock-function-name-face t)
+ '("\\(%\\sw+%\\)" 1 font-lock-variable-name-face t)
+ '("\\(%[0-9]\\)" 1 font-lock-variable-name-face t)
+ '("\\(/[^/ \"\t\n]+\\)" 1 font-lock-type-face)
+ '("[\t ]+\\([+-][^\t\n\" ]+\\)" 1 font-lock-type-face)
+ '("[ \t\n|]\\<\\([gG][oO][tT][oO]\\)\\>[ \t]*\\(\\sw+\\)?"
+ (1 font-lock-keyword-face)
+ (2 font-lock-function-name-face nil t))
+ '("[ \t\n|]\\<\\([sS][eE][tT]\\)\\>[ \t]*\\(\\sw+\\)?[ \t]*=?"
+ (1 font-lock-builtin-face)
+ (2 font-lock-variable-name-face t t))))
+ '("\\.[bB][aA][tT]\\'"
+ "\\`[cC][oO][nN][fF][iI][gG]\\."
+ "\\`[aA][uU][tT][oO][eE][xX][eE][cC]\\.")
+ '(generic-bat-mode-setup-function)
+ "Generic mode for MS-Windows BAT files.")
+
+(defvar bat-generic-mode-syntax-table nil
+ "Syntax table in use in `bat-generic-mode' buffers.")
+
+(defvar bat-generic-mode-keymap (make-sparse-keymap)
+ "Keymap for bet-generic-mode.")
+
+(defun bat-generic-mode-compile ()
+ "Run the current BAT file in a compilation buffer."
+ (interactive)
+ (let ((compilation-buffer-name-function
+ (function
+ (lambda(ign)
+ (concat "*" (buffer-file-name) "*")))))
+ (compile
+ (concat (w32-shell-name) " -c " (buffer-file-name)))))
+
+(eval-when-compile (require 'comint))
+(defun bat-generic-mode-run-as-comint ()
+ "Run the current BAT file in a comint buffer."
+ (interactive)
+ (require 'comint)
+ (let* ((file (buffer-file-name))
+ (buf-name (concat "*" file "*")))
+ (save-excursion
+ (set-buffer
+ (get-buffer-create buf-name))
+ (erase-buffer)
+ (comint-mode)
+ (comint-exec
+ buf-name
+ file
+ (w32-shell-name)
+ nil
+ (list "-c" file))
+ (display-buffer buf-name))))
+
+(define-key bat-generic-mode-keymap "\C-c\C-c" 'bat-generic-mode-compile)
+
+;; Make underscores count as words
+(unless bat-generic-mode-syntax-table
+ (setq bat-generic-mode-syntax-table (make-syntax-table))
+ (modify-syntax-entry ?_ "w" bat-generic-mode-syntax-table))
+
+;; bat-generic-mode doesn't use the comment functionality of
+;; define-generic-mode because it has a three-letter comment-string,
+;; so we do it here manually instead
+(defun generic-bat-mode-setup-function ()
+ (make-local-variable 'parse-sexp-ignore-comments)
+ (make-local-variable 'comment-start)
+ (make-local-variable 'comment-start-skip)
+ (make-local-variable 'comment-end)
+ (setq imenu-generic-expression '((nil "^:\\(\\sw+\\)" 1))
+ parse-sexp-ignore-comments t
+ comment-end ""
+ comment-start "REM "
+ comment-start-skip "[Rr][Ee][Mm] *")
+ (set-syntax-table bat-generic-mode-syntax-table)
+ ;; Make keywords case-insensitive
+ (setq font-lock-defaults '(generic-font-lock-keywords nil t))
+ (use-local-map bat-generic-mode-keymap)))