diff --git a/7.3.513 b/7.3.513 new file mode 100644 index 0000000..396969f --- /dev/null +++ b/7.3.513 @@ -0,0 +1,129 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.513 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.513 +Problem: Cannot use CTRL-E and CTRL-Y with "r". +Solution: Make CTRL-E and CTRL-Y work like in Insert mode. (Christian + Brabandt) +Files: src/edit.c, src/normal.c, src/proto/edit.pro + + +*** ../vim-7.3.512/src/edit.c 2012-04-05 16:07:01.000000000 +0200 +--- src/edit.c 2012-04-30 17:53:47.000000000 +0200 +*************** +*** 253,259 **** + #ifdef FEAT_DIGRAPHS + static int ins_digraph __ARGS((void)); + #endif +- static int ins_copychar __ARGS((linenr_T lnum)); + static int ins_ctrl_ey __ARGS((int tc)); + #ifdef FEAT_SMARTINDENT + static void ins_try_si __ARGS((int c)); +--- 253,258 ---- +*************** +*** 9899,9905 **** + * Handle CTRL-E and CTRL-Y in Insert mode: copy char from other line. + * Returns the char to be inserted, or NUL if none found. + */ +! static int + ins_copychar(lnum) + linenr_T lnum; + { +--- 9898,9904 ---- + * Handle CTRL-E and CTRL-Y in Insert mode: copy char from other line. + * Returns the char to be inserted, or NUL if none found. + */ +! int + ins_copychar(lnum) + linenr_T lnum; + { +*** ../vim-7.3.512/src/normal.c 2012-03-28 12:59:53.000000000 +0200 +--- src/normal.c 2012-04-30 18:06:13.000000000 +0200 +*************** +*** 7070,7076 **** + for (n = cap->count1; n > 0; --n) + { + State = REPLACE; +! ins_char(cap->nchar); + State = old_State; + if (cap->ncharC1 != 0) + ins_char(cap->ncharC1); +--- 7070,7087 ---- + for (n = cap->count1; n > 0; --n) + { + State = REPLACE; +! if (cap->nchar == Ctrl_E || cap->nchar == Ctrl_Y) +! { +! int c = ins_copychar(curwin->w_cursor.lnum +! + (cap->nchar == Ctrl_Y ? -1 : 1)); +! if (c != NUL) +! ins_char(c); +! else +! /* will be decremented further down */ +! ++curwin->w_cursor.col; +! } +! else +! ins_char(cap->nchar); + State = old_State; + if (cap->ncharC1 != 0) + ins_char(cap->ncharC1); +*************** +*** 7092,7098 **** + * line will be changed. + */ + ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE); +! ptr[curwin->w_cursor.col] = cap->nchar; + if (p_sm && msg_silent == 0) + showmatch(cap->nchar); + ++curwin->w_cursor.col; +--- 7103,7117 ---- + * line will be changed. + */ + ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE); +! if (cap->nchar == Ctrl_E || cap->nchar == Ctrl_Y) +! { +! int c = ins_copychar(curwin->w_cursor.lnum +! + (cap->nchar == Ctrl_Y ? -1 : 1)); +! if (c != NUL) +! ptr[curwin->w_cursor.col] = c; +! } +! else +! ptr[curwin->w_cursor.col] = cap->nchar; + if (p_sm && msg_silent == 0) + showmatch(cap->nchar); + ++curwin->w_cursor.col; +*** ../vim-7.3.512/src/proto/edit.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/edit.pro 2012-04-30 17:54:41.000000000 +0200 +*************** +*** 39,42 **** +--- 39,43 ---- + int hkmap __ARGS((int c)); + void ins_scroll __ARGS((void)); + void ins_horscroll __ARGS((void)); ++ int ins_copychar __ARGS((linenr_T lnum)); + /* vim: set ft=c : */ +*** ../vim-7.3.512/src/version.c 2012-04-30 17:35:44.000000000 +0200 +--- src/version.c 2012-04-30 18:17:52.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 513, + /**/ + +-- +It is illegal for anyone to try and stop a child from playfully jumping over +puddles of water. + [real standing law in California, United States of America] + + /// 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 ///