summaryrefslogtreecommitdiff
path: root/lisp/=batmode.el
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1996-11-02 07:24:57 +0000
committerRichard M. Stallman <rms@gnu.org>1996-11-02 07:24:57 +0000
commitc7f1de155f2f099bdce3551c2f1e9422c99e4738 (patch)
tree5e21958f9fdb903246f14198401ec8554963a8b6 /lisp/=batmode.el
parent0f2bdd134bbda480d21402134e312db0f43744f4 (diff)
downloademacs-c7f1de155f2f099bdce3551c2f1e9422c99e4738.tar.gz
Initial revision
Diffstat (limited to 'lisp/=batmode.el')
-rw-r--r--lisp/=batmode.el165
1 files changed, 165 insertions, 0 deletions
diff --git a/lisp/=batmode.el b/lisp/=batmode.el
new file mode 100644
index 00000000000..72a0735c6a6
--- /dev/null
+++ b/lisp/=batmode.el
@@ -0,0 +1,165 @@
+;;; batmode.el --- Simple mode for Windows BAT files
+
+;; Copyright (C) 1996 Free Software Foundation, Inc.
+
+;; Author: Peter Breton <pbreton@i-kinetics.com>
+;; Created: Thu Jul 25 1996
+;; Keywords: BAT, DOS, Windows
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+;;
+;; USAGE: Byte-compile this file, and add the following lines to your
+;; emacs initialization file (.emacs/_emacs):
+;;
+;; (setq auto-mode-alist
+;; (append
+;; (list (cons "\\.[bB][aA][tT]$" 'bat-mode))
+;; ;; For DOS init files
+;; (list (cons "CONFIG\\." 'bat-mode))
+;; (list (cons "AUTOEXEC\\." 'bat-mode))
+;; auto-mode-alist))
+;;
+;; (autoload 'bat-mode "batmode"
+;; "DOS and WIndows BAT files" t)
+
+;; TODO:
+;;
+;; Support "compiles" ?
+;; Imenu? Don't have real functions.....
+
+;;; Change log:
+;; $Log: batmode.el,v $
+;; Revision 1.3 1996/08/22 02:31:47 peter
+;; Added Usage message, credit to folks from NTEmacs mailing list,
+;; Syntax table, New font-lock keywords
+;;
+;; Revision 1.2 1996/08/18 16:27:13 peter
+;; Added preliminary global-font-lock support
+;;
+;; Revision 1.1 1996/08/18 16:14:18 peter
+;; Initial revision
+;;
+
+;; Credit for suggestions, patches and bug-fixes:
+;; Robert Brodersen <rbrodersen@siebel.com>
+;; ACorreir@pervasive-sw.com (Alfred Correira)
+
+;;; Code:
+
+(defvar bat-mode-map nil "Local keymap for bat-mode buffers.")
+
+;; Make this lowercase if you like
+(defvar bat-mode-comment-start "REM "
+ "Comment string to use in BAT mode")
+
+(defvar bat-mode-syntax-table nil
+ "Syntax table in use in Bat-mode buffers.")
+
+(if bat-mode-map
+ nil
+ (setq bat-mode-map (copy-keymap global-map))
+)
+
+;; Make underscores count as words
+(if bat-mode-syntax-table
+ ()
+ (setq bat-mode-syntax-table (make-syntax-table))
+ (modify-syntax-entry ?_ "w" bat-mode-syntax-table)
+)
+
+(defun bat-mode ()
+ "Mode for DOS and Windows BAT files"
+ (interactive)
+ (kill-all-local-variables)
+ (use-local-map bat-mode-map)
+ (set-syntax-table bat-mode-syntax-table)
+
+ (make-local-variable 'parse-sexp-ignore-comments)
+ (make-local-variable 'comment-start)
+ (make-local-variable 'comment-start-skip)
+ (make-local-variable 'comment-end)
+ (make-local-variable 'executable-command)
+ (make-local-variable 'font-lock-defaults)
+
+ (setq major-mode 'bat-mode
+ mode-name "bat"
+
+ comment-end ""
+
+ comment-start bat-mode-comment-start
+ comment-start-skip "[Rr][Ee][Mm] *"
+
+ parse-sexp-ignore-comments t
+
+ )
+
+ ;; Global font-lock support
+ ;; (setq font-lock-defaults (list 'bat-font-lock-keywords nil t nil nil))
+ (setq font-lock-defaults (list 'bat-font-lock-keywords nil))
+
+ (run-hooks 'bat-mode-hook))
+
+(defvar bat-font-lock-keywords
+ (list
+ ;; Make this one first in the list, otherwise comments will
+ ;; be over-written by other variables
+ (list "^[@ \t]*\\([rR][eE][mM].*\\)" 1 'font-lock-comment-face t)
+ (list "^[ \t]*\\(::-.*\\)" 1 'font-lock-comment-face t)
+ (list
+ (concat "\\(\\<"
+ (mapconcat 'identity
+ '(
+ "call"
+ "echo"
+ "exist"
+ "errorlevel"
+ "for"
+ "goto"
+ "if"
+ "not"
+ "path"
+ "pause"
+ "prompt"
+ "set"
+ "start"
+ )
+ "\\>\\|\\<")
+ "\\>\\)") 1 'font-lock-keyword-face)
+ (list "^[ \t]*\\(:\\sw+\\)" 1 'font-lock-function-name-face t)
+ (list "\\(%\\sw+%\\)" 1 'font-lock-reference-face)
+ (list "\\(%[0-9]\\)" 1 'font-lock-reference-face)
+ (list "\\(/[^/ \t\n]+\\)" 1 'font-lock-type-face)
+ (list "\\<\\(goto\\)\\>[ \t]*\\(\\sw+\\)?"
+ '(1 font-lock-keyword-face)
+ '(2 font-lock-function-name-face nil t))
+
+ )
+ "Keywords to hilight in BAT mode")
+
+;;; don't do it in Win-Emacs
+(if (boundp 'font-lock-defaults-alist)
+ (add-to-list
+ 'font-lock-defaults-alist
+ (cons 'bat-mode
+ (list 'bat-font-lock-keywords nil t nil nil))))
+
+(provide 'bat-mode)
+
+;;; batmode.el ends here