]> granicus.if.org Git - vim/commitdiff
patch 8.0.0476: missing change to main.c v8.0.0476
authorBram Moolenaar <Bram@vim.org>
Sat, 18 Mar 2017 17:15:16 +0000 (18:15 +0100)
committerBram Moolenaar <Bram@vim.org>
Sat, 18 Mar 2017 17:15:16 +0000 (18:15 +0100)
Problem:    Missing change to main.c.
Solution:   Add new function.

src/main.c
src/version.c

index 29ab3c6e99ebf41a257fa265575cce36c3b79870..52370dc4193a9655583b33eec1bdb53939a589ba 100644 (file)
@@ -4140,6 +4140,11 @@ eval_client_expr_to_string(char_u *expr)
     char_u     *res;
     int                save_dbl = debug_break_level;
     int                save_ro = redir_off;
+    void       *fc;
+
+    /* Evaluate the expression at the toplevel, don't use variables local to
+     * the calling function. */
+    fc = clear_current_funccal();
 
      /* Disable debugging, otherwise Vim hangs, waiting for "cont" to be
       * typed. */
@@ -4156,6 +4161,7 @@ eval_client_expr_to_string(char_u *expr)
     --emsg_silent;
     if (emsg_silent < 0)
        emsg_silent = 0;
+    restore_current_funccal(fc);
 
     /* A client can tell us to redraw, but not to display the cursor, so do
      * that here. */
@@ -4169,6 +4175,41 @@ eval_client_expr_to_string(char_u *expr)
     return res;
 }
 
+/*
+ * Evaluate a command or expression sent to ourselves.
+ */
+    int
+sendToLocalVim(char_u *cmd, int asExpr, char_u **result)
+{
+    if (asExpr)
+    {
+       char_u *ret;
+
+       ret = eval_client_expr_to_string(cmd);
+       if (result != NULL)
+       {
+           if (ret == NULL)
+           {
+               char    *err = _(e_invexprmsg);
+               size_t  len = STRLEN(cmd) + STRLEN(err) + 5;
+               char_u  *msg;
+
+               msg = alloc(len);
+               if (msg != NULL)
+                   vim_snprintf((char *)msg, len, "%s: \"%s\"", err, cmd);
+               *result = msg;
+           }
+           else
+               *result = ret;
+       }
+       else
+           vim_free(ret);
+       return ret == NULL ? -1 : 0;
+    }
+    server_to_input_buf(cmd);
+    return 0;
+}
+
 /*
  * If conversion is needed, convert "data" from "client_enc" to 'encoding' and
  * return an allocated string.  Otherwise return "data".
index 18ba30e87adeae9084f3bd3bc2e03046797465f9..b818b01ac4cd44eac64c98f0809e70898f03e5a8 100644 (file)
@@ -764,6 +764,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    476,
 /**/
     475,
 /**/