Hi Андрей! On Sa, 09 Mär 2013, Андрей Радев wrote:
> While trying to evaluate commands on a remote server and get their > output, I've ran into a problem with error checking -- it seems like > with remote-expr there's no error-checking at all. > > The simplest example I can think of is this (gist: > https://gist.github.com/AndrewRadev/5123706): > > function! Test() > try > exe "frobble" > return 1 > catch > return 2 > endtry > endfunction > > If I open a Vim with `vim --servername FOO` and :source this file, > executing `:echo Test()` results in 2, since there is no "frobble" > command. However, if I then try `vim --servername FOO --remote-expr > 'Test()'`, I get 1. I tried avoiding try/catch and using `v:errmsg` > instead, but that variable is also not set to the last error if the > function is invoked with `--remote-expr`. This happens, because error handling is explicitly disabled at eval_client_expr_to_string() in main.c I think, we can at least enable exception handling by this patch: --- a/src/message.c +++ b/src/message.c @@ -587,7 +587,13 @@ /* Skip this if not giving error messages at the moment. */ if (emsg_not_now()) + { +#ifdef FEAT_EVAL + /* make sure, exceptions are thrown and handled nevertheless */ + cause_errthrow(s, emsg_severe, &ignore); +#endif return TRUE; + } called_emsg = TRUE; ex_exitval = 1; regards, Christian -- -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
