diff --git a/7.4.269 b/7.4.269 new file mode 100644 index 0000000..80f29a4 --- /dev/null +++ b/7.4.269 @@ -0,0 +1,213 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.269 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 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) +Files: src/edit.c, src/testdir/test29.in, src/testdir/test29.ok + + +*** ../vim-7.4.268/src/edit.c 2014-04-29 12:15:22.852032651 +0200 +--- src/edit.c 2014-04-29 14:44:07.867876234 +0200 +*************** +*** 8760,8767 **** + ((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))) + || (!can_bs(BS_INDENT) && !arrow_used && ai_col > 0 + && curwin->w_cursor.col <= ai_col) + || (!can_bs(BS_EOL) && curwin->w_cursor.col == 0)))) +--- 8760,8767 ---- + ((curwin->w_cursor.lnum == 1 && curwin->w_cursor.col == 0) + || (!can_bs(BS_START) + && (arrow_used +! || (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,8819 **** + */ + if (curwin->w_cursor.col == 0) + { +! lnum = Insstart.lnum; +! if (curwin->w_cursor.lnum == Insstart.lnum + #ifdef FEAT_RIGHTLEFT + || revins_on + #endif +--- 8812,8819 ---- + */ + if (curwin->w_cursor.col == 0) + { +! lnum = Insstart_orig.lnum; +! if (curwin->w_cursor.lnum == lnum + #ifdef FEAT_RIGHTLEFT + || revins_on + #endif +*************** +*** 8822,8829 **** + 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; + } + /* + * In replace mode: +--- 8822,8829 ---- + if (u_save((linenr_T)(curwin->w_cursor.lnum - 2), + (linenr_T)(curwin->w_cursor.lnum + 1)) == FAIL) + return FALSE; +! --Insstart_orig.lnum; +! Insstart_orig.col = MAXCOL; + } + /* + * In replace mode: +*************** +*** 8981,8989 **** + 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; + + #ifdef FEAT_VREPLACE + if (State & VREPLACE_FLAG) +--- 8981,8989 ---- + while (vcol < want_vcol) + { + /* Remember the first char we inserted */ +! 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,9078 **** + revins_on || + #endif + (curwin->w_cursor.col > mincol +! && (curwin->w_cursor.lnum != Insstart.lnum +! || curwin->w_cursor.col != Insstart.col))); + did_backspace = TRUE; + } + #ifdef FEAT_SMARTINDENT +--- 9071,9078 ---- + revins_on || + #endif + (curwin->w_cursor.col > mincol +! && (curwin->w_cursor.lnum != Insstart_orig.lnum +! || curwin->w_cursor.col != Insstart_orig.col))); + did_backspace = TRUE; + } + #ifdef FEAT_SMARTINDENT +*************** +*** 9090,9098 **** + 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; + + /* vi behaviour: the cursor moves backward but the character that + * was there remains visible +--- 9090,9098 ---- + AppendCharToRedobuff(c); + + /* If deleted before the insertion point, adjust it */ +! 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 +*** ../vim-7.4.268/src/testdir/test29.in 2012-06-13 13:48:26.000000000 +0200 +--- src/testdir/test29.in 2014-04-29 14:31:23.619889628 +0200 +*************** +*** 102,107 **** +--- 102,135 ---- + } + + STARTTEST ++ :" Test with backspace set to the non-compatible setting ++ /^\d\+ this ++ :set cp bs=2 ++ Avim1 ++ Avim2u ++ :set cpo-=< ++ :inoremap ++ Avim3 ++ :iunmap ++ Avim4 ++ :" Test with backspace set to the compatible setting ++ :set bs= ++ A vim5A ++ A vim6Azweiu ++ :inoremap ++ 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:*/,:// +*** ../vim-7.4.268/src/testdir/test29.ok 2012-06-13 13:48:26.000000000 +0200 +--- src/testdir/test29.ok 2014-04-29 14:31:23.623889628 +0200 +*************** +*** 62,67 **** +--- 62,76 ---- + 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. */ +*** ../vim-7.4.268/src/version.c 2014-04-29 14:02:42.547919791 +0200 +--- src/version.c 2014-04-29 14:42:09.083878315 +0200 +*************** +*** 736,737 **** +--- 736,739 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 269, + /**/ + +-- +From "know your smileys": + [:-) Frankenstein's monster + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org ///