changeset 15462:2c44001e7e13 v8.1.0739

patch 8.1.0739: text objects in not sufficiently tested commit https://github.com/vim/vim/commit/81b1ba4be57b4bfd7e53a6709b4f98758612ef5f Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jan 13 16:12:40 2019 +0100 patch 8.1.0739: text objects in not sufficiently tested Problem: Text objects in not sufficiently tested. Solution: Add a few more test cases. (Dominique Pelle, closes https://github.com/vim/vim/issues/3795)
author Bram Moolenaar <Bram@vim.org>
date Sun, 13 Jan 2019 16:15:07 +0100
parents 7bfa59464de1
children 5f6adbb78253
files src/testdir/test_visual.vim src/version.c
diffstat 2 files changed, 89 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_visual.vim
+++ b/src/testdir/test_visual.vim
@@ -274,9 +274,46 @@ func Test_virtual_replace2()
   set bs&vim
 endfunc
 
+func Test_Visual_word_textobject()
+  new
+  call setline(1, ['First sentence. Second sentence.'])
+
+  " When start and end of visual area are identical, 'aw' or 'iw' select
+  " the whole word.
+  norm! 1go2fcvawy
+  call assert_equal('Second ', @")
+  norm! 1go2fcviwy
+  call assert_equal('Second', @")
+
+  " When start and end of visual area are not identical, 'aw' or 'iw'
+  " extend the word in direction of the end of the visual area.
+  norm! 1go2fcvlawy
+  call assert_equal('cond ', @")
+  norm! gv2awy
+  call assert_equal('cond sentence.', @")
+
+  norm! 1go2fcvliwy
+  call assert_equal('cond', @")
+  norm! gv2iwy
+  call assert_equal('cond sentence', @")
+
+  " Extend visual area in opposite direction.
+  norm! 1go2fcvhawy
+  call assert_equal(' Sec', @")
+  norm! gv2awy
+  call assert_equal(' sentence. Sec', @")
+
+  norm! 1go2fcvhiwy
+  call assert_equal('Sec', @")
+  norm! gv2iwy
+  call assert_equal('. Sec', @")
+
+  bwipe!
+endfunc
+
 func Test_Visual_sentence_textobject()
   new
-  call setline(1, ['First sentence. Second sentence. Third', 'sentence. Fouth sentence'])
+  call setline(1, ['First sentence. Second sentence. Third', 'sentence. Fourth sentence'])
 
   " When start and end of visual area are identical, 'as' or 'is' select
   " the whole sentence.
@@ -314,3 +351,52 @@ func Test_Visual_sentence_textobject()
 
   bwipe!
 endfunc
+
+func Test_Visual_paragraph_textobject()
+  new
+  call setline(1, ['First line.',
+  \                '',
+  \                'Second line.',
+  \                'Third line.',
+  \                'Fourth line.',
+  \                'Fifth line.',
+  \                '',
+  \                'Sixth line.'])
+
+  " When start and end of visual area are identical, 'ap' or 'ip' select
+  " the whole paragraph.
+  norm! 4ggvapy
+  call assert_equal("Second line.\nThird line.\nFourth line.\nFifth line.\n\n", @")
+  norm! 4ggvipy
+  call assert_equal("Second line.\nThird line.\nFourth line.\nFifth line.\n", @")
+
+  " When start and end of visual area are not identical, 'ap' or 'ip'
+  " extend the sentence in direction of the end of the visual area.
+  " FIXME: actually, it is not sufficient to have different start and
+  " end of visual selection, the start line and end line have to differ,
+  " which is not consistent with the documentation.
+  norm! 4ggVjapy
+  call assert_equal("Third line.\nFourth line.\nFifth line.\n\n", @")
+  norm! gvapy
+  call assert_equal("Third line.\nFourth line.\nFifth line.\n\nSixth line.\n", @")
+  norm! 4ggVjipy
+  call assert_equal("Third line.\nFourth line.\nFifth line.\n", @")
+  norm! gvipy
+  call assert_equal("Third line.\nFourth line.\nFifth line.\n\n", @")
+  norm! gvipy
+  call assert_equal("Third line.\nFourth line.\nFifth line.\n\nSixth line.\n", @")
+
+  " Extend visual area in opposite direction.
+  norm! 5ggVkapy
+  call assert_equal("\nSecond line.\nThird line.\nFourth line.\n", @")
+  norm! gvapy
+  call assert_equal("First line.\n\nSecond line.\nThird line.\nFourth line.\n", @")
+  norm! 5ggVkipy
+  call assert_equal("Second line.\nThird line.\nFourth line.\n", @")
+  norma gvipy
+  call assert_equal("\nSecond line.\nThird line.\nFourth line.\n", @")
+  norm! gvipy
+  call assert_equal("First line.\n\nSecond line.\nThird line.\nFourth line.\n", @")
+
+  bwipe!
+endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -796,6 +796,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    739,
+/**/
     738,
 /**/
     737,