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

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

[nongnu] elpa/multiple-cursors 80bc6f6 135/434: Temporarily disable auto


From: ELPA Syncer
Subject: [nongnu] elpa/multiple-cursors 80bc6f6 135/434: Temporarily disable auto-complete-mode in multiple-cursors-mode
Date: Sat, 7 Aug 2021 09:20:11 -0400 (EDT)

branch: elpa/multiple-cursors
commit 80bc6f6d560d14bc18d054c6ae9f527734492027
Author: Magnar Sveen <magnars@gmail.com>
Commit: Magnar Sveen <magnars@gmail.com>

    Temporarily disable auto-complete-mode in multiple-cursors-mode
    
    Fixes #12
---
 multiple-cursors-core.el | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/multiple-cursors-core.el b/multiple-cursors-core.el
index 2e280ff..3adcaa6 100644
--- a/multiple-cursors-core.el
+++ b/multiple-cursors-core.el
@@ -329,16 +329,41 @@ So you can paste it in later with `yank-rectangle'."
     (unless (mc--all-equal entries)
       (setq killed-rectangle entries))))
 
+(defvar mc/unsupported-minor-modes '(auto-complete-mode)
+  "List of minor-modes that does not play well with multiple-cursors.
+They are temporarily disabled when multiple-cursors are active.")
+
+(defvar mc/temporarily-disabled-minor-modes nil
+  "The list of temporarily disabled minor-modes.")
+(make-variable-buffer-local 'mc/temporarily-disabled-minor-modes)
+
+(defun mc/temporarily-disable-minor-mode (mode)
+  (when (and (boundp mode) (eval mode))
+    (add-to-list 'mc/temporarily-disabled-minor-modes mode)
+    (funcall mode -1)))
+
+(defun mc/temporarily-disable-unsupported-minor-modes ()
+  (mapc 'mc/temporarily-disable-minor-mode mc/unsupported-minor-modes))
+
+(defun mc/enable-minor-mode (mode)
+  (funcall mode 1))
+
+(defun mc/enable-temporarily-disabled-minor-modes ()
+  (mapc 'mc/enable-minor-mode mc/temporarily-disabled-minor-modes)
+  (setq mc/temporarily-disabled-minor-modes nil))
+
 (define-minor-mode multiple-cursors-mode
   "Mode while multiple cursors are active."
   nil " mc" mc/keymap
   (if multiple-cursors-mode
       (progn
+        (mc/temporarily-disable-unsupported-minor-modes)
         (add-hook 'post-command-hook 'mc/execute-this-command-for-all-cursors 
t t)
         (run-hooks 'multiple-cursors-mode-enabled-hook))
     (remove-hook 'post-command-hook 'mc/execute-this-command-for-all-cursors t)
     (mc--maybe-set-killed-rectangle)
     (mc/remove-fake-cursors)
+    (mc/enable-temporarily-disabled-minor-modes)
     (run-hooks 'multiple-cursors-mode-disabled-hook)))
 
 (add-hook 'after-revert-hook #'(lambda () (multiple-cursors-mode 0)))



reply via email to

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