diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2019-01-24 19:15:39 +0100 |
---|---|---|
committer | Björn Linse <bjorn.linse@gmail.com> | 2019-05-26 15:42:16 +0200 |
commit | 8ed54bbec3b07d16658547d6bf38a1e804800341 (patch) | |
tree | 404fd83325f4d6193b1b3d2c0c8ea7838d95e742 /src/nvim/eval.c | |
parent | e0348c610c5f84c03f69f638effab27d0c784c7f (diff) | |
download | rneovim-8ed54bbec3b07d16658547d6bf38a1e804800341.tar.gz rneovim-8ed54bbec3b07d16658547d6bf38a1e804800341.tar.bz2 rneovim-8ed54bbec3b07d16658547d6bf38a1e804800341.zip |
messages: use proper multiline error message 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 12e309bfdc..58285a7716 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; } |