branch: elpa/multiple-cursors
commit 80bc6f6d560d14bc18d054c6ae9f527734492027
Author: Magnar Sveen <[email protected]>
Commit: Magnar Sveen <[email protected]>
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)))