diff options
| author | Stefan Monnier | 2010-04-28 11:18:37 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2010-04-28 11:18:37 -0400 |
| commit | 56924d996f1ed21fdcfedd80792a5fe718b3f831 (patch) | |
| tree | ff1484bbd413ba9faffd9a9b20e6f6a1a7b16e84 | |
| parent | 106c6f743273e9119c0a38f79e7aaf3df3596c51 (diff) | |
| download | emacs-56924d996f1ed21fdcfedd80792a5fe718b3f831.tar.gz emacs-56924d996f1ed21fdcfedd80792a5fe718b3f831.zip | |
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.
| -rw-r--r-- | lisp/ChangeLog | 10 | ||||
| -rw-r--r-- | lisp/emacs-lisp/derived.el | 2 | ||||
| -rw-r--r-- | lisp/emacs-lisp/easy-mmode.el | 2 | ||||
| -rw-r--r-- | lisp/simple.el | 3 |
4 files changed, 14 insertions, 3 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c35314af1b0..03deb82d0b1 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,13 @@ | |||
| 1 | 2010-04-28 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | Make it possible to locally disable a globally enabled mode. | ||
| 4 | * simple.el (fundamental-mode): Run fundamental-mode-hook. | ||
| 5 | * emacs-lisp/derived.el (define-derived-mode): Use fundamental-mode | ||
| 6 | rather than kill-all-local-variables so it runs fundamental-mode-hook. | ||
| 7 | * emacs-lisp/easy-mmode.el (define-globalized-minor-mode): | ||
| 8 | Use fundamental-mode-hook to run MODE-enable-in-buffers earlier, so | ||
| 9 | that subsequent hooks get a chance to disable it. | ||
| 10 | |||
| 1 | 2010-04-27 Stefan Monnier <monnier@iro.umontreal.ca> | 11 | 2010-04-27 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 12 | ||
| 3 | * emacs-lisp/easy-mmode.el (define-globalized-minor-mode): | 13 | * 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. | |||
| 230 | ; Run the parent. | 230 | ; Run the parent. |
| 231 | (delay-mode-hooks | 231 | (delay-mode-hooks |
| 232 | 232 | ||
| 233 | (,(or parent 'kill-all-local-variables)) | 233 | (,(or parent 'fundamental-mode)) |
| 234 | ; Identify the child mode. | 234 | ; Identify the child mode. |
| 235 | (setq major-mode (quote ,child)) | 235 | (setq major-mode (quote ,child)) |
| 236 | (setq mode-name ,name) | 236 | (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." | |||
| 338 | (progn | 338 | (progn |
| 339 | (add-hook 'after-change-major-mode-hook | 339 | (add-hook 'after-change-major-mode-hook |
| 340 | ',MODE-enable-in-buffers) | 340 | ',MODE-enable-in-buffers) |
| 341 | (add-hook 'fundamental-mode-hook ',MODE-enable-in-buffers) | ||
| 341 | (add-hook 'find-file-hook ',MODE-check-buffers) | 342 | (add-hook 'find-file-hook ',MODE-check-buffers) |
| 342 | (add-hook 'change-major-mode-hook ',MODE-cmhh)) | 343 | (add-hook 'change-major-mode-hook ',MODE-cmhh)) |
| 343 | (remove-hook 'after-change-major-mode-hook ',MODE-enable-in-buffers) | 344 | (remove-hook 'after-change-major-mode-hook ',MODE-enable-in-buffers) |
| 345 | (remove-hook 'fundamental-mode-hook ',MODE-enable-in-buffers) | ||
| 344 | (remove-hook 'find-file-hook ',MODE-check-buffers) | 346 | (remove-hook 'find-file-hook ',MODE-check-buffers) |
| 345 | (remove-hook 'change-major-mode-hook ',MODE-cmhh)) | 347 | (remove-hook 'change-major-mode-hook ',MODE-cmhh)) |
| 346 | 348 | ||
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." | |||
| 401 | Other major modes are defined by comparison with this one." | 401 | Other major modes are defined by comparison with this one." |
| 402 | (interactive) | 402 | (interactive) |
| 403 | (kill-all-local-variables) | 403 | (kill-all-local-variables) |
| 404 | (unless delay-mode-hooks | 404 | (run-mode-hooks 'fundamental-mode-hook)) |
| 405 | (run-hooks 'after-change-major-mode-hook))) | ||
| 406 | 405 | ||
| 407 | ;; Special major modes to view specially formatted data rather than files. | 406 | ;; Special major modes to view specially formatted data rather than files. |
| 408 | 407 | ||