| To: vim_dev@googlegroups.com |
| Subject: Patch 7.4.269 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| 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 |
| |
| |
| |
| |
| |
| *** 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 |
| |
| |
| |
| *** 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 <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:*/,:// |
| |
| |
| |
| *** 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. */ |
| |
| |
| |
| *** 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 /// |