summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorChong Yidong <cyd@gnu.org>2011-10-27 11:01:40 +0800
committerChong Yidong <cyd@gnu.org>2011-10-27 11:01:40 +0800
commit15de15c66d96905aa21f1781861067eebd68b24b (patch)
treed85f77009ef850db328fa9db03ecf4a2a96e3ca8 /lisp
parent657d08d30a63536174fe9ec60b7f2cb8de541eb5 (diff)
downloademacs-15de15c66d96905aa21f1781861067eebd68b24b.tar.gz
emacs-15de15c66d96905aa21f1781861067eebd68b24b.tar.bz2
emacs-15de15c66d96905aa21f1781861067eebd68b24b.zip
Replace fundamental-mode-hook with change-major-mode-after-body-hook.
* lisp/simple.el (fundamental-mode): * lisp/emacs-lisp/derived.el (define-derived-mode): Revert 2010-04-28 change introducing fundamental-mode-hook. * lisp/subr.el (change-major-mode-after-body-hook): New hook. (run-mode-hooks): Run it. * lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Use change-major-mode-before-body-hook.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog12
-rw-r--r--lisp/emacs-lisp/derived.el2
-rw-r--r--lisp/emacs-lisp/easy-mmode.el6
-rw-r--r--lisp/simple.el3
-rw-r--r--lisp/subr.el5
5 files changed, 23 insertions, 5 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 9ba25dc89ab..f4a0ceecf93 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,15 @@
+2011-10-27 Chong Yidong <cyd@gnu.org>
+
+ * subr.el (change-major-mode-after-body-hook): New hook.
+ (run-mode-hooks): Run it.
+
+ * emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Use
+ change-major-mode-before-body-hook.
+
+ * simple.el (fundamental-mode):
+ * emacs-lisp/derived.el (define-derived-mode): Revert 2010-04-28
+ change introducing fundamental-mode-hook.
+
2011-10-26 Juanma Barranquero <lekktu@gmail.com>
* term/w32-win.el (w32-default-color-map): Declare obsolete. (Bug#9785)
diff --git a/lisp/emacs-lisp/derived.el b/lisp/emacs-lisp/derived.el
index 81932f9940a..55ea102ed2a 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 'fundamental-mode))
+ (,(or parent 'kill-all-local-variables))
; 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 4b6f4d634ca..bf9f2c9d6ed 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -368,11 +368,13 @@ 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 'change-major-mode-after-body-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 'change-major-mode-after-body-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 79de6aea3dd..90d22c817b0 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -349,7 +349,8 @@ location."
Other major modes are defined by comparison with this one."
(interactive)
(kill-all-local-variables)
- (run-mode-hooks 'fundamental-mode-hook))
+ (unless delay-mode-hooks
+ (run-hooks 'after-change-major-mode-hook)))
;; Special major modes to view specially formatted data rather than files.
diff --git a/lisp/subr.el b/lisp/subr.el
index 7ac287d2473..f3cd4dabe20 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1530,6 +1530,9 @@ if it is empty or a duplicate."
(make-variable-buffer-local 'delayed-mode-hooks)
(put 'delay-mode-hooks 'permanent-local t)
+(defvar change-major-mode-after-body-hook nil
+ "Normal hook run in major mode functions, before the mode hooks.")
+
(defvar after-change-major-mode-hook nil
"Normal hook run at the very end of major mode functions.")
@@ -1546,7 +1549,7 @@ FOO-mode-hook."
;; Normal case, just run the hook as before plus any delayed hooks.
(setq hooks (nconc (nreverse delayed-mode-hooks) hooks))
(setq delayed-mode-hooks nil)
- (apply 'run-hooks hooks)
+ (apply 'run-hooks (cons 'change-major-mode-after-body-hook hooks))
(run-hooks 'after-change-major-mode-hook)))
(defmacro delay-mode-hooks (&rest body)