To: vim-dev@vim.org Subject: Patch 7.0.141 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit ------------ Patch 7.0.141 Problem: When pasting a while line on the command line an extra CR is added literally. Solution: Don't add the trailing CR when pasting with the mouse. Files: src/ex_getln.c, src/proto/ops.pro, src/ops.c *** ../vim-7.0.140/src/ex_getln.c Thu Sep 14 11:27:12 2006 --- src/ex_getln.c Sun Oct 15 16:17:20 2006 *************** *** 86,92 **** static void draw_cmdline __ARGS((int start, int len)); static void save_cmdline __ARGS((struct cmdline_info *ccp)); static void restore_cmdline __ARGS((struct cmdline_info *ccp)); ! static int cmdline_paste __ARGS((int regname, int literally)); #if defined(FEAT_XIM) && defined(FEAT_GUI_GTK) static void redrawcmd_preedit __ARGS((void)); #endif --- 86,92 ---- static void draw_cmdline __ARGS((int start, int len)); static void save_cmdline __ARGS((struct cmdline_info *ccp)); static void restore_cmdline __ARGS((struct cmdline_info *ccp)); ! static int cmdline_paste __ARGS((int regname, int literally, int remcr)); #if defined(FEAT_XIM) && defined(FEAT_GUI_GTK) static void redrawcmd_preedit __ARGS((void)); #endif *************** *** 1116,1122 **** #endif if (c != ESC) /* use ESC to cancel inserting register */ { ! cmdline_paste(c, i == Ctrl_R); #ifdef FEAT_EVAL /* When there was a serious error abort getting the --- 1116,1122 ---- #endif if (c != ESC) /* use ESC to cancel inserting register */ { ! cmdline_paste(c, i == Ctrl_R, FALSE); #ifdef FEAT_EVAL /* When there was a serious error abort getting the *************** *** 1231,1246 **** goto cmdline_not_changed; /* Ignore mouse */ # ifdef FEAT_CLIPBOARD if (clip_star.available) ! cmdline_paste('*', TRUE); else # endif ! cmdline_paste(0, TRUE); redrawcmd(); goto cmdline_changed; # ifdef FEAT_DND case K_DROP: ! cmdline_paste('~', TRUE); redrawcmd(); goto cmdline_changed; # endif --- 1231,1246 ---- goto cmdline_not_changed; /* Ignore mouse */ # ifdef FEAT_CLIPBOARD if (clip_star.available) ! cmdline_paste('*', TRUE, TRUE); else # endif ! cmdline_paste(0, TRUE, TRUE); redrawcmd(); goto cmdline_changed; # ifdef FEAT_DND case K_DROP: ! cmdline_paste('~', TRUE, FALSE); redrawcmd(); goto cmdline_changed; # endif *************** *** 2890,2898 **** * return FAIL for failure, OK otherwise */ static int ! cmdline_paste(regname, literally) int regname; int literally; /* Insert text literally instead of "as typed" */ { long i; char_u *arg; --- 2890,2899 ---- * return FAIL for failure, OK otherwise */ static int ! cmdline_paste(regname, literally, remcr) int regname; int literally; /* Insert text literally instead of "as typed" */ + int remcr; /* remove trailing CR */ { long i; char_u *arg; *************** *** 2968,2974 **** return OK; } ! return cmdline_paste_reg(regname, literally); } /* --- 2969,2975 ---- return OK; } ! return cmdline_paste_reg(regname, literally, remcr); } /* *** ../vim-7.0.140/src/proto/ops.pro Sun Apr 30 20:25:07 2006 --- src/proto/ops.pro Tue Oct 17 16:24:08 2006 *************** *** 20,26 **** extern int do_execreg __ARGS((int regname, int colon, int addcr)); extern int insert_reg __ARGS((int regname, int literally)); extern int get_spec_reg __ARGS((int regname, char_u **argp, int *allocated, int errmsg)); ! extern int cmdline_paste_reg __ARGS((int regname, int literally)); extern void adjust_clip_reg __ARGS((int *rp)); extern int op_delete __ARGS((oparg_T *oap)); extern int op_replace __ARGS((oparg_T *oap, int c)); --- 20,26 ---- extern int do_execreg __ARGS((int regname, int colon, int addcr)); extern int insert_reg __ARGS((int regname, int literally)); extern int get_spec_reg __ARGS((int regname, char_u **argp, int *allocated, int errmsg)); ! extern int cmdline_paste_reg __ARGS((int regname, int literally, int remcr)); extern void adjust_clip_reg __ARGS((int *rp)); extern int op_delete __ARGS((oparg_T *oap)); extern int op_replace __ARGS((oparg_T *oap, int c)); *** ../vim-7.0.140/src/ops.c Fri Oct 6 23:33:22 2006 --- src/ops.c Sun Oct 15 16:43:54 2006 *************** *** 1480,1488 **** * return FAIL for failure, OK otherwise */ int ! cmdline_paste_reg(regname, literally) int regname; int literally; /* Insert text literally instead of "as typed" */ { long i; --- 1481,1490 ---- * return FAIL for failure, OK otherwise */ int ! cmdline_paste_reg(regname, literally, remcr) int regname; int literally; /* Insert text literally instead of "as typed" */ + int remcr; /* don't add trailing CR */ { long i; *************** *** 1494,1501 **** { cmdline_paste_str(y_current->y_array[i], literally); ! /* insert ^M between lines and after last line if type is MLINE */ ! if (y_current->y_type == MLINE || i < y_current->y_size - 1) cmdline_paste_str((char_u *)"\r", literally); /* Check for CTRL-C, in case someone tries to paste a few thousand --- 1496,1508 ---- { cmdline_paste_str(y_current->y_array[i], literally); ! /* Insert ^M between lines and after last line if type is MLINE. ! * Don't do this when "remcr" is TRUE and the next line is empty. */ ! if (y_current->y_type == MLINE ! || (i < y_current->y_size - 1 ! && !(remcr ! && i == y_current->y_size - 2 ! && *y_current->y_array[i + 1] == NUL))) cmdline_paste_str((char_u *)"\r", literally); /* Check for CTRL-C, in case someone tries to paste a few thousand *** ../vim-7.0.140/src/version.c Tue Oct 17 15:17:41 2006 --- src/version.c Tue Oct 17 16:22:55 2006 *************** *** 668,669 **** --- 668,671 ---- { /* Add new patch number below this line */ + /**/ + 141, /**/ -- ERROR 047: Keyboard not found. Press RETURN to continue. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ download, build and distribute -- http://www.A-A-P.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///