diff options
author | bfredl <bjorn.linse@gmail.com> | 2024-01-22 09:10:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-22 09:10:34 +0100 |
commit | 21b36c7d7fa351544253316c606651e9ce925b29 (patch) | |
tree | 3b70dc012c818aac531ae0c31b7c1cca6d49b701 /src/nvim/api/private/helpers.c | |
parent | 12d123959f56636473112d86ec5977ef993c58e5 (diff) | |
parent | d66ed4ea468d411668713c3777ad3658f18badf3 (diff) | |
download | rneovim-21b36c7d7fa351544253316c606651e9ce925b29.tar.gz rneovim-21b36c7d7fa351544253316c606651e9ce925b29.tar.bz2 rneovim-21b36c7d7fa351544253316c606651e9ce925b29.zip |
Merge pull request #27076 from glepnir/extmark_hlgroup
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.c | 21 |
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) { |