1
0
forked from aniani/vim

patch 8.2.0999: moving to next sentence gets stuck on quote

Problem:    Moving to next sentence gets stuck on quote.
Solution:   When moving to the next sentence doesn't result in moving, advance
            a character and try again. (closes #6291)
This commit is contained in:
Bram Moolenaar 2020-06-18 15:33:25 +02:00
parent 3d9207ad2f
commit 2f03e5a0a9
3 changed files with 28 additions and 0 deletions

View File

@ -311,6 +311,17 @@ func Test_sentence_with_cursor_on_delimiter()
normal! 17|yas
call assert_equal("A '([sentence.])' ", @")
" don't get stuck on a quote at the start of a sentence
%delete _
call setline(1, ['A sentence.', '"A sentence"?', 'A sentence!'])
normal gg))
call assert_equal(3, getcurpos()[1])
%delete _
call setline(1, ['A sentence.', "'A sentence'?", 'A sentence!'])
normal gg))
call assert_equal(3, getcurpos()[1])
%delete _
endfunc

View File

@ -26,6 +26,7 @@ static int skip_chars(int, int);
findsent(int dir, long count)
{
pos_T pos, tpos;
pos_T prev_pos;
int c;
int (*func)(pos_T *);
int startlnum;
@ -41,6 +42,8 @@ findsent(int dir, long count)
while (count--)
{
prev_pos = pos;
/*
* if on an empty line, skip up to a non-empty line
*/
@ -133,6 +136,18 @@ found:
while (!noskip && ((c = gchar_pos(&pos)) == ' ' || c == '\t'))
if (incl(&pos) == -1)
break;
if (EQUAL_POS(prev_pos, pos))
{
// didn't actually move, advance one character and try again
if ((*func)(&pos) == -1)
{
if (count)
return FAIL;
break;
}
++count;
}
}
setpcmark();

View File

@ -754,6 +754,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
999,
/**/
998,
/**/