Merged in changes from CVS trunk.
[bpt/emacs.git] / lisp / subr.el
index 8a1b0df..5a7d924 100644 (file)
@@ -1950,12 +1950,13 @@ in BODY."
 (put 'delay-mode-hooks 'permanent-local t)
 
 (defvar after-change-major-mode-hook nil
-  "Mode independent hook run at the end of major mode functions.
-This is run just before the mode dependent hooks.")
+  "Normal hook run at the very end of major mode functions.")
 
 (defun run-mode-hooks (&rest hooks)
   "Run mode hooks `delayed-mode-hooks' and HOOKS, or delay HOOKS.
 Execution is delayed if `delay-mode-hooks' is non-nil.
+If `delay-mode-hooks' is nil, run `after-change-major-mode-hook'
+after running the mode hooks.
 Major mode functions should use this."
   (if delay-mode-hooks
       ;; Delaying case.
@@ -1964,8 +1965,8 @@ Major mode functions should use this."
     ;; 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)
-    (run-hooks 'after-change-major-mode-hook)
-    (apply 'run-hooks hooks)))
+    (apply 'run-hooks hooks)
+    (run-hooks 'after-change-major-mode-hook)))
 
 (defmacro delay-mode-hooks (&rest body)
   "Execute BODY, but delay any `run-mode-hooks'.