From 51ffacb4d917464407bf88e7bb35da1903d69256 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 5 Jun 2020 00:12:26 -0400 Subject: [PATCH] Fix gzz not toggling evil-mc cursors in normal mode --- modules/config/default/+evil-bindings.el | 2 +- .../editor/multiple-cursors/autoload/evil-mc.el | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index 0c61aac43..c3c086730 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -89,7 +89,7 @@ :nv "q" #'evil-mc-undo-all-cursors :nv "t" #'+multiple-cursors/evil-mc-toggle-cursors :nv "u" #'evil-mc-undo-last-added-cursor - :nv "z" #'+multiple-cursors/evil-mc-make-cursor-here + :nv "z" #'+multiple-cursors/evil-mc-toggle-cursor-here :v "I" #'evil-mc-make-cursor-in-visual-selection-beg :v "A" #'evil-mc-make-cursor-in-visual-selection-end) diff --git a/modules/editor/multiple-cursors/autoload/evil-mc.el b/modules/editor/multiple-cursors/autoload/evil-mc.el index cab055caa..822c6d34d 100644 --- a/modules/editor/multiple-cursors/autoload/evil-mc.el +++ b/modules/editor/multiple-cursors/autoload/evil-mc.el @@ -13,8 +13,8 @@ (message "evil-mc paused") (message "evil-mc resumed"))) -;;;###autoload (autoload '+multiple-cursors/evil-mc-make-cursor-here "editor/multiple-cursors/autoload/evil-mc" nil t) -(evil-define-command +multiple-cursors/evil-mc-make-cursor-here () +;;;###autoload (autoload '+multiple-cursors/evil-mc-toggle-cursor-here "editor/multiple-cursors/autoload/evil-mc" nil t) +(evil-define-command +multiple-cursors/evil-mc-toggle-cursor-here () "Create a cursor at point. If in visual block or line mode, then create cursors on each line of the selection, on the column of the cursor. Otherwise pauses cursors." @@ -22,7 +22,18 @@ pauses cursors." :keep-visual nil :evil-mc t (interactive) - (cond ((memq evil-this-type '(block line)) + (cond ((and (evil-mc-has-cursors-p) + (evil-normal-state-p) + (let* ((pos (point)) + (cursor (cl-find-if (lambda (cursor) + (eq pos (evil-mc-get-cursor-start cursor))) + evil-mc-cursor-list))) + (when cursor + (evil-mc-delete-cursor cursor) + (setq evil-mc-cursor-list (delq cursor evil-mc-cursor-list)) + t)))) + + ((memq evil-this-type '(block line)) (let ((col (evil-column)) (line-at-pt (line-number-at-pos))) ;; Fix off-by-one error