summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-10-15 21:23:28 +0200
committerBram Moolenaar <Bram@vim.org>2020-10-15 21:23:28 +0200
commita604ccc959c3bff88d3d5bc3c965819fc326d239 (patch)
tree315a9264bfbe152d10f3796970d26d9941264897
parented234f24f3a6d697ba9b786d0bc74d4682bfdf47 (diff)
downloadvim-git-a604ccc959c3bff88d3d5bc3c965819fc326d239.tar.gz
patch 8.2.1850: "vat" does not select tags correctly over line breakv8.2.1850
Problem: "vat" does not select tags correctly over line break. Solution: Adjust the search pattern. (Aufar Gilbran, closes #7136)
-rw-r--r--src/testdir/test_textobjects.vim12
-rw-r--r--src/textobject.c4
-rw-r--r--src/version.c2
3 files changed, 16 insertions, 2 deletions
diff --git a/src/testdir/test_textobjects.vim b/src/testdir/test_textobjects.vim
index 54de3f89d..c691c8be6 100644
--- a/src/testdir/test_textobjects.vim
+++ b/src/testdir/test_textobjects.vim
@@ -169,6 +169,18 @@ func Test_string_html_objects()
normal! k$vaty
call assert_equal("<html>\n<title>welcome\n</html>", @")
+ " nested tag that has < in a different line from >
+ let t = "<div><div\n></div></div>"
+ $put =t
+ normal! k0vaty
+ call assert_equal("<div><div\n></div></div>", @")
+
+ " nested tag with attribute that has < in a different line from >
+ let t = "<div><div\nattr=\"attr\"\n></div></div>"
+ $put =t
+ normal! 2k0vaty
+ call assert_equal("<div><div\nattr=\"attr\"\n></div></div>", @")
+
set quoteescape&
enew!
endfunc
diff --git a/src/textobject.c b/src/textobject.c
index 23bdc9666..2d5d5ddfb 100644
--- a/src/textobject.c
+++ b/src/textobject.c
@@ -1347,7 +1347,7 @@ again:
curwin->w_cursor = old_pos;
goto theend;
}
- spat = alloc(len + 31);
+ spat = alloc(len + 39);
epat = alloc(len + 9);
if (spat == NULL || epat == NULL)
{
@@ -1356,7 +1356,7 @@ again:
curwin->w_cursor = old_pos;
goto theend;
}
- sprintf((char *)spat, "<%.*s\\>\\%%(\\s\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p);
+ sprintf((char *)spat, "<%.*s\\>\\%%(\\_s\\_[^>]\\{-}\\_[^/]>\\|\\_s\\?>\\)\\c", len, p);
sprintf((char *)epat, "</%.*s>\\c", len, p);
r = do_searchpair(spat, (char_u *)"", epat, FORWARD, NULL,
diff --git a/src/version.c b/src/version.c
index 8ea210a13..a2d8221ca 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1850,
+/**/
1849,
/**/
1848,