aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTJ DeVries <devries.timothyj@gmail.com>2020-10-20 20:26:53 -0400
committerTJ DeVries <devries.timothyj@gmail.com>2020-10-22 16:08:32 -0400
commit1afe6dd2f4578fa7e6758565db36fa36db72b236 (patch)
tree3306edabe19bc89438a7205c803008ee33533d19
parent78556aba7d0934ba92de376c267e3e82f4f77f1d (diff)
downloadrneovim-1afe6dd2f4578fa7e6758565db36fa36db72b236.tar.gz
rneovim-1afe6dd2f4578fa7e6758565db36fa36db72b236.tar.bz2
rneovim-1afe6dd2f4578fa7e6758565db36fa36db72b236.zip
fixup: bfredl comments
-rw-r--r--src/nvim/api/buffer.c22
-rw-r--r--src/nvim/api/private/helpers.c4
-rw-r--r--src/nvim/screen.c2
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;
}