forked from aniani/vim
updated for version 7.4.210
Problem: Visual block mode plus virtual edit doesn't work well with tabs. (Liang Li) Solution: Take coladd into account. (Christian Brabandt)
This commit is contained in:
20
src/ops.c
20
src/ops.c
@@ -2646,7 +2646,15 @@ op_insert(oap, count1)
|
|||||||
if (oap->start.lnum == curbuf->b_op_start_orig.lnum && !bd.is_MAX)
|
if (oap->start.lnum == curbuf->b_op_start_orig.lnum && !bd.is_MAX)
|
||||||
{
|
{
|
||||||
if (oap->op_type == OP_INSERT
|
if (oap->op_type == OP_INSERT
|
||||||
&& oap->start.col != curbuf->b_op_start_orig.col)
|
&& oap->start.col
|
||||||
|
#ifdef FEAT_VIRTUALEDIT
|
||||||
|
+ oap->start.coladd
|
||||||
|
#endif
|
||||||
|
!= curbuf->b_op_start_orig.col
|
||||||
|
#ifdef FEAT_VIRTUALEDIT
|
||||||
|
+ curbuf->b_op_start_orig.coladd
|
||||||
|
#endif
|
||||||
|
)
|
||||||
{
|
{
|
||||||
oap->start.col = curbuf->b_op_start_orig.col;
|
oap->start.col = curbuf->b_op_start_orig.col;
|
||||||
pre_textlen -= getviscol2(oap->start.col, oap->start.coladd)
|
pre_textlen -= getviscol2(oap->start.col, oap->start.coladd)
|
||||||
@@ -2654,7 +2662,15 @@ op_insert(oap, count1)
|
|||||||
oap->start_vcol = getviscol2(oap->start.col, oap->start.coladd);
|
oap->start_vcol = getviscol2(oap->start.col, oap->start.coladd);
|
||||||
}
|
}
|
||||||
else if (oap->op_type == OP_APPEND
|
else if (oap->op_type == OP_APPEND
|
||||||
&& oap->end.col >= curbuf->b_op_start_orig.col)
|
&& oap->end.col
|
||||||
|
#ifdef FEAT_VIRTUALEDIT
|
||||||
|
+ oap->end.coladd
|
||||||
|
#endif
|
||||||
|
>= curbuf->b_op_start_orig.col
|
||||||
|
#ifdef FEAT_VIRTUALEDIT
|
||||||
|
+ curbuf->b_op_start_orig.coladd
|
||||||
|
#endif
|
||||||
|
)
|
||||||
{
|
{
|
||||||
oap->start.col = curbuf->b_op_start_orig.col;
|
oap->start.col = curbuf->b_op_start_orig.col;
|
||||||
/* reset pre_textlen to the value of OP_INSERT */
|
/* reset pre_textlen to the value of OP_INSERT */
|
||||||
|
@@ -35,6 +35,12 @@ G$khhhhhkkcmno
|
|||||||
/^C23$/
|
/^C23$/
|
||||||
:exe ":norm! l\<C-V>j$hhAab\<Esc>"
|
:exe ":norm! l\<C-V>j$hhAab\<Esc>"
|
||||||
:.,/^$/w >> test.out
|
:.,/^$/w >> test.out
|
||||||
|
:" Test for Visual block insert when virtualedit=all
|
||||||
|
:set ve=all
|
||||||
|
:/\t\tline
|
||||||
|
:exe ":norm! 07l\<C-V>jjIx\<Esc>"
|
||||||
|
:set ve=
|
||||||
|
:.,/^$/w >> test.out
|
||||||
:" gUe must uppercase a whole word, also when <20> changes to SS
|
:" gUe must uppercase a whole word, also when <20> changes to SS
|
||||||
Gothe youtu<74>euu endYpk0wgUe
|
Gothe youtu<74>euu endYpk0wgUe
|
||||||
:" gUfx must uppercase until x, inclusive.
|
:" gUfx must uppercase until x, inclusive.
|
||||||
@@ -62,6 +68,10 @@ G3o987652k02l2jr
|
|||||||
:/^the/,$w >> test.out
|
:/^the/,$w >> test.out
|
||||||
:qa!
|
:qa!
|
||||||
ENDTEST
|
ENDTEST
|
||||||
|
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
line3
|
||||||
|
|
||||||
aaaaaa
|
aaaaaa
|
||||||
bbbbbb
|
bbbbbb
|
||||||
|
Binary file not shown.
@@ -738,6 +738,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
210,
|
||||||
/**/
|
/**/
|
||||||
209,
|
209,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user