0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

updated for version 7.1-243

This commit is contained in:
Bram Moolenaar 2008-02-06 13:44:43 +00:00
parent 2a6f21144c
commit e60c58d965
4 changed files with 41 additions and 9 deletions

View File

@ -2197,7 +2197,7 @@ op_tilde(oap)
#ifdef FEAT_VISUAL
struct block_def bd;
#endif
int did_change;
int did_change = FALSE;
if (u_save((linenr_T)(oap->start.lnum - 1),
(linenr_T)(oap->end.lnum + 1)) == FAIL)
@ -2242,7 +2242,18 @@ op_tilde(oap)
else if (!oap->inclusive)
dec(&(oap->end));
did_change = swapchars(oap->op_type, &pos, oap->end.col - pos.col + 1);
if (pos.lnum == oap->end.lnum)
did_change = swapchars(oap->op_type, &pos,
oap->end.col - pos.col + 1);
else
for (;;)
{
did_change |= swapchars(oap->op_type, &pos,
pos.lnum == oap->end.lnum ? oap->end.col + 1:
(int)STRLEN(ml_get_pos(&pos)));
if (ltoreq(oap->end, pos) || inc(&pos) == -1)
break;
}
if (did_change)
{
changed_lines(oap->start.lnum, oap->start.col, oap->end.lnum + 1,
@ -2314,17 +2325,11 @@ swapchars(op_type, pos, length)
for (todo = length; todo > 0; --todo)
{
# ifdef FEAT_MBYTE
int pos_col = pos->col;
if (has_mbyte)
/* we're counting bytes, not characters */
todo -= (*mb_ptr2len)(ml_get_pos(pos)) - 1;
# endif
did_change |= swapchar(op_type, pos);
# ifdef FEAT_MBYTE
/* Changing German sharp s to SS increases the column. */
todo += pos->col - pos_col;
# endif
if (inc(pos) == -1) /* at end of file */
break;
}

View File

@ -1,8 +1,10 @@
Test Visual block mode commands
And test "U" in Visual mode, also on German sharp S.
STARTTEST
:so small.vim
:so mbyte.vim
/^abcde
:" Test shift-right of a block
jlllljj>wlljlll>
@ -14,7 +16,22 @@ GklkkkIxyz
Gllllkkklllrq
:" Test block-change
G$khhhhhkkcmno
:$-4,$wq! test.out
:$-4,$w! test.out
:" gUe must uppercase a whole word, also when ß changes to SS
Gothe youtußeuu endYpk0wgUe
:" gUfx must uppercase until x, inclusive.
O- youßtußexu -0fogUfx
:" VU must uppercase a whole line
YpkVU
:" same, when it's the last line in the buffer
YPGi111VUddP
:" Uppercase two lines
Oblah di
doh dutVkUj
:" Uppercase part of two lines
ddppi333k0i222fyllvjfuUk
:/^the/,$w >> test.out
:qa!
ENDTEST
abcdefghijklm

View File

@ -3,3 +3,11 @@ axyzqqqq mno ghijklm
axyzqqqqef mno ghijklm
axyzqqqqefgmnoklm
abcdqqqqijklm
the YOUTUSSEUU end
- yOUSSTUSSEXu -
THE YOUTUSSEUU END
111THE YOUTUSSEUU END
BLAH DI
DOH DUT
222the yoUTUSSEUU END
333THE YOUTUßeuu end

View File

@ -666,6 +666,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
243,
/**/
242,
/**/