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:
committed by
Christian Brabandt
parent
95ff39f8e3
commit
52a6f34887
@@ -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;
|
||||
|
Reference in New Issue
Block a user