diff src/ops.c @ 1015:64e2b75e1615 v7.0.141

updated for version 7.0-141
author vimboss
date Tue, 17 Oct 2006 14:25:24 +0000
parents c5d5e0f3403f
children 98d1c149be76
line wrap: on
line diff
--- a/src/ops.c
+++ b/src/ops.c
@@ -1480,9 +1480,10 @@ get_spec_reg(regname, argp, allocated, e
  * return FAIL for failure, OK otherwise
  */
     int
-cmdline_paste_reg(regname, literally)
+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,8 +1495,13 @@ cmdline_paste_reg(regname, literally)
     {
 	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)
+	/* 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