vim-patch: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)

https://code.google.com/p/vim/source/detail?r=420fd9cb86d51a92c4307a746557e81914c6d6c4
This commit is contained in:
oni-link 2014-04-13 01:10:11 +02:00 committed by Thiago de Arruda
parent 421c388bb7
commit 965f587061
4 changed files with 16 additions and 3 deletions

View File

@ -2132,13 +2132,16 @@ void op_insert(oparg_T *oap, long count1)
* to adjust the block for that. */
if (oap->start.lnum == curbuf->b_op_start_orig.lnum && !bd.is_MAX) {
if (oap->op_type == OP_INSERT
&& oap->start.col != curbuf->b_op_start_orig.col) {
&& oap->start.col + oap->start.coladd
!= curbuf->b_op_start_orig.col + curbuf->b_op_start_orig.coladd) {
oap->start.col = curbuf->b_op_start_orig.col;
pre_textlen -= getviscol2(oap->start.col, oap->start.coladd)
- oap->start_vcol;
oap->start_vcol = getviscol2(oap->start.col, oap->start.coladd);
} else if (oap->op_type == OP_APPEND
&& oap->end.col >= curbuf->b_op_start_orig.col) {
&& oap->end.col + oap->end.coladd
>= curbuf->b_op_start_orig.col
+ curbuf->b_op_start_orig.coladd) {
oap->start.col = curbuf->b_op_start_orig.col;
/* reset pre_textlen to the value of OP_INSERT */
pre_textlen += bd.textlen;

View File

@ -35,6 +35,12 @@ G$khhhhhkkcmno
/^C23$/
:exe ":norm! l\<C-V>j$hhAab\<Esc>"
:.,/^$/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 ß changes to SS
Gothe youtußeuu endYpk0wgUe
:" gUfx must uppercase until x, inclusive.
@ -62,6 +68,10 @@ G3o987652k02l2jr
:qa!
ENDTEST
line1
line2
line3
aaaaaa
bbbbbb
cccccc

Binary file not shown.

View File

@ -251,7 +251,7 @@ static int included_patches[] = {
//213,
//212,
//211,
//210,
210,
209,
//208,
207,