1
0
forked from aniani/vim

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>
This commit is contained in:
zeertzjq
2024-05-22 16:42:44 +02:00
committed by Christian Brabandt
parent 95ff39f8e3
commit 52a6f34887
5 changed files with 87 additions and 14 deletions

View File

@@ -2444,13 +2444,13 @@ charwise_block_prep(
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 @@ charwise_block_prep(
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 @@ charwise_block_prep(
}
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;