Mercurial > vim
changeset 5852:81c26975e8f9 v7.4.269
updated for version 7.4.269
Problem: CTRL-U in Insert mode does not work after using a cursor key.
(Pine Wu)
Solution: Use the original insert start position. (Christian Brabandt)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Tue, 29 Apr 2014 14:44:35 +0200 |
parents | e82f5d698496 |
children | 63164d52cd03 |
files | src/edit.c src/testdir/test29.in src/testdir/test29.ok src/version.c |
diffstat | 4 files changed, 53 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/src/edit.c +++ b/src/edit.c @@ -8760,8 +8760,8 @@ ins_bs(c, mode, inserted_space_p) ((curwin->w_cursor.lnum == 1 && curwin->w_cursor.col == 0) || (!can_bs(BS_START) && (arrow_used - || (curwin->w_cursor.lnum == Insstart.lnum - && curwin->w_cursor.col <= Insstart.col))) + || (curwin->w_cursor.lnum == Insstart_orig.lnum + && curwin->w_cursor.col <= Insstart_orig.col))) || (!can_bs(BS_INDENT) && !arrow_used && ai_col > 0 && curwin->w_cursor.col <= ai_col) || (!can_bs(BS_EOL) && curwin->w_cursor.col == 0)))) @@ -8812,8 +8812,8 @@ ins_bs(c, mode, inserted_space_p) */ if (curwin->w_cursor.col == 0) { - lnum = Insstart.lnum; - if (curwin->w_cursor.lnum == Insstart.lnum + lnum = Insstart_orig.lnum; + if (curwin->w_cursor.lnum == lnum #ifdef FEAT_RIGHTLEFT || revins_on #endif @@ -8822,8 +8822,8 @@ ins_bs(c, mode, inserted_space_p) if (u_save((linenr_T)(curwin->w_cursor.lnum - 2), (linenr_T)(curwin->w_cursor.lnum + 1)) == FAIL) return FALSE; - --Insstart.lnum; - Insstart.col = MAXCOL; + --Insstart_orig.lnum; + Insstart_orig.col = MAXCOL; } /* * In replace mode: @@ -8981,9 +8981,9 @@ ins_bs(c, mode, inserted_space_p) while (vcol < want_vcol) { /* Remember the first char we inserted */ - if (curwin->w_cursor.lnum == Insstart.lnum - && curwin->w_cursor.col < Insstart.col) - Insstart.col = curwin->w_cursor.col; + if (curwin->w_cursor.lnum == Insstart_orig.lnum + && curwin->w_cursor.col < Insstart_orig.col) + Insstart_orig.col = curwin->w_cursor.col; #ifdef FEAT_VREPLACE if (State & VREPLACE_FLAG) @@ -9071,8 +9071,8 @@ ins_bs(c, mode, inserted_space_p) revins_on || #endif (curwin->w_cursor.col > mincol - && (curwin->w_cursor.lnum != Insstart.lnum - || curwin->w_cursor.col != Insstart.col))); + && (curwin->w_cursor.lnum != Insstart_orig.lnum + || curwin->w_cursor.col != Insstart_orig.col))); did_backspace = TRUE; } #ifdef FEAT_SMARTINDENT @@ -9090,9 +9090,9 @@ ins_bs(c, mode, inserted_space_p) AppendCharToRedobuff(c); /* If deleted before the insertion point, adjust it */ - if (curwin->w_cursor.lnum == Insstart.lnum - && curwin->w_cursor.col < Insstart.col) - Insstart.col = curwin->w_cursor.col; + if (curwin->w_cursor.lnum == Insstart_orig.lnum + && curwin->w_cursor.col < Insstart_orig.col) + Insstart_orig.col = curwin->w_cursor.col; /* vi behaviour: the cursor moves backward but the character that * was there remains visible
--- a/src/testdir/test29.in +++ b/src/testdir/test29.in @@ -102,6 +102,34 @@ if (condition) // Remove the next commen } STARTTEST +:" Test with backspace set to the non-compatible setting +/^\d\+ this +:set cp bs=2 +Avim1 +Avim2u +:set cpo-=< +:inoremap <c-u> <left><c-u> +Avim3 +:iunmap <c-u> +Avim4 +:" Test with backspace set to the compatible setting +:set bs= +A vim5A +A vim6Azweiu +:inoremap <c-u> <left><c-u> +A vim7 +:set cp +ENDTEST +1 this shouldn't be deleted +2 this shouldn't be deleted +3 this shouldn't be deleted +4 this should be deleted +5 this shouldn't be deleted +6 this shouldn't be deleted +7 this shouldn't be deleted +8 this shouldn't be deleted (not touched yet) + +STARTTEST /^{/+1 :set comments=sO:*\ -,mO:*\ \ ,exO:*/ :set comments+=s1:/*,mb:*,ex:*/,://
--- a/src/testdir/test29.ok +++ b/src/testdir/test29.ok @@ -62,6 +62,15 @@ if (condition) // Remove the next commen action(); } +1 this shouldn't be deleted +2 this shouldn't be deleted +3 this shouldn't be deleted +4 this should be deleted3 + +6 this shouldn't be deleted vim5 +7 this shouldn't be deleted vim6 +8 this shouldn't be deleted (not touched yet) vim7 + { /* Make sure the previous comment leader is not removed. */