diff options
author | TJ DeVries <devries.timothyj@gmail.com> | 2020-10-20 20:26:53 -0400 |
---|---|---|
committer | TJ DeVries <devries.timothyj@gmail.com> | 2020-10-22 16:08:32 -0400 |
commit | 1afe6dd2f4578fa7e6758565db36fa36db72b236 (patch) | |
tree | 3306edabe19bc89438a7205c803008ee33533d19 | |
parent | 78556aba7d0934ba92de376c267e3e82f4f77f1d (diff) | |
download | rneovim-1afe6dd2f4578fa7e6758565db36fa36db72b236.tar.gz rneovim-1afe6dd2f4578fa7e6758565db36fa36db72b236.tar.bz2 rneovim-1afe6dd2f4578fa7e6758565db36fa36db72b236.zip |
fixup: bfredl comments
-rw-r--r-- | src/nvim/api/buffer.c | 22 | ||||
-rw-r--r-- | src/nvim/api/private/helpers.c | 4 | ||||
-rw-r--r-- | src/nvim/screen.c | 2 |
3 files changed, 11 insertions, 17 deletions
diff --git a/src/nvim/api/buffer.c b/src/nvim/api/buffer.c index ac23c6df92..3c585fd1fd 100644 --- a/src/nvim/api/buffer.c +++ b/src/nvim/api/buffer.c @@ -953,18 +953,6 @@ Boolean nvim_buf_is_loaded(Buffer buffer) return buf && buf->b_ml.ml_mfp != NULL; } -#define UNPACK_BOOL_RV(result, v, message, rv) \ - if (v->type == kObjectTypeBoolean) { \ - result = v->data.boolean; \ - } else if (v->type == kObjectTypeInteger) { \ - result = v->data.integer; \ - } else { \ - api_set_error(err, kErrorTypeValidation, message); \ - return rv; \ - } - -#define UNPACK_BOOL(result, v, message) UNPACK_BOOL_RV(result, v, message, ) - /// Deletes the buffer. See |:bwipeout| /// /// @param buffer Buffer handle, or 0 for current buffer @@ -986,15 +974,19 @@ void nvim_buf_delete(Buffer buffer, Dictionary opts, Error *err) String k = opts.items[i].key; Object *v = &opts.items[i].value; if (strequal("force", k.data)) { - UNPACK_BOOL(force, v, "force must be a boolean") + force = api_coerce_to_bool(*v, "force", false, err); } else if (strequal("unload", k.data)) { - UNPACK_BOOL(unload, v, "unload must be a boolean") + unload = api_coerce_to_bool(*v, "unload", false, err); } else { api_set_error(err, kErrorTypeValidation, "unexpected key: %s", k.data); return; } } + if (ERROR_SET(err)) { + return; + } + int result = do_buffer( unload ? DOBUF_UNLOAD : DOBUF_WIPE, DOBUF_FIRST, @@ -1449,7 +1441,7 @@ Integer nvim_buf_set_extmark(Buffer buffer, Integer ns_id, goto error; } } else if (strequal("ephemeral", k.data)) { - ephemeral = api_is_truthy(*v, "ephemeral", false, err); + ephemeral = api_coerce_to_bool(*v, "ephemeral", false, err); if (ERROR_SET(err)) { goto error; } diff --git a/src/nvim/api/private/helpers.c b/src/nvim/api/private/helpers.c index 84517c99fc..dbc4e16d09 100644 --- a/src/nvim/api/private/helpers.c +++ b/src/nvim/api/private/helpers.c @@ -1619,7 +1619,9 @@ free_exit: return virt_text; } -bool api_is_truthy(Object obj, const char *what, bool nil_truthy, Error *err) +/// Force obj to bool. +/// If it fails, returns false and sets err +bool api_coerce_to_bool(Object obj, const char *what, bool nil_truthy, Error *err) { if (obj.type == kObjectTypeBoolean) { return obj.data.boolean; diff --git a/src/nvim/screen.c b/src/nvim/screen.c index 9f450888a2..df0c5ce791 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -176,7 +176,7 @@ static bool provider_invoke(NS ns_id, const char *name, LuaRef ref, textlock--; if (!ERROR_SET(&err) - && api_is_truthy(ret, "provider %s retval", default_true, &err)) { + && api_coerce_to_bool(ret, "provider %s retval", default_true, &err)) { return true; } |