diff options
author | Bram Moolenaar <Bram@vim.org> | 2014-04-29 14:44:35 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2014-04-29 14:44:35 +0200 |
commit | 3d1956bcc9b2f606a8b6b03b3852a6eed9847348 (patch) | |
tree | f61d0ca0c5c918e37dba41610ae6b065061294e9 | |
parent | 355a95a079d3c8c64cf496df434741891d07985a (diff) | |
download | vim-3d1956bcc9b2f606a8b6b03b3852a6eed9847348.zip |
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)
-rw-r--r-- | src/edit.c | 28 | ||||
-rw-r--r-- | src/testdir/test29.in | 28 | ||||
-rw-r--r-- | src/testdir/test29.ok | 9 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 53 insertions, 14 deletions
diff --git a/src/edit.c b/src/edit.c index 24010c8d9..a0ad9aaed 100644 --- 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 diff --git a/src/testdir/test29.in b/src/testdir/test29.in index 2df2f7077..1d6cb6f4d 100644 --- a/src/testdir/test29.in +++ b/src/testdir/test29.in @@ -102,6 +102,34 @@ if (condition) // Remove the next comment leader! } 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:*/,:// diff --git a/src/testdir/test29.ok b/src/testdir/test29.ok index 902d52f49..9dc07ed46 100644 --- a/src/testdir/test29.ok +++ b/src/testdir/test29.ok @@ -62,6 +62,15 @@ if (condition) // Remove the next comment leader! OK, I will. 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. */ diff --git a/src/version.c b/src/version.c index bd97da3a4..f13edda83 100644 --- a/src/version.c +++ b/src/version.c @@ -735,6 +735,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 269, +/**/ 268, /**/ 267, |