]> git.eshelyaron.com Git - emacs.git/commitdiff
Replace fundamental-mode-hook with change-major-mode-after-body-hook.
authorChong Yidong <cyd@gnu.org>
Thu, 27 Oct 2011 03:01:40 +0000 (11:01 +0800)
committerChong Yidong <cyd@gnu.org>
Thu, 27 Oct 2011 03:01:40 +0000 (11:01 +0800)
* 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.

etc/NEWS
lisp/ChangeLog
lisp/emacs-lisp/derived.el
lisp/emacs-lisp/easy-mmode.el
lisp/simple.el
lisp/subr.el

index 6e60f2a65f99ec6f2c41f2c466a65faac241345a..9e407133e8ba48077d568660ceb2fcdee2fffe41 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1218,15 +1218,22 @@ syntactic rules.
 
 ** frame-local variables cannot be let-bound any more.
 
+** Major and minor mode changes
 +++
-** prog-mode is a new major-mode meant to be the parent of programming mode.
-The prog-mode-hook it defines can be used to enable features for
-programming modes.  For example:
-(add-hook 'prog-mode-hook 'flyspell-prog-mode)
-enables on the fly spell checking for comments and strings for
-programming modes.
+*** `prog-mode' is a new major mode from which programming modes
+should be derived.
 
-** define-minor-mode accepts a new keyword :variable.
+**** `prog-mode-hook' can be used to enable features for programming
+modes, e.g. (add-hook 'prog-mode-hook 'flyspell-prog-mode) to enable
+on-the-fly spell checking for comments and strings.
+
+*** New hook `change-major-mode-after-body-hook', run by
+`run-mode-hooks' just before any other mode hooks.
+
+*** Enabled globalized minor modes can be disabled in specific modes,
+by running (FOO-mode-hook 0) via a mode hook.
+
+*** `define-minor-mode' accepts a new keyword :variable.
 
 +++
 ** `delete-file' and `delete-directory' now accept optional arg TRASH.
index 9ba25dc89abcaa3230ce7ad85f0209e2d4c412b1..f4a0ceecf930309053303df555c54cf9f6dab0ec 100644 (file)
@@ -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)
index 81932f9940a5f23cf84d7cb709e89169e38050d3..55ea102ed2a7d4d23cf9a8cbfbcd7f9818e772d6 100644 (file)
@@ -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)
index 4b6f4d634ca780fcb6a6e1edef17ae4ac270ef97..bf9f2c9d6ed6740446c6bffa6787832807c5fffb 100644 (file)
@@ -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))
 
index 79de6aea3dde90e692e1799dea483a7ccc7b2eae..90d22c817b012984c4d3fa805882183b7d3a082c 100644 (file)
@@ -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.
 
index 7ac287d247382717a8f679773fc205779da0c396..f3cd4dabe20a02f31486666006866b33578ff9a6 100644 (file)
@@ -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)