* lisp/progmodes/bat-mode.el: Rename from dos.el. Use "bat-" prefix.

(dos-mode-help): Remove.  Use describe-mode (C-h m) instead.
This commit is contained in:
Stefan Monnier 2013-08-07 18:42:44 -04:00
parent bb41480a68
commit 7679edb1e0
3 changed files with 41 additions and 48 deletions

View file

@ -1,5 +1,8 @@
2013-08-07 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/bat-mode.el: Rename from dos.el. Use "bat-" prefix.
(dos-mode-help): Remove. Use describe-mode (C-h m) instead.
* emacs-lisp/bytecomp.el: Check existence of f in #'f.
(byte-compile-callargs-warn): Use `push'.
(byte-compile-arglist-warn): Ignore higher-order "calls".

View file

@ -460,7 +460,7 @@ like an INI file. You can add this hook to `find-file-hook'."
;;; DOS/Windows BAT files
(when (memq 'bat-generic-mode generic-extras-enable-list)
(define-obsolete-function-alias 'bat-generic-mode 'dos-mode "24.4"))
(define-obsolete-function-alias 'bat-generic-mode 'bat-mode "24.4"))
;;; Mailagent
;; Mailagent is a Unix mail filtering program. Anyone wanna do a

View file

@ -1,4 +1,4 @@
;;; dos.el --- Major mode for editing Dos scripts
;;; bat-mode.el --- Major mode for editing DOS/Windows scripts
;; Copyright (C) 2003, 2008-2013 Free Software Foundation, Inc.
@ -22,13 +22,13 @@
;;; Commentary:
;;
;; Major mode for editing Dos scripts (batch files). Provides syntax
;; highlighting, a basic template, access to Dos help pages, imenu/outline
;; Major mode for editing DOS/Windows scripts (batch files). Provides syntax
;; highlighting, a basic template, access to DOS help pages, imenu/outline
;; navigation, and the ability to run scripts from within Emacs. The syntax
;; groups for highlighting are:
;;
;; Face Example
;; dos-label-face :LABEL
;; bat-label-face :LABEL
;; font-lock-comment-face rem
;; font-lock-builtin-face copy
;; font-lock-keyword-face goto
@ -39,7 +39,7 @@
;;
;; Usage:
;;
;; See documentation of function `dos-mode'.
;; See documentation of function `bat-mode'.
;;
;; Separate package `dos-indent' (Matthew Fidler) provides rudimentary
;; indentation, see http://www.emacswiki.org/emacs/dos-indent.el.
@ -52,20 +52,19 @@
;; 1 Preamble
(defgroup dos nil
(defgroup bat-mode nil
"Major mode for editing DOS/Windows batch files."
:link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
:group 'languages)
;; 2 User variables
(defface dos-label-face '((t :weight bold))
"Font Lock mode face used to highlight labels in batch files."
:group 'dos)
(defface bat-label-face '((t :weight bold))
"Font Lock mode face used to highlight labels in batch files.")
;; 3 Internal variables
(defvar dos-font-lock-keywords
(defvar bat-font-lock-keywords
(eval-when-compile
(let ((COMMANDS
'("assoc" "at" "attrib" "cd" "cls" "color" "copy" "date" "del" "dir"
@ -84,7 +83,7 @@
("^[ \t]*\\(@?rem\\_>\\|::\\).*"
(0 font-lock-comment-face t))
("^:[^:].*"
. 'dos-label-face)
. 'bat-label-face)
("\\<_\\(defined\\|set\\)\\_>[ \t]*\\(\\w+\\)"
(2 font-lock-variable-name-face))
("%\\(\\w+\\)%?"
@ -99,30 +98,28 @@
(,(concat "\\_<" (regexp-opt UNIX) "\\_>")
. font-lock-warning-face)))))
(defvar dos-menu
'("Dos"
["Run" dos-run :help "Run script"]
["Run with Args" dos-run-args :help "Run script with args"]
(defvar bat-menu
'("Bat"
["Run" bat-run :help "Run script"]
["Run with Args" bat-run-args :help "Run script with args"]
"--"
["Imenu" imenu :help "Navigate with imenu"]
"--"
["Template" dos-template :help "Insert template"]
["Template" bat-template :help "Insert template"]
"--"
["Help (Command)" dos-cmd-help :help "Show help page for Dos command"]
["Help (Mode)" dos-mode-help :help "Show help page for Emacs Dos Mode"]))
["Help (Command)" bat-cmd-help :help "Show help page for DOS command"]))
(defvar dos-mode-map
(defvar bat-mode-map
(let ((map (make-sparse-keymap)))
(easy-menu-define nil map nil dos-menu)
(define-key map [?\C-c ?\C-.] 'dos-mode-help)
(define-key map [?\C-c ?\C-/] 'dos-cmd-help) ;FIXME: Why not C-c C-? ?
(define-key map [?\C-c ?\C-a] 'dos-run-args)
(define-key map [?\C-c ?\C-c] 'dos-run)
(define-key map [?\C-c ?\C-t] 'dos-template)
(define-key map [?\C-c ?\C-v] 'dos-run)
(easy-menu-define nil map nil bat-menu)
(define-key map [?\C-c ?\C-/] 'bat-cmd-help) ;FIXME: Why not C-c C-? ?
(define-key map [?\C-c ?\C-a] 'bat-run-args)
(define-key map [?\C-c ?\C-c] 'bat-run)
(define-key map [?\C-c ?\C-t] 'bat-template)
(define-key map [?\C-c ?\C-v] 'bat-run)
map))
(defvar dos-mode-syntax-table
(defvar bat-mode-syntax-table
(let ((table (make-syntax-table)))
;; Beware: `w' should not be used for non-alphabetic chars.
(modify-syntax-entry ?~ "_" table)
@ -137,55 +134,48 @@
;; 4 User functions
(defun dos-cmd-help (cmd)
(defun bat-cmd-help (cmd)
"Show help for batch file command CMD."
(interactive "sHelp: ")
(if (string-equal cmd "net")
;; FIXME: liable to quoting nightmare. Use call-process?
(shell-command "net /?") (shell-command (concat "help " cmd))))
(defun dos-mode-help ()
"Show help page for `dos-mode'."
(interactive)
(describe-function 'dos-mode)
(switch-to-buffer "*Help*") (delete-other-windows) (message nil))
(defun dos-run ()
(defun bat-run ()
"Run a batch file."
(interactive)
;; FIXME: liable to quoting nightmare. Use call/start-process?
(save-buffer) (shell-command buffer-file-name))
(defun dos-run-args (args)
(defun bat-run-args (args)
"Run a batch file with ARGS."
(interactive "sArgs: ")
;; FIXME: Use `compile'?
(shell-command (concat buffer-file-name " " args)))
(defun dos-template ()
(defun bat-template ()
"Insert minimal batch file template."
(interactive)
(goto-char (point-min)) (insert "@echo off\nsetlocal\n\n"))
;;;###autoload
(add-to-list 'auto-mode-alist '("\\.\\(bat\\|cmd\\)\\'" . dos-mode))
(add-to-list 'auto-mode-alist '("\\.\\(bat\\|cmd\\)\\'" . bat-mode))
;; 5 Main function
;;;###autoload
(define-derived-mode dos-mode prog-mode "Dos"
(define-derived-mode bat-mode prog-mode "Bat"
"Major mode for editing DOS/Windows batch files.\n
The `dos-mode-help' command shows this page.\n
Start a new script from `dos-template'. Read help pages for Dos commands
with `dos-cmd-help'. Navigate between sections using `imenu'.
Run script using `dos-run' and `dos-run-args'.\n
\\{dos-mode-map}"
Start a new script from `bat-template'. Read help pages for DOS commands
with `bat-cmd-help'. Navigate between sections using `imenu'.
Run script using `bat-run' and `bat-run-args'.\n
\\{bat-mode-map}"
(setq-local comment-start "rem ")
(setq-local font-lock-defaults
'(dos-font-lock-keywords nil t)) ; case-insensitive keywords
'(bat-font-lock-keywords nil t)) ; case-insensitive keywords
(setq-local imenu-generic-expression '((nil "^:[^:].*" 0)))
(setq-local outline-regexp ":[^:]"))
(provide 'dos)
(provide 'bat-mode)
;;; dos.el ends here
;;; bat-mode.el ends here