aboutsummaryrefslogtreecommitdiff
path: root/evil-common.el
diff options
context:
space:
mode:
authorSanel Zukan <karijes@users.sourceforge.net>2019-12-01 12:30:01 +0100
committerEivind Fonn <evfonn@gmail.com>2019-12-02 15:26:01 +0100
commit6655dc5f762014192bca5ef55673cd781f76f679 (patch)
tree515d8b62a95af5cbfa8ced4530db77534fceddd0 /evil-common.el
parentfa54bb984d73f08422d22545e166fc95c5c70876 (diff)
Filter bad register names.
Some modes, like fzf.el, will put :fzf-windows as register name, causing Evil :register command to fail. This command, but also Vim, expects registers to be named with number or character. This commit fixes it by filtering out all register names not conforming to proper Vim-like naming schema.
Diffstat (limited to 'evil-common.el')
-rw-r--r--evil-common.el8
1 files changed, 6 insertions, 2 deletions
diff --git a/evil-common.el b/evil-common.el
index b0a1500..5596d92 100644
--- a/evil-common.el
+++ b/evil-common.el
@@ -28,6 +28,7 @@
(require 'evil-digraphs)
(require 'rect)
(require 'thingatpt)
+(require 'cl-lib)
;;; Code:
@@ -2143,12 +2144,15 @@ register instead of replacing its content."
(set-register register text))))
(defun evil-register-list ()
- "Returns an alist of all registers"
+ "Returns an alist of all registers, but only those named
+with number or character. Registers with symbol or string in names are ignored
+to keep Vim compatibility with register jumps."
(sort (append (mapcar #'(lambda (reg)
(cons reg (evil-get-register reg t)))
'(?\" ?* ?+ ?% ?# ?/ ?: ?. ?-
?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9))
- register-alist nil)
+ (cl-remove-if-not (lambda (reg) (number-or-marker-p (car reg))) register-alist)
+ nil)
#'(lambda (reg1 reg2) (< (car reg1) (car reg2)))))
(defsubst evil-kbd-macro-suppress-motion-error ()