changeset 22604:3ac0ef0578ef v8.2.1850

patch 8.2.1850: "vat" does not select tags correctly over line break Commit: https://github.com/vim/vim/commit/a604ccc959c3bff88d3d5bc3c965819fc326d239 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Oct 15 21:23:28 2020 +0200 patch 8.2.1850: "vat" does not select tags correctly over line break Problem: "vat" does not select tags correctly over line break. Solution: Adjust the search pattern. (Aufar Gilbran, closes https://github.com/vim/vim/issues/7136)
author Bram Moolenaar <Bram@vim.org>
date Thu, 15 Oct 2020 21:30:04 +0200
parents d2c45a169cf2
children 79ac2ddec7e0
files src/testdir/test_textobjects.vim src/textobject.c src/version.c
diffstat 3 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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,
--- 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,