mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
api: Implement vim_report_error
function
This function is used to report errors caused by remote functions called by channel_send_call
This commit is contained in:
parent
d29b62daab
commit
15ca58d79f
@ -308,6 +308,16 @@ void vim_err_write(String str)
|
|||||||
write_msg(str, true);
|
write_msg(str, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Higher level error reporting function that ensures all str contents
|
||||||
|
/// are written by sending a trailing linefeed to `vim_wrr_write`
|
||||||
|
///
|
||||||
|
/// @param str The message
|
||||||
|
void vim_report_error(String str)
|
||||||
|
{
|
||||||
|
vim_err_write(str);
|
||||||
|
vim_err_write((String) {.data = "\n", .size = 1});
|
||||||
|
}
|
||||||
|
|
||||||
/// Gets the current list of buffer handles
|
/// Gets the current list of buffer handles
|
||||||
///
|
///
|
||||||
/// @return The number of buffers
|
/// @return The number of buffers
|
||||||
|
@ -12796,13 +12796,17 @@ static void f_send_call(typval_T *argvars, typval_T *rettv)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (errored) {
|
||||||
|
vim_report_error(result.data.string);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
Error conversion_error = {.set = false};
|
Error conversion_error = {.set = false};
|
||||||
if (errored || !object_to_vim(result, rettv, &conversion_error)) {
|
if (!object_to_vim(result, rettv, &conversion_error)) {
|
||||||
EMSG(errored ?
|
EMSG(_("Error converting the call result"));
|
||||||
result.data.string.data :
|
|
||||||
_("Error converting the call result"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
end:
|
||||||
api_free_object(result);
|
api_free_object(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ Object provider_call(char *method, Array args)
|
|||||||
sizeof(buf),
|
sizeof(buf),
|
||||||
"Provider for method \"%s\" is not available",
|
"Provider for method \"%s\" is not available",
|
||||||
method);
|
method);
|
||||||
report_error(buf);
|
vim_report_error(cstr_as_string(buf));
|
||||||
api_free_array(args);
|
api_free_array(args);
|
||||||
return NIL;
|
return NIL;
|
||||||
}
|
}
|
||||||
@ -112,7 +112,7 @@ Object provider_call(char *method, Array args)
|
|||||||
channel_send_call(f->channel_id, method, args, &result, &error);
|
channel_send_call(f->channel_id, method, args, &result, &error);
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
report_error(result.data.string.data);
|
vim_report_error(result.data.string);
|
||||||
api_free_object(result);
|
api_free_object(result);
|
||||||
return NIL;
|
return NIL;
|
||||||
}
|
}
|
||||||
@ -151,9 +151,3 @@ static Feature * find_feature(char *name)
|
|||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void report_error(char *str)
|
|
||||||
{
|
|
||||||
vim_err_write((String) {.data = str, .size = strlen(str)});
|
|
||||||
vim_err_write((String) {.data = "\n", .size = 1});
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user