diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2019-05-26 18:11:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-26 18:11:49 +0200 |
commit | aabda31d5491398783ba70b2e24c58e68454db28 (patch) | |
tree | d7e098a649e5a13a2ff118d827a1a32078db60a1 /src/nvim/eval.c | |
parent | 2b4c0181ba5a064b13f4e96e364124245e6f494c (diff) | |
parent | 8ed54bbec3b07d16658547d6bf38a1e804800341 (diff) | |
download | rneovim-aabda31d5491398783ba70b2e24c58e68454db28.tar.gz rneovim-aabda31d5491398783ba70b2e24c58e68454db28.tar.bz2 rneovim-aabda31d5491398783ba70b2e24c58e68454db28.zip |
Merge pull request #9547 from bfredl/rpc_multiline_err
messages: use proper multiline errors for rpcrequest and API wrappers
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 868305c88d..9f56b42fba 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -6529,7 +6529,7 @@ static void api_wrapper(typval_T *argvars, typval_T *rettv, FunPtr fptr) Object result = fn(VIML_INTERNAL_CALL, args, &err); if (ERROR_SET(&err)) { - nvim_err_writeln(cstr_as_string(err.msg)); + emsgf_multiline((const char *)e_api_error, err.msg); goto end; } @@ -14118,8 +14118,11 @@ static void f_rpcrequest(typval_T *argvars, typval_T *rettv, FunPtr fptr) Error err = ERROR_INIT; - Object result = rpc_send_call((uint64_t)argvars[0].vval.v_number, - tv_get_string(&argvars[1]), args, &err); + + uint64_t chan_id = (uint64_t)argvars[0].vval.v_number; + const char *method = tv_get_string(&argvars[1]); + + Object result = rpc_send_call(chan_id, method, args, &err); if (l_provider_call_nesting) { current_SID = save_current_SID; @@ -14132,7 +14135,20 @@ static void f_rpcrequest(typval_T *argvars, typval_T *rettv, FunPtr fptr) } if (ERROR_SET(&err)) { - nvim_err_writeln(cstr_as_string(err.msg)); + const char *name = NULL; + Channel *chan = find_channel(chan_id); + if (chan) { + name = rpc_client_name(chan); + } + msg_ext_set_kind("rpc_error"); + if (name) { + emsgf_multiline("Error invoking '%s' on channel %"PRIu64" (%s):\n%s", + method, chan_id, name, err.msg); + } else { + emsgf_multiline("Error invoking '%s' on channel %"PRIu64":\n%s", + method, chan_id, err.msg); + } + goto end; } |