changeset 14554:e7f92d1a3fcd v8.1.0290

patch 8.1.0290: "cit" on an empty HTML tag changes the whole tag commit https://github.com/vim/vim/commit/b476cb7d8d1a8c02409f110dea8b166aa9334e18 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Aug 16 21:37:50 2018 +0200 patch 8.1.0290: "cit" on an empty HTML tag changes the whole tag Problem: "cit" on an empty HTML tag changes the whole tag. Solution: Only adjust the area in Visual mode. (Andy Massimino, closes #3332)
author Christian Brabandt <cb@256bit.org>
date Thu, 16 Aug 2018 21:45:05 +0200
parents 8e7e7fa5b79b
children b8dad604cb54
files src/search.c src/testdir/test_textobjects.vim src/version.c
diffstat 3 files changed, 23 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/search.c
+++ b/src/search.c
@@ -4106,9 +4106,10 @@ again:
 	    }
 	curwin->w_cursor = end_pos;
 
-	/* If we now have the same text as before reset "do_include" and try
-	 * again. */
-	if (EQUAL_POS(start_pos, old_start) && EQUAL_POS(end_pos, old_end))
+	// If we are in Visual mode and now have the same text as before set
+	// "do_include" and try again.
+	if (VIsual_active && EQUAL_POS(start_pos, old_start)
+						&& EQUAL_POS(end_pos, old_end))
 	{
 	    do_include = TRUE;
 	    curwin->w_cursor = old_start;
--- a/src/testdir/test_textobjects.vim
+++ b/src/testdir/test_textobjects.vim
@@ -121,6 +121,23 @@ func Test_string_html_objects()
   enew!
 endfunc
 
+func Test_empty_html_tag()
+  new
+  call setline(1, '<div></div>')
+  normal 0citxxx
+  call assert_equal('<div>xxx</div>', getline(1))
+
+  call setline(1, '<div></div>')
+  normal 0f<cityyy
+  call assert_equal('<div>yyy</div>', getline(1))
+
+  call setline(1, '<div></div>')
+  normal 0f<vitsaaa
+  call assert_equal('aaa', getline(1))
+
+  bwipe!
+endfunc
+
 " Tests for match() and matchstr()
 func Test_match()
   call assert_equal("b", matchstr("abcd", ".", 0, 2))
--- a/src/version.c
+++ b/src/version.c
@@ -795,6 +795,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    290,
+/**/
     289,
 /**/
     288,