aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/api/private/helpers.c
diff options
context:
space:
mode:
authorglepnir <glephunter@gmail.com>2024-01-17 20:14:26 +0800
committerglepnir <glephunter@gmail.com>2024-01-20 21:31:11 +0800
commit646fdf1073433e2bdeec3433f6cbdf8f4be37098 (patch)
treeabb6c88e011a52bc3900aee40fe0cab6ce77a95d /src/nvim/api/private/helpers.c
parentba9f86a9cee58dc32ab875da1fd7eac9bc9e88d7 (diff)
downloadrneovim-646fdf1073433e2bdeec3433f6cbdf8f4be37098.tar.gz
rneovim-646fdf1073433e2bdeec3433f6cbdf8f4be37098.tar.bz2
rneovim-646fdf1073433e2bdeec3433f6cbdf8f4be37098.zip
refactor(api): use hl id directly in nvim_buf_set_extmark
Diffstat (limited to 'src/nvim/api/private/helpers.c')
-rw-r--r--src/nvim/api/private/helpers.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/nvim/api/private/helpers.c b/src/nvim/api/private/helpers.c
index 677e1ce9fd..8f30ac7c8f 100644
--- a/src/nvim/api/private/helpers.c
+++ b/src/nvim/api/private/helpers.c
@@ -936,13 +936,26 @@ bool api_dict_to_keydict(void *retval, FieldHashfn hashy, Dictionary dict, Error
char *mem = ((char *)retval + field->ptr_off);
Object *value = &dict.items[i].value;
+
if (field->type == kObjectTypeNil) {
*(Object *)mem = *value;
} else if (field->type == kObjectTypeInteger) {
- VALIDATE_T(field->str, kObjectTypeInteger, value->type, {
- return false;
- });
- *(Integer *)mem = value->data.integer;
+ if (field->is_hlgroup) {
+ int hl_id = 0;
+ if (value->type != kObjectTypeNil) {
+ hl_id = object_to_hl_id(*value, k.data, err);
+ if (ERROR_SET(err)) {
+ return false;
+ }
+ }
+ *(Integer *)mem = hl_id;
+ } else {
+ VALIDATE_T(field->str, kObjectTypeInteger, value->type, {
+ return false;
+ });
+
+ *(Integer *)mem = value->data.integer;
+ }
} else if (field->type == kObjectTypeFloat) {
Float *val = (Float *)mem;
if (value->type == kObjectTypeInteger) {