mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-23 07:19:15 +00:00
(sh-mode): Don't move point.
(sh-set-shell): New args NO-QUERY-FLAG and INSERT-FLAG. Pass them to executable-set-magic. Really set font-lock-syntax-table. Slight cleanups.
This commit is contained in:
parent
cdb4948056
commit
616db04b18
@ -639,13 +639,14 @@ with your script for an edit-interpret-debug cycle."
|
||||
(current-column)))))
|
||||
skeleton-filter 'sh-feature
|
||||
skeleton-newline-indent-rigidly t)
|
||||
;; parse or insert magic number for exec() and set all variables depending
|
||||
;; on the shell thus determined
|
||||
(goto-char (point-min))
|
||||
(sh-set-shell
|
||||
(if (looking-at "#![\t ]*\\([^\t\n ]+\\)")
|
||||
(match-string 1)
|
||||
sh-shell-file))
|
||||
(save-excursion
|
||||
;; parse or insert magic number for exec() and set all variables depending
|
||||
;; on the shell thus determined
|
||||
(goto-char (point-min))
|
||||
(sh-set-shell
|
||||
(if (looking-at "#![\t ]*\\([^\t\n ]+\\)")
|
||||
(match-string 1)
|
||||
sh-shell-file)))
|
||||
(run-hooks 'sh-mode-hook))
|
||||
;;;###autoload
|
||||
(defalias 'shell-script-mode 'sh-mode)
|
||||
@ -692,29 +693,28 @@ This adds rules for comments and assignments."
|
||||
(sh-font-lock-keywords-1 t))
|
||||
|
||||
|
||||
(defun sh-set-shell (shell)
|
||||
(defun sh-set-shell (shell &optional no-query-flag insert-flag)
|
||||
"Set this buffer's shell to SHELL (a string).
|
||||
Makes this script executable via `executable-set-magic'.
|
||||
Calls the value of `sh-set-shell-hook' if set."
|
||||
(interactive (list (completing-read "Name or path of shell: "
|
||||
interpreter-mode-alist
|
||||
(lambda (x) (eq (cdr x) 'sh-mode)))))
|
||||
(if (eq this-command 'sh-set-shell)
|
||||
;; prevent querying
|
||||
(setq this-command 'executable-set-magic))
|
||||
(lambda (x) (eq (cdr x) 'sh-mode)))
|
||||
(eq executable-query 'function)
|
||||
t))
|
||||
(setq sh-shell (intern (file-name-nondirectory shell))
|
||||
sh-shell (or (cdr (assq sh-shell sh-alias-alist))
|
||||
sh-shell)
|
||||
sh-shell-file (executable-set-magic shell (sh-feature sh-shell-arg))
|
||||
sh-shell))
|
||||
(setq sh-shell-file (executable-set-magic shell (sh-feature sh-shell-arg)))
|
||||
(setq require-final-newline (sh-feature sh-require-final-newline)
|
||||
;;; local-abbrev-table (sh-feature sh-abbrevs)
|
||||
require-final-newline (sh-feature sh-require-final-newline)
|
||||
font-lock-keywords nil ; force resetting
|
||||
font-lock-syntax-table nil
|
||||
comment-start-skip (concat (sh-feature sh-comment-prefix) "#+[\t ]*")
|
||||
mode-line-process (format "[%s]" sh-shell)
|
||||
process-environment (default-value 'process-environment)
|
||||
shell (sh-feature sh-variables))
|
||||
(set-syntax-table (sh-feature sh-mode-syntax-table))
|
||||
(setq font-lock-syntax-table)
|
||||
(save-excursion
|
||||
(while (search-forward "=" nil t)
|
||||
(sh-assignment 0)))
|
||||
|
Loading…
Reference in New Issue
Block a user