mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-16 17:24:23 +00:00
* 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:
parent
bb41480a68
commit
7679edb1e0
3 changed files with 41 additions and 48 deletions
|
|
@ -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".
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
Loading…
Reference in a new issue