diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2020-11-01 21:54:51 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-01 21:54:51 +0100 |
commit | d1091bc658a7992b9c3eaaba1b701187a60f0b5e (patch) | |
tree | eeb5cdfc10bfe2aa968c63186551ef6564e6f2f3 /src/nvim/api/private/helpers.c | |
parent | 720d442d19de4908e22ecf18223358bb7bbb0753 (diff) | |
parent | c146eddc8b768f1cd395ea0ce54c19e64eff0c08 (diff) | |
download | rneovim-d1091bc658a7992b9c3eaaba1b701187a60f0b5e.tar.gz rneovim-d1091bc658a7992b9c3eaaba1b701187a60f0b5e.tar.bz2 rneovim-d1091bc658a7992b9c3eaaba1b701187a60f0b5e.zip |
Merge pull request #12870 from bfredl/themepark
Color themes (per window/line) and lua theme providers
Diffstat (limited to 'src/nvim/api/private/helpers.c')
-rw-r--r-- | src/nvim/api/private/helpers.c | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/src/nvim/api/private/helpers.c b/src/nvim/api/private/helpers.c index 981d41ae6e..a9b1676879 100644 --- a/src/nvim/api/private/helpers.c +++ b/src/nvim/api/private/helpers.c @@ -1625,11 +1625,8 @@ free_exit: /// @param what The name of the object, used for error message /// @param nil_value What to return if the type is nil. /// @param err Set if there was an error in converting to a bool -bool api_coerce_to_bool( - Object obj, - const char *what, - bool nil_value, - Error *err) +bool api_object_to_bool(Object obj, const char *what, + bool nil_value, Error *err) { if (obj.type == kObjectTypeBoolean) { return obj.data.boolean; @@ -1654,3 +1651,30 @@ const char *describe_ns(NS ns_id) }) return "(UNKNOWN PLUGIN)"; } + +DecorationProvider *get_provider(NS ns_id, bool force) +{ + ssize_t i; + for (i = 0; i < (ssize_t)kv_size(decoration_providers); i++) { + DecorationProvider *item = &kv_A(decoration_providers, i); + if (item->ns_id == ns_id) { + return item; + } else if (item->ns_id > ns_id) { + break; + } + } + + if (!force) { + return NULL; + } + + for (ssize_t j = (ssize_t)kv_size(decoration_providers)-1; j >= i; j++) { + // allocates if needed: + (void)kv_a(decoration_providers, (size_t)j+1); + kv_A(decoration_providers, (size_t)j+1) = kv_A(decoration_providers, j); + } + DecorationProvider *item = &kv_a(decoration_providers, (size_t)i); + *item = DECORATION_PROVIDER_INIT(ns_id); + + return item; +} |