summaryrefslogtreecommitdiff
path: root/src/textobject.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-06-18 15:33:25 +0200
committerBram Moolenaar <Bram@vim.org>2020-06-18 15:33:25 +0200
commit2f03e5a0a9cfaabb01c57dd3348a05e86c26623c (patch)
treea56206b01f450b99a8cf372693651f47f622c22f /src/textobject.c
parent3d9207ad2fc98b4f92f77b5a3d52a3a4d25b9561 (diff)
downloadvim-git-2f03e5a0a9cfaabb01c57dd3348a05e86c26623c.tar.gz
patch 8.2.0999: moving to next sentence gets stuck on quotev8.2.0999
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)
Diffstat (limited to 'src/textobject.c')
-rw-r--r--src/textobject.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/textobject.c b/src/textobject.c
index e876d528d..23bdc9666 100644
--- a/src/textobject.c
+++ b/src/textobject.c
@@ -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();