diff options
author | bfredl <bjorn.linse@gmail.com> | 2023-09-09 13:01:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-09 13:01:40 +0200 |
commit | d4e80a051e54a60eae05880c6aa89d8abde6e935 (patch) | |
tree | 3bca87adfa14d9957a049c1f0f2f16e59c9c574b /src | |
parent | 420b94eeece989a72b8891110f7d272f50eb0a1e (diff) | |
parent | 8afb3a49c0762eb60368aee0314e6de261daa6ef (diff) | |
download | rneovim-d4e80a051e54a60eae05880c6aa89d8abde6e935.tar.gz rneovim-d4e80a051e54a60eae05880c6aa89d8abde6e935.tar.bz2 rneovim-d4e80a051e54a60eae05880c6aa89d8abde6e935.zip |
Merge pull request #25039 from glepnir/fix_hl
fix(highlight): add create param in nvim_get_hl api function
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/api/keysets.h | 1 | ||||
-rw-r--r-- | src/nvim/api/vim.c | 1 | ||||
-rw-r--r-- | src/nvim/highlight_group.c | 8 |
3 files changed, 9 insertions, 1 deletions
diff --git a/src/nvim/api/keysets.h b/src/nvim/api/keysets.h index 1f5c7069a9..0a07e8c16f 100644 --- a/src/nvim/api/keysets.h +++ b/src/nvim/api/keysets.h @@ -181,6 +181,7 @@ typedef struct { Integer id; String name; Boolean link; + Boolean create; } Dict(get_highlight); typedef struct { diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c index 411d63b921..da10ab5bd4 100644 --- a/src/nvim/api/vim.c +++ b/src/nvim/api/vim.c @@ -96,6 +96,7 @@ Integer nvim_get_hl_id_by_name(String name) /// - name: (string) Get a highlight definition by name. /// - id: (integer) Get a highlight definition by id. /// - link: (boolean, default true) Show linked group name instead of effective definition |:hi-link|. +/// - create: (boolean, default true) When highlight group doesn't exist create it. /// /// @param[out] err Error details, if any. /// @return Highlight groups as a map from group name to a highlight definition map as in |nvim_set_hl()|, diff --git a/src/nvim/highlight_group.c b/src/nvim/highlight_group.c index c4d140d1e1..b970e752bb 100644 --- a/src/nvim/highlight_group.c +++ b/src/nvim/highlight_group.c @@ -1569,7 +1569,13 @@ Dictionary ns_get_hl_defs(NS ns_id, Dict(get_highlight) *opts, Arena *arena, Err Boolean link = GET_BOOL_OR_TRUE(opts, get_highlight, link); int id = -1; if (HAS_KEY(opts, get_highlight, name)) { - id = syn_check_group(opts->name.data, opts->name.size); + Boolean create = GET_BOOL_OR_TRUE(opts, get_highlight, create); + id = create ? syn_check_group(opts->name.data, opts->name.size) + : syn_name2id_len(opts->name.data, opts->name.size); + if (id == 0 && !create) { + Dictionary attrs = ARRAY_DICT_INIT; + return attrs; + } } else if (HAS_KEY(opts, get_highlight, id)) { id = (int)opts->id; } |