patch 9.1.0430: getregionpos() doesn't handle one char selection
Problem: getregionpos() doesn't handle one char selection.
Solution: Handle startspaces differently when is_oneChar is set.
Also add a test for an exclusive charwise selection with
multibyte chars (zeertzjq)
closes: #14825
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/ops.c b/src/ops.c
index 605a664..1dd36ab 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -2444,13 +2444,13 @@
int inclusive)
{
colnr_T startcol = 0, endcol = MAXCOL;
- int is_oneChar = FALSE;
colnr_T cs, ce;
char_u *p;
p = ml_get(lnum);
bdp->startspaces = 0;
bdp->endspaces = 0;
+ bdp->is_oneChar = FALSE;
bdp->start_char_vcols = 0;
if (lnum == start.lnum)
@@ -2487,7 +2487,7 @@
if (start.lnum == end.lnum && start.col == end.col)
{
// Special case: inside a single char
- is_oneChar = TRUE;
+ bdp->is_oneChar = TRUE;
bdp->startspaces = end.coladd - start.coladd + inclusive;
endcol = startcol;
}
@@ -2501,7 +2501,7 @@
}
if (endcol == MAXCOL)
endcol = ml_get_len(lnum);
- if (startcol > endcol || is_oneChar)
+ if (startcol > endcol || bdp->is_oneChar)
bdp->textlen = 0;
else
bdp->textlen = endcol - startcol + inclusive;