diff options
| author | Brian Leung <29217594+leungbk@users.noreply.github.com> | 2021-12-23 09:52:18 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-23 17:52:18 +0000 |
| commit | 652d726ebd8cdfcac3e97a801721f33b5b832a0a (patch) | |
| tree | 61dd5712ef36d6d2f39add16ae9c7b2b679f7bdc | |
| parent | b5c038729958856b0b194a45daf988c42e97bc58 (diff) | |
Handle more registers and range types in ex grammar (#1556)
* evil-ex.el (evil-ex-grammar): Handle ] and [ registers
Co-authored-by: Brian Leung <leungbk@posteo.net>
Co-authored-by: Tom Dalziel <tom_dl@hotmail.com>
* evil-ex (evil-ex-grammar): Handle more range types
* evil-ex.el (evil-ex-grammar): Handle comma- or semicolon-separated
ranges that omit the first argument. The current line will be used as
the input.
Co-authored-by: Brian Leung <leungbk@posteo.net>
Co-authored-by: Nathaniel Nicandro <nathanielnicandro@gmail.com>
Co-authored-by: Tom Dalziel <tom_dl@hotmail.com>
| -rw-r--r-- | evil-ex.el | 7 | ||||
| -rw-r--r-- | evil-tests.el | 22 |
2 files changed, 27 insertions, 2 deletions
@@ -67,13 +67,14 @@ (range ("%" #'(evil-ex-full-range)) ("*" #'(evil-ex-last-visual-range)) + ((alt "," ";") line #'(evil-ex-range (evil-ex-current-line) $2)) (line ";" line #'(let ((tmp1 $1)) (save-excursion (goto-line tmp1) (evil-ex-range tmp1 $3)))) (line "," line #'(evil-ex-range $1 $3)) (line #'(evil-ex-range $1 nil)) - ("`" "[-a-zA-Z_<>']" ",`" "[-a-zA-Z_<>']" + ("`" marker-name ",`" marker-name #'(evil-ex-char-marker-range $2 $4))) (line (base (\? offset) search (\? offset) @@ -98,7 +99,7 @@ (offset (+ signed-number #'+)) (marker - ("'" "[-a-zA-Z_<>']" #'(evil-ex-marker $2))) + ("'" marker-name #'(evil-ex-marker $2))) (search forward backward @@ -115,6 +116,8 @@ #'(evil-ex-re-bwd $2)) ("\\?" "\\(?:[\\].\\|[^?]\\)+" "\\?" #'(evil-ex-re-bwd $2))) + (marker-name + "[]\\[-a-zA-Z_<>']") (next "\\\\/" #'(evil-ex-prev-search)) (prev diff --git a/evil-tests.el b/evil-tests.el index 8212efc..be03b05 100644 --- a/evil-tests.el +++ b/evil-tests.el @@ -7192,6 +7192,8 @@ if no previous selection") (evil-ex-line (evil-ex-marker "x") nil)))) (should (equal (evil-ex-parse "`x,`y" nil 'range) '(evil-ex-char-marker-range "x" "y"))) + (should (equal (evil-ex-parse "`[,`]" nil 'range) + '(evil-ex-char-marker-range "[" "]"))) (should (equal (evil-ex-parse "5,+" nil 'range) '(evil-ex-range (evil-ex-line (string-to-number "5") nil) @@ -7244,6 +7246,26 @@ if no previous selection") (evil-ex-last-line) (+ (evil-ex-signed-number (intern "-") (string-to-number "10"))))))) + (should (equal (evil-ex-parse "'[,']" nil 'range) + '(evil-ex-range + (evil-ex-line + (evil-ex-marker "[") + nil) + (evil-ex-line + (evil-ex-marker "]") + nil)))) + (should (equal (evil-ex-parse ",']" nil 'range) + '(evil-ex-range + (evil-ex-current-line) + (evil-ex-line + (evil-ex-marker "]") + nil)))) + (should (equal (evil-ex-parse ";']" nil 'range) + '(evil-ex-range + (evil-ex-current-line) + (evil-ex-line + (evil-ex-marker "]") + nil)))) (should (equal (evil-ex-parse ".+42" nil 'range) '(evil-ex-range (evil-ex-line |
