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 ()
"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))))

View File

@ -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)