mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-06 11:50:51 -08:00
(set-auto-mode-0): Use `indirect-function'.
(hack-one-local-variable): Don't reapply current major mode.
This commit is contained in:
parent
d42a3826b4
commit
0c7c413c04
1 changed files with 14 additions and 10 deletions
|
|
@ -2285,14 +2285,12 @@ only set the major mode, if that would change it."
|
|||
If optional arg KEEP-MODE-IF-SAME is non-nil, MODE is chased of
|
||||
any aliases and compared to current major mode. If they are the
|
||||
same, do nothing and return nil."
|
||||
(when keep-mode-if-same
|
||||
(while (symbolp (symbol-function mode))
|
||||
(setq mode (symbol-function mode)))
|
||||
(if (eq mode major-mode)
|
||||
(setq mode nil)))
|
||||
(when mode
|
||||
(funcall mode)
|
||||
mode))
|
||||
(unless (and keep-mode-if-same
|
||||
(eq (indirect-function mode)
|
||||
(indirect-function major-mode)))
|
||||
(when mode
|
||||
(funcall mode)
|
||||
mode)))
|
||||
|
||||
(defun set-auto-mode-1 ()
|
||||
"Find the -*- spec in the buffer.
|
||||
|
|
@ -2811,9 +2809,15 @@ It is dangerous if either of these conditions are met:
|
|||
ok)))))))
|
||||
|
||||
(defun hack-one-local-variable (var val)
|
||||
"Set local variable VAR with value VAL."
|
||||
"Set local variable VAR with value VAL.
|
||||
If VAR is `mode', call `VAL-mode' as a function unless it's
|
||||
already the major mode."
|
||||
(cond ((eq var 'mode)
|
||||
(funcall (intern (concat (downcase (symbol-name val)) "-mode"))))
|
||||
(let ((mode (intern (concat (downcase (symbol-name val))
|
||||
"-mode"))))
|
||||
(unless (eq (indirect-function mode)
|
||||
(indirect-function major-mode))
|
||||
(funcall mode))))
|
||||
((eq var 'eval)
|
||||
(save-excursion (eval val)))
|
||||
(t
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue