emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master de643c9 409/433: Mode transition hooks


From: Dmitry Gutov
Subject: [elpa] master de643c9 409/433: Mode transition hooks
Date: Thu, 15 Mar 2018 19:44:45 -0400 (EDT)

branch: master
commit de643c95339fb08b560b367db501dee8ef30be3f
Author: Adam Niederer <address@hidden>
Commit: Adam Niederer <address@hidden>

    Mode transition hooks
    
    Allows the user to set hooks to run when submodes are entered and left. Also
    allows the user to specify hooks for specific mode-to-mode transitions.
    
    An example below:
    
    (setq mmm-js-mode-exit-hook (lambda () (message "Run when leaving js 
mode")))
    (setq mmm-js-mode-enter-hook (lambda () (message "Run when entering js 
mode")))
    (setq mmm-vue-mode-js-mode-hook (lambda () (message "Run when moving >From 
vue to js")))
    (setq mmm-js-mode-vue-mode-hook (lambda () (message "Run when moving >From 
js to vue")))
---
 mmm-region.el | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/mmm-region.el b/mmm-region.el
index 547b351..6567b31 100644
--- a/mmm-region.el
+++ b/mmm-region.el
@@ -545,10 +545,14 @@ different keymaps, syntax tables, local variables, etc. 
for submodes."
   (when (mmm-update-current-submode)
     (mmm-save-changed-local-variables mmm-previous-submode
                                       mmm-previous-overlay)
-    (let ((mode (or mmm-current-submode mmm-primary-mode)))
-      (mmm-update-mode-info mode)
-      (mmm-set-local-variables mode mmm-current-overlay)
-      (mmm-enable-font-lock mode))
+    (let ((new-mode (or mmm-current-submode mmm-primary-mode))
+          (old-mode (or mmm-previous-submode mmm-primary-mode)))
+      (mmm-run-constructed-hook old-mode new-mode)
+      (mmm-run-constructed-hook old-mode "exit")
+      (mmm-run-constructed-hook new-mode "enter")
+      (mmm-update-mode-info new-mode)
+      (mmm-set-local-variables new-mode mmm-current-overlay)
+      (mmm-enable-font-lock new-mode))
     (mmm-set-mode-line)
     (dolist (func (if mmm-current-overlay
                      (overlay-get mmm-current-overlay 'entry-hook)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]