aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/os/provider.c
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2014-09-17 08:56:59 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2014-09-18 21:30:31 -0300
commit4a8b52ea08bb5cf501cd20bce4744ae6c7edd9b1 (patch)
treec7d53772706ed78bee255100b328db11e3dc867e /src/nvim/os/provider.c
parent67a16384a46c5eb51ba43d9150e95a1742cffbde (diff)
downloadrneovim-4a8b52ea08bb5cf501cd20bce4744ae6c7edd9b1.tar.gz
rneovim-4a8b52ea08bb5cf501cd20bce4744ae6c7edd9b1.tar.bz2
rneovim-4a8b52ea08bb5cf501cd20bce4744ae6c7edd9b1.zip
api/msgpack-rpc: Improve error infrastructure
- Add error type information to `Error` - Rename `set_api_error` to `api_set_error` for consistency with other api_* functions/macros. - Refactor the api_set_error macro to accept formatted strings and error types - Improve error messages - Wrap error messages with gettext macro - Refactor msgpack-rpc serialization to transform Error instances into [type, message] arrays - Add error type information to API metadata - Normalize nvim->client and client->nvim error handling(change channel_send_call to accept an Error pointer instead of the `errored` boolean pointer) - Use macro to initialize Error structures
Diffstat (limited to 'src/nvim/os/provider.c')
-rw-r--r--src/nvim/os/provider.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/nvim/os/provider.c b/src/nvim/os/provider.c
index 2e7a677793..d4fffaa053 100644
--- a/src/nvim/os/provider.c
+++ b/src/nvim/os/provider.c
@@ -107,12 +107,11 @@ Object provider_call(char *method, Array args)
return NIL;
}
- bool error = false;
- Object result = NIL;
- channel_send_call(f->channel_id, method, args, &result, &error);
+ Error err = ERROR_INIT;
+ Object result = NIL = channel_send_call(f->channel_id, method, args, &err);
- if (error) {
- vim_report_error(result.data.string);
+ if (err.set) {
+ vim_report_error(cstr_as_string(err.msg));
api_free_object(result);
return NIL;
}