From e1eed259795c1f4271bd9487f34497fb9287994e Mon Sep 17 00:00:00 2001 From: Brian Leung <29217594+leungbk@users.noreply.github.com> Date: Tue, 12 Jul 2022 00:44:38 -0700 Subject: [PATCH] consult, imenu: Declare some navigation commands to be non-repeatable (#653) It does not make sense to repeat these commands via evil-repeat. (It also doesn't work) We typically use evil-repeat for commands that change the buffer contents. --- modes/consult/evil-collection-consult.el | 22 ++++++++++++---------- modes/imenu/evil-collection-imenu.el | 1 + 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/modes/consult/evil-collection-consult.el b/modes/consult/evil-collection-consult.el index 068d9f3..418a501 100644 --- a/modes/consult/evil-collection-consult.el +++ b/modes/consult/evil-collection-consult.el @@ -52,12 +52,14 @@ (defun evil-collection-consult-set-bindings () "Set the bindings." - (evil-set-command-property 'consult-outline :jump t) - (evil-set-command-property 'consult-mark :jump t) - (evil-set-command-property 'consult-global-mark :jump t) - (evil-set-command-property 'consult-imenu :jump t) - (evil-set-command-property 'consult-org-heading :jump t) - (evil-set-command-property 'consult-line :jump t)) + (dolist (cmd '(consult-outline + consult-mark + consult-global-mark + consult-imenu + consult-org-heading + consult-line)) + (evil-declare-not-repeat cmd) + (evil-set-command-property cmd :jump t))) (defun evil-collection-consult--evil-mark-ring () "Return alist of char & marker for evil markers in current buffer." @@ -78,14 +80,14 @@ as defined in `evil-collection-consult--evil-mark-ring'." (let* ((candidates) (current-buf (current-buffer))) (save-excursion - (dolist (marker (or markers (evil-collection-consult--evil-mark-ring))) - (let ((pos (marker-position (cdr marker))) - (buf (marker-buffer (cdr marker)))) + (pcase-dolist (`(,char . ,marker) (or markers (evil-collection-consult--evil-mark-ring))) + (let ((pos (marker-position marker)) + (buf (marker-buffer marker))) (when (and (eq buf current-buf) (consult--in-range-p pos)) (goto-char pos) (push (consult--location-candidate - (format "%s: %s" (char-to-string (car marker)) (consult--line-with-cursor (cdr marker))) (cdr marker) + (format "%s: %s" (char-to-string char) (consult--line-with-cursor marker)) marker (line-number-at-pos pos consult-line-numbers-widen)) candidates))))) (nreverse (delete-dups candidates)))) diff --git a/modes/imenu/evil-collection-imenu.el b/modes/imenu/evil-collection-imenu.el index 67cac36..ac3e905 100644 --- a/modes/imenu/evil-collection-imenu.el +++ b/modes/imenu/evil-collection-imenu.el @@ -32,6 +32,7 @@ ;;;###autoload (defun evil-collection-imenu-setup () "Set up Evil integration for `imenu'." + (evil-declare-not-repeat 'imenu) (evil-add-command-properties 'imenu :jump t)) (provide 'evil-collection-imenu)