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.
This commit is contained in:
Brian Leung 2022-07-12 00:44:38 -07:00 committed by GitHub
parent 91e55503b4
commit e1eed25979
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 10 deletions

View File

@ -52,12 +52,14 @@
(defun evil-collection-consult-set-bindings () (defun evil-collection-consult-set-bindings ()
"Set the bindings." "Set the bindings."
(evil-set-command-property 'consult-outline :jump t) (dolist (cmd '(consult-outline
(evil-set-command-property 'consult-mark :jump t) consult-mark
(evil-set-command-property 'consult-global-mark :jump t) consult-global-mark
(evil-set-command-property 'consult-imenu :jump t) consult-imenu
(evil-set-command-property 'consult-org-heading :jump t) consult-org-heading
(evil-set-command-property 'consult-line :jump t)) consult-line))
(evil-declare-not-repeat cmd)
(evil-set-command-property cmd :jump t)))
(defun evil-collection-consult--evil-mark-ring () (defun evil-collection-consult--evil-mark-ring ()
"Return alist of char & marker for evil markers in current buffer." "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) (let* ((candidates)
(current-buf (current-buffer))) (current-buf (current-buffer)))
(save-excursion (save-excursion
(dolist (marker (or markers (evil-collection-consult--evil-mark-ring))) (pcase-dolist (`(,char . ,marker) (or markers (evil-collection-consult--evil-mark-ring)))
(let ((pos (marker-position (cdr marker))) (let ((pos (marker-position marker))
(buf (marker-buffer (cdr marker)))) (buf (marker-buffer marker)))
(when (and (eq buf current-buf) (when (and (eq buf current-buf)
(consult--in-range-p pos)) (consult--in-range-p pos))
(goto-char pos) (goto-char pos)
(push (consult--location-candidate (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)) (line-number-at-pos pos consult-line-numbers-widen))
candidates))))) candidates)))))
(nreverse (delete-dups candidates)))) (nreverse (delete-dups candidates))))

View File

@ -32,6 +32,7 @@
;;;###autoload ;;;###autoload
(defun evil-collection-imenu-setup () (defun evil-collection-imenu-setup ()
"Set up Evil integration for `imenu'." "Set up Evil integration for `imenu'."
(evil-declare-not-repeat 'imenu)
(evil-add-command-properties 'imenu :jump t)) (evil-add-command-properties 'imenu :jump t))
(provide 'evil-collection-imenu) (provide 'evil-collection-imenu)