diff options
author | bfredl <bjorn.linse@gmail.com> | 2022-02-17 19:37:45 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-17 19:37:45 +0100 |
commit | 3b5d456d3c8a46d9247041947fec710afe3ca8d4 (patch) | |
tree | 4a57eb61d3af92791f89428422f3f55623077bda | |
parent | f4e24f1eabfac439ac09d9646582f682c02cfe3f (diff) | |
parent | e35a2d86fc2a8ed19aef00af9f35991385e833f1 (diff) | |
download | rneovim-3b5d456d3c8a46d9247041947fec710afe3ca8d4.tar.gz rneovim-3b5d456d3c8a46d9247041947fec710afe3ca8d4.tar.bz2 rneovim-3b5d456d3c8a46d9247041947fec710afe3ca8d4.zip |
Merge pull request #17444 from clason/hl-empty-cterm
fix(api): allow empty list for cterm in nvim_set_hl
-rw-r--r-- | src/nvim/highlight.c | 4 | ||||
-rw-r--r-- | test/functional/api/highlight_spec.lua | 6 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/nvim/highlight.c b/src/nvim/highlight.c index e8a22ce6a8..8b998ff62e 100644 --- a/src/nvim/highlight.c +++ b/src/nvim/highlight.c @@ -876,6 +876,10 @@ HlAttrs dict2hlattrs(Dict(highlight) *dict, bool use_rgb, int *link_id, Error *e CHECK_FLAG(cterm, cterm_mask, strikethrough, , HL_STRIKETHROUGH); CHECK_FLAG(cterm, cterm_mask, nocombine, , HL_NOCOMBINE); + } else if (dict->cterm.type == kObjectTypeArray && dict->cterm.data.array.size == 0) { + // empty list from Lua API should clear all cterm attributes + // TODO(clason): handle via gen_api_dispatch + cterm_mask_provided = true; } else if (HAS_KEY(dict->cterm)) { api_set_error(err, kErrorTypeValidation, "'cterm' must be a Dictionary."); } diff --git a/test/functional/api/highlight_spec.lua b/test/functional/api/highlight_spec.lua index 416945f379..03b407f4e0 100644 --- a/test/functional/api/highlight_spec.lua +++ b/test/functional/api/highlight_spec.lua @@ -242,6 +242,12 @@ describe("API: set highlight", function() eq(highlight2_result, meths.get_hl_by_name('Test_hl', false)) end) + it ("can set emtpy cterm attr", function() + local ns = get_ns() + meths.set_hl(ns, 'Test_hl', { cterm = {} }) + eq({}, meths.get_hl_by_name('Test_hl', false)) + end) + it ("cterm attr defaults to gui attr", function() local ns = get_ns() meths.set_hl(ns, 'Test_hl', highlight1) |