Skip to content

Commit

Permalink
(set-auto-mode-0): Use `indirect-function'.
Browse files Browse the repository at this point in the history
(hack-one-local-variable): Don't reapply current major mode.
  • Loading branch information
Chong Yidong committed Mar 1, 2007
1 parent 520feb7 commit edf2762
Showing 1 changed file with 14 additions and 10 deletions.
24 changes: 14 additions & 10 deletions lisp/files.el
Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit edf2762

Please sign in to comment.