File tree Expand file tree Collapse file tree 6 files changed +241
-153
lines changed
Expand file tree Collapse file tree 6 files changed +241
-153
lines changed Original file line number Diff line number Diff line change 721721 (fall-within-line (current-point))))))
722722
723723(define-text-object-command vi-a-word (count ) (" p" )
724+ (:expand-selection t )
724725 (a-range-of ' word-object (current-state) count ))
725726
726727(define-text-object-command vi-inner-word (count ) (" p" )
728+ (:expand-selection t )
727729 (inner-range-of ' word-object (current-state) count ))
728730
729731(define-text-object-command vi-a-double-quote () ()
732+ ()
730733 (a-range-of ' double-quoted-object (current-state) 1 ))
731734
732735(define-text-object-command vi-inner-double-quote () ()
736+ ()
733737 (inner-range-of ' double-quoted-object (current-state) 1 ))
734738
735739(define-text-object-command vi-a-paren (count ) (" p" )
740+ (:expand-selection t )
736741 (a-range-of ' paren-object (current-state) count ))
737742
738743(define-text-object-command vi-inner-paren (count ) (" p" )
744+ (:expand-selection t )
739745 (inner-range-of ' paren-object (current-state) count ))
740746
741747(define-command vi-normal () ()
Original file line number Diff line number Diff line change 251251 :keep-visual , keep-visual
252252 :restore-point , restore-point)))
253253
254- (defun call-define-text-object-command (fn)
254+ (defun call-define-text-object-command (fn &key expand-selection )
255255 (flet ((expand-visual-range (range)
256256 (let ((p1 (range-beginning range))
257257 (p2 (range-end range)))
271271 (return-from call-define-text-object-command)))))
272272 (let ((range (funcall fn)))
273273 (when (visual-p)
274- (expand-visual-range range))
274+ (if expand-selection
275+ (expand-visual-range range)
276+ (setf (visual-range)
277+ (list (range-beginning range) (range-end range)))))
275278 range))))
276279
277- (defmacro define-text-object-command (name arg-list arg-descriptors
280+ (defmacro define-text-object-command (name arg-list arg-descriptors ( &key expand-selection)
278281 &body body)
279282 ` (define-command (, name (:advice-classes vi-text-object)) , arg-list
280283 (, (parse-arg-descriptors arg-descriptors))
281- (call-define-text-object-command (lambda () ,@ body))))
284+ (call-define-text-object-command
285+ (lambda () ,@ body)
286+ :expand-selection , expand-selection)))
Original file line number Diff line number Diff line change 4747 (:file " operator" )
4848 (:file " visual" )
4949 (:file " commands" )
50+ (:file " text-objects" )
5051 (:file " options" )))
5152 (:file " utils"
5253 :pathname " tests/utils" ))
Original file line number Diff line number Diff line change 1+ (defpackage :lem-vi-mode/tests/text-objects
2+ (:use :cl
3+ :lem
4+ :rove
5+ :lem-vi-mode/tests/utils )
6+ (:import-from :lem-fake-interface
7+ :with-fake-interface )
8+ (:import-from :named-readtables
9+ :in-readtable ))
10+ (in-package :lem-vi-mode/tests/text-objects )
11+
12+ (in-readtable :interpol-syntax )
13+
14+ (deftest double-quoted
15+ (with-fake-interface ()
16+ (with-vi-buffer (" [ ]\" foo\" \" bar\" " )
17+ (cmd " va\" " )
18+ (ok (buf= " <\" foo\" [ ]>\" bar\" " )))
19+ (with-vi-buffer (" [\" ]foo\" \" bar\" " )
20+ (cmd " va\" " )
21+ (ok (buf= " <\" foo\" [ ]>\" bar\" " )))
22+ (with-vi-buffer (" \" f[o]o\" \" bar\" " )
23+ (cmd " va\" " )
24+ (ok (buf= " <\" foo\" [ ]>\" bar\" " )))
25+ (with-vi-buffer (" \" foo[\" ] \" bar\" " )
26+ (cmd " va\" " )
27+ (ok (buf= " <\" foo\" [ ]>\" bar\" " )))
28+ (with-vi-buffer (" \" foo\" [ ]\" bar\" " )
29+ (cmd " va\" " )
30+ ; ; NOTE: This behavior is not same as Vim
31+ (ok (buf= " \" foo\" < \" bar[\" ]>" )))
32+ (with-vi-buffer (" \" foo\" \" bar[\" ]" )
33+ (cmd " va\" " )
34+ (ok (buf= " \" foo\" < \" bar[\" ]>" )))))
Original file line number Diff line number Diff line change 3636(deftest text-objects
3737 (with-fake-interface ()
3838 (testing " vaw"
39+ (with-vi-buffer (#?" [f]oo\n " )
40+ (cmd " vaw" )
41+ (ok (buf= #?" <fo[o]>\n " )))
3942 (with-vi-buffer (#?" [ ]foo bar baz \n " )
4043 (cmd " vaw" )
4144 (ok (buf= #?" < fo[o]> bar baz \n " )))
You can’t perform that action at this time.
0 commit comments