From 1e284f515581e0516e3f3dea568b9b9084bbcab1 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 13 Mar 2013 20:23:22 +0100 Subject: updated for version 7.3.860 Problem: When using --remote-expr try/catch does not work. (Andrey Radev) Solution: Set emsg_silent instead of emsg_off. --- src/main.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index ef4893458..6c4f8ecee 100644 --- a/src/main.c +++ b/src/main.c @@ -4025,8 +4025,6 @@ server_to_input_buf(str) /* * Evaluate an expression that the client sent to a string. - * Handles disabling error messages and disables debugging, otherwise Vim - * hangs, waiting for "cont" to be typed. */ char_u * eval_client_expr_to_string(expr) @@ -4036,15 +4034,21 @@ eval_client_expr_to_string(expr) int save_dbl = debug_break_level; int save_ro = redir_off; + /* Disable debugging, otherwise Vim hangs, waiting for "cont" to be + * typed. */ debug_break_level = -1; redir_off = 0; - ++emsg_skip; + /* Do not display error message, otherwise Vim hangs, waiting for "cont" + * to be typed. Do generate errors so that try/catch works. */ + ++emsg_silent; res = eval_to_string(expr, NULL, TRUE); debug_break_level = save_dbl; redir_off = save_ro; - --emsg_skip; + --emsg_silent; + if (emsg_silent < 0) + emsg_silent = 0; /* A client can tell us to redraw, but not to display the cursor, so do * that here. */ -- cgit v1.2.1