From owner-ntemacs-users@june  Fri Aug 23 10:10:46 1996
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	[nil "Fri" "23" "August" "1996" "12:13:57" "-0400" "Peter Breton" "pbreton@volte.i-kinetics.com" nil "32" "Re: BAT mode, take 2" "^From:" nil nil "8" nil nil nil nil]
	nil)
Received: from joker.cs.washington.edu (joker.cs.washington.edu [128.95.1.42]) by june.cs.washington.edu (8.7.5/7.2ju) with SMTP id KAA08590 for <voelker@june.cs.washington.edu>; Fri, 23 Aug 1996 10:10:45 -0700
Received: from june.cs.washington.edu (june.cs.washington.edu [128.95.1.4]) by joker.cs.washington.edu (8.6.12/7.2ws+) with ESMTP id KAA42120 for <voelker@joker.cs.washington.edu>; Fri, 23 Aug 1996 10:10:44 -0700
Received: from ns.i-kinetics.com (ns.i-kinetics.com [198.69.254.24]) by june.cs.washington.edu (8.7.5/7.2ju) with SMTP id JAA02564 for <ntemacs-users@cs.washington.edu>; Fri, 23 Aug 1996 09:15:30 -0700
Received: (Unknown UID 8@localhost) by ns.i-kinetics.com (8.6.11/8.6.5) id MAA12393; Fri, 23 Aug 1996 12:15:26 -0400
Received: from dirac.i-kinetics.com(192.31.81.157) by ns.i-kinetics.com via smap (V1.3) 	id sma012391; Fri Aug 23 12:15:21 1996
Received: from volte.i-kinetics.com by i-kinetics.com (4.1/SMI-4.1/UUNET) 	id AA08686; Fri, 23 Aug 96 12:13:18 EDT
Received: by volte.i-kinetics.com (SMI-8.6/SMI-SVR4) 	id MAA28408; Fri, 23 Aug 1996 12:13:57 -0400
Message-Id: <199608231613.MAA28408@volte.i-kinetics.com>
In-Reply-To: <21DD5A20.1234@natinst.com>
References: <21DD5A20.1234@natinst.com>
Reply-To: pbreton@i-kinetics.com
From: Peter Breton <pbreton@volte.i-kinetics.com>
To: Ross.Sabolcik@natinst.com (Ross Sabolcik)
Cc: ntemacs-users@cs.washington.edu
Subject: Re: BAT mode, take 2
Date: Fri, 23 Aug 1996 12:13:57 -0400


 Ross> I am using your new mode under win 95 emacs-19.32.  The mode
 Ross> seems to be really cool and useful, however I have one problem.
 Ross> If I don't explicitly require bat-mode in my .emacs file, bat
 Ross> mode will not load when I open a bat file, instead I get
 Ross> "unknown function bat-mode".  

Did you try autoloading it? I guess that should be mentioned in the
Usage part.....

Put this in your .emacs/_emacs:

;; Mode for DOS and Windows BAT files
(autoload 'bat-mode "batmode"
  "DOS and WIndows BAT files" t)

 Ross> When I explicitly require the
 Ross> mode, it loads and I drop into bat-mode when I open a batch
 Ross> file, but font-lock does not fontify the buffer.  If I manually
 Ross> reload my .emacs file, or reload bat-mode the fontification
 Ross> seems to work.

I'm still figuring out some of the font-lock stuff. This works for me:

  (setq font-lock-global-modes t)

BAT mode should then automatically fontify (as will everything else).

One thig I've noticed is that Fontify-ing seems to take too long, perhaps
those regexps need a little tuning....

			Peter

From owner-ntemacs-users@june  Thu Aug 22 19:01:28 1996
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	[nil "Thu" "22" "August" "1996" "21:22:00" "EDT" "Peter Breton" "pbreton@dirac.i-kinetics.com" nil "156" "BAT mode, take 2" "^From:" nil nil "8" nil nil nil nil]
	nil)
Received: from joker.cs.washington.edu (joker.cs.washington.edu [128.95.1.42]) by june.cs.washington.edu (8.7.5/7.2ju) with SMTP id TAA02746 for <voelker@june.cs.washington.edu>; Thu, 22 Aug 1996 19:01:28 -0700
Received: from june.cs.washington.edu (june.cs.washington.edu [128.95.1.4]) by joker.cs.washington.edu (8.6.12/7.2ws+) with ESMTP id TAA41057 for <voelker@joker.cs.washington.edu>; Thu, 22 Aug 1996 19:01:27 -0700
Received: from ns.i-kinetics.com (ns.i-kinetics.com [198.69.254.24]) by june.cs.washington.edu (8.7.5/7.2ju) with SMTP id SAA29986 for <ntemacs-users@cs.washington.edu>; Thu, 22 Aug 1996 18:24:12 -0700
Received: (Unknown UID 8@localhost) by ns.i-kinetics.com (8.6.11/8.6.5) id VAA05881 for <ntemacs-users@cs.washington.edu>; Thu, 22 Aug 1996 21:24:11 -0400
Received: from dirac.i-kinetics.com(192.31.81.157) by ns.i-kinetics.com via smap (V1.3) 	id sma005879; Thu Aug 22 21:24:03 1996
Received: by i-kinetics.com (4.1/SMI-4.1/UUNET) 	id AA03227; Thu, 22 Aug 96 21:22:00 EDT
Message-Id: <9608230122.AA03227@i-kinetics.com>
Reply-To: pbreton@i-kinetics.com
From: Peter Breton <pbreton@dirac.i-kinetics.com>
To: ntemacs-users@cs.washington.edu
Subject: BAT mode, take 2
Date: Thu, 22 Aug 96 21:22:00 EDT


Some bug fixes and cleanups, better font-lock support.

Credit for suggestions to:

   Robert Brodersen <rbrodersen@siebel.com>
   ACorreir@pervasive-sw.com (Alfred Correira)

;;; my-batmode.el --- Simple mode for Windows BAT files

;; Author: Peter Breton <pbreton@i-kinetics.com> 
;; Created: Thu Jul 25 1996
;; Version: $Id: my-batmode.el,v 1.3 1996/08/22 02:31:47 peter Exp $
;; Keywords: 
;; Time-stamp: <96/08/20 21:18:01 peter>

;;; Commentary:
;;
;; USAGE: Byte-compile this file, and add the following line 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))

;; TODO:
;;
;; Support "compiles" ?
;; Imenu? Don't have real functions.....

;;; Change log:
;; $Log: my-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)
  (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)

  (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; I think more is required
  (and (boundp 'font-lock-global-modes)
       font-lock-global-modes
       (font-lock-mode t))

  (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 "^[@	]*\\([rR][eE][mM].*\\)" 1 'font-lock-comment-face t)
    (list "^[	]*\\(::-.*\\)"		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 "^[	]*\\(:\\sw+\\)"  1 'font-lock-function-name-face t)
	(list "\\(%\\sw+%\\)"		 1 'font-lock-reference-face)
	(list "\\(%[0-9]\\)"		 1 'font-lock-reference-face)
	(list "\\(/[^/	]+\\)"		 1 'font-lock-type-face)
	(list "\\<\\(goto\\)\\>[	]*\\(\\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)

;;; my-batmode.el ends here

;; Local Variables:
;; autocompile: t
;; End:

