From: Stefan Monnier Date: Wed, 28 Apr 2010 15:18:37 +0000 (-0400) Subject: Make it possible to locally disable a globally enabled mode. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~438^2~353 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=56924d996f1ed21fdcfedd80792a5fe718b3f831;p=emacs.git Make it possible to locally disable a globally enabled mode. * simple.el (fundamental-mode): Run fundamental-mode-hook. * emacs-lisp/derived.el (define-derived-mode): Use fundamental-mode rather than kill-all-local-variables so it runs fundamental-mode-hook. * emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Use fundamental-mode-hook to run MODE-enable-in-buffers earlier, so that subsequent hooks get a chance to disable it. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c35314af1b0..03deb82d0b1 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,13 @@ +2010-04-28 Stefan Monnier + + Make it possible to locally disable a globally enabled mode. + * simple.el (fundamental-mode): Run fundamental-mode-hook. + * emacs-lisp/derived.el (define-derived-mode): Use fundamental-mode + rather than kill-all-local-variables so it runs fundamental-mode-hook. + * emacs-lisp/easy-mmode.el (define-globalized-minor-mode): + Use fundamental-mode-hook to run MODE-enable-in-buffers earlier, so + that subsequent hooks get a chance to disable it. + 2010-04-27 Stefan Monnier * emacs-lisp/easy-mmode.el (define-globalized-minor-mode): diff --git a/lisp/emacs-lisp/derived.el b/lisp/emacs-lisp/derived.el index debef5535f5..d6f717ccda7 100644 --- a/lisp/emacs-lisp/derived.el +++ b/lisp/emacs-lisp/derived.el @@ -230,7 +230,7 @@ No problems result if this variable is not bound. ; Run the parent. (delay-mode-hooks - (,(or parent 'kill-all-local-variables)) + (,(or parent 'fundamental-mode)) ; Identify the child mode. (setq major-mode (quote ,child)) (setq mode-name ,name) diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el index d18aa230b75..bebff6adae8 100644 --- a/lisp/emacs-lisp/easy-mmode.el +++ b/lisp/emacs-lisp/easy-mmode.el @@ -338,9 +338,11 @@ See `%s' for more information on %s." (progn (add-hook 'after-change-major-mode-hook ',MODE-enable-in-buffers) + (add-hook 'fundamental-mode-hook ',MODE-enable-in-buffers) (add-hook 'find-file-hook ',MODE-check-buffers) (add-hook 'change-major-mode-hook ',MODE-cmhh)) (remove-hook 'after-change-major-mode-hook ',MODE-enable-in-buffers) + (remove-hook 'fundamental-mode-hook ',MODE-enable-in-buffers) (remove-hook 'find-file-hook ',MODE-check-buffers) (remove-hook 'change-major-mode-hook ',MODE-cmhh)) diff --git a/lisp/simple.el b/lisp/simple.el index f609755e823..cc70409ccd4 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -401,8 +401,7 @@ location." Other major modes are defined by comparison with this one." (interactive) (kill-all-local-variables) - (unless delay-mode-hooks - (run-hooks 'after-change-major-mode-hook))) + (run-mode-hooks 'fundamental-mode-hook)) ;; Special major modes to view specially formatted data rather than files.