Patch 8.2.3255
Problem: ci" finds following string but ci< and others don't.
Solution: When not inside an object find the start. (Connor Lane Smit,
closes #8670)
Files: src/search.c, src/testdir/test_textobjects.vim, src/textobject.c
*** ../vim-8.2.3254/src/search.c 2021-07-27 22:00:39.749712387 +0200
--- src/search.c 2021-07-31 13:25:20.207976900 +0200
***************
*** 2145,2150 ****
--- 2145,2152 ----
else if (initc != '#' && initc != NUL)
{
find_mps_values(&initc, &findc, &backwards, TRUE);
+ if (dir)
+ backwards = (dir == FORWARD) ? FALSE : TRUE;
if (findc == NUL)
return NULL;
}
*** ../vim-8.2.3254/src/testdir/test_textobjects.vim 2020-10-15
21:23:25.163883137 +0200
--- src/testdir/test_textobjects.vim 2021-07-31 13:25:20.207976900 +0200
***************
*** 564,567 ****
--- 564,599 ----
close!
endfunc
+ " Test for i(, i<, etc. when cursor is in front of a block
+ func Test_textobj_find_paren_forward()
+ new
+
+ " i< and a> when cursor is in front of a block
+ call setline(1, '#include <foo.h>')
+ normal 0yi<
+ call assert_equal('foo.h', @")
+ normal 0ya>
+ call assert_equal('<foo.h>', @")
+
+ " 2i(, 3i( in front of a block enters second/third nested '('
+ call setline(1, 'foo (bar (baz (quux)))')
+ normal 0yi)
+ call assert_equal('bar (baz (quux))', @")
+ normal 02yi)
+ call assert_equal('baz (quux)', @")
+ normal 03yi)
+ call assert_equal('quux', @")
+
+ " 3i( in front of a block doesn't enter third but un-nested '('
+ call setline(1, 'foo (bar (baz) (quux))')
+ normal 03di)
+ call assert_equal('foo (bar (baz) (quux))', getline(1))
+ normal 02di)
+ call assert_equal('foo (bar () (quux))', getline(1))
+ normal 0di)
+ call assert_equal('foo ()', getline(1))
+
+ close!
+ endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.3254/src/textobject.c 2020-10-15 21:23:25.163883137 +0200
--- src/textobject.c 2021-07-31 13:25:20.207976900 +0200
***************
*** 1079,1090 ****
*/
save_cpo = p_cpo;
p_cpo = (char_u *)(vim_strchr(p_cpo, CPO_MATCHBSL) != NULL ? "%M" : "%");
! while (count-- > 0)
{
! if ((pos = findmatch(NULL, what)) == NULL)
! break;
! curwin->w_cursor = *pos;
! start_pos = *pos; // the findmatch for end_pos will overwrite *pos
}
p_cpo = save_cpo;
--- 1079,1103 ----
*/
save_cpo = p_cpo;
p_cpo = (char_u *)(vim_strchr(p_cpo, CPO_MATCHBSL) != NULL ? "%M" : "%");
! if ((pos = findmatch(NULL, what)) != NULL)
{
! while (count-- > 0)
! {
! if ((pos = findmatch(NULL, what)) == NULL)
! break;
! curwin->w_cursor = *pos;
! start_pos = *pos; // the findmatch for end_pos will overwrite *pos
! }
! }
! else
! {
! while (count-- > 0)
! {
! if ((pos = findmatchlimit(NULL, what, FM_FORWARD, 0)) == NULL)
! break;
! curwin->w_cursor = *pos;
! start_pos = *pos; // the findmatch for end_pos will overwrite *pos
! }
}
p_cpo = save_cpo;
*** ../vim-8.2.3254/src/version.c 2021-07-31 12:43:19.464837526 +0200
--- src/version.c 2021-07-31 13:28:55.303549433 +0200
***************
*** 757,758 ****
--- 757,760 ----
{ /* Add new patch number below this line */
+ /**/
+ 3255,
/**/
--
Facepalm statement #9: "Did you see, there is now even a hobbit book"
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/202107311132.16VBWGob2647559%40masaka.moolenaar.net.