diff src/ops.c @ 336:2d8c2622e1fa

updated for version 7.0087
author vimboss
date Fri, 17 Jun 2005 22:00:15 +0000
parents a2ff714de3db
children 0f2b5d1b8117
line wrap: on
line diff
--- a/src/ops.c
+++ b/src/ops.c
@@ -5717,6 +5717,11 @@ write_reg_contents_ex(name, str, maxlen,
     struct yankreg  *old_y_previous, *old_y_current;
     long	    len;
 
+    if (maxlen >= 0)
+	len = maxlen;
+    else
+	len = (long)STRLEN(str);
+
     /* Special case: '/' search pattern */
     if (name == '/')
     {
@@ -5724,6 +5729,26 @@ write_reg_contents_ex(name, str, maxlen,
 	return;
     }
 
+#ifdef FEAT_EVAL
+    if (name == '=')
+    {
+	char_u	    *p, *s;
+
+	p = vim_strnsave(str, (int)len);
+	if (p == NULL)
+	    return;
+	if (must_append)
+	{
+	    s = concat_str(get_expr_line_src(), p);
+	    vim_free(p);
+	    p = s;
+
+	}
+	set_expr_line(p);
+	return;
+    }
+#endif
+
     if (!valid_yank_reg(name, TRUE))	    /* check for valid reg name */
     {
 	emsg_invreg(name);
@@ -5740,10 +5765,6 @@ write_reg_contents_ex(name, str, maxlen,
     get_yank_register(name, TRUE);
     if (!y_append && !must_append)
 	free_yank_all();
-    if (maxlen >= 0)
-	len = maxlen;
-    else
-	len = (long)STRLEN(str);
 #ifndef FEAT_VISUAL
     /* Just in case - make sure we don't use MBLOCK */
     if (yank_type == MBLOCK)