aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/api/vim.c4
-rw-r--r--src/nvim/syntax.c26
-rw-r--r--src/nvim/ui.c25
-rw-r--r--test/functional/api/highlight_spec.lua42
4 files changed, 52 insertions, 45 deletions
diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c
index 0459d9235d..bf3e4bc6a0 100644
--- a/src/nvim/api/vim.c
+++ b/src/nvim/api/vim.c
@@ -78,7 +78,7 @@ Dictionary nvim_get_hl_by_name(String name, Error *err)
/// Retrieves highlight description from its id
///
-/// @param hl_id highlight id as returned by hlID()
+/// @param hl_id highlight id as returned by |hlID()|
/// @see nvim_get_hl_by_name
Dictionary nvim_get_hl_by_id(Integer hl_id, Error *err)
FUNC_API_SINCE(3)
@@ -89,7 +89,7 @@ Dictionary nvim_get_hl_by_id(Integer hl_id, Error *err)
return dic;
}
int attrcode = syn_id2attr((int)hl_id);
- return get_attr_by_id(attrcode, err);
+ return hl_get_attr_by_id(attrcode, err);
}
/// Passes input keys to Nvim.
diff --git a/src/nvim/syntax.c b/src/nvim/syntax.c
index fdb7196fc4..2f48cc8757 100644
--- a/src/nvim/syntax.c
+++ b/src/nvim/syntax.c
@@ -8221,6 +8221,32 @@ RgbValue name_to_color(const uint8_t *name)
return -1;
}
+/// Retrieves attribute description from its id
+///
+/// @param attr_id attribute id
+Dictionary hl_get_attr_by_id(Integer attr_id, Error *err)
+{
+ HlAttrs attrs = HLATTRS_INIT;
+ Dictionary dic = ARRAY_DICT_INIT;
+
+ if (attr_id == 0) {
+ goto end;
+ }
+
+ attrentry_T *aep = syn_cterm_attr2entry((int)attr_id);
+ if (!aep) {
+ api_set_error(err, kErrorTypeException,
+ "Invalid attribute id %d", attr_id);
+ return dic;
+ }
+
+ attrs = attrentry2hlattrs(aep, p_tgc);
+
+end:
+ return hlattrs2dict(attrs);
+}
+
+
/**************************************
* End of Highlighting stuff *
**************************************/
diff --git a/src/nvim/ui.c b/src/nvim/ui.c
index 184ae56cf2..afe7a51d43 100644
--- a/src/nvim/ui.c
+++ b/src/nvim/ui.c
@@ -166,31 +166,6 @@ void ui_event(char *name, Array args)
}
}
-/// Retrieves attribute description from its id
-///
-/// @param attr_id attribute id
-Dictionary get_attr_by_id(Integer attr_id, Error *err)
-{
- HlAttrs attrs = HLATTRS_INIT;
- Dictionary dic = ARRAY_DICT_INIT;
-
- if (attr_id == 0) {
- goto end;
- }
-
- attrentry_T *aep = syn_cterm_attr2entry((int)attr_id);
- if (!aep) {
- api_set_error(err, kErrorTypeException,
- "Invalid attribute id %d", attr_id);
- return dic;
- }
-
- attrs = attrentry2hlattrs(aep, p_tgc);
-
-end:
- return hlattrs2dict(attrs);
-}
-
/// Converts an attrentry_T into an HlAttrs
///
diff --git a/test/functional/api/highlight_spec.lua b/test/functional/api/highlight_spec.lua
index 1aacfaed03..a5d3871d13 100644
--- a/test/functional/api/highlight_spec.lua
+++ b/test/functional/api/highlight_spec.lua
@@ -8,47 +8,53 @@ local ok = helpers.ok
local meths = helpers.meths
-describe('highlight api', function()
+describe('highlight api',function()
+ local expected_rgb = { background = Screen.colors.Yellow,
+ foreground = Screen.colors.Red,
+ special = Screen.colors.Blue,
+ bold = true,
+ }
+
+ local expected_cterm = { background = 10,
+ underline = true,
+ }
before_each(function()
- clear('--cmd', 'set termguicolors')
+ clear()
+ command("hi NewHighlight cterm=underline ctermbg=green guifg=red guibg=yellow guisp=blue gui=bold")
end)
it("nvim_get_hl_by_id", function()
- local expected_hl = { background = Screen.colors.Yellow,
- foreground = Screen.colors.Red,
- special = Screen.colors.Blue
- }
+ local hl_id = eval("hlID('NewHighlight')")
- command('hi NewHighlight guifg=red guibg=yellow guisp=blue')
+ eq(expected_cterm, nvim("get_hl_by_id", hl_id))
- local hl_id = eval("hlID('NewHighlight')")
- eq(expected_hl, nvim("get_hl_by_id", hl_id))
+ command('set termguicolors')
+ hl_id = eval("hlID('NewHighlight')")
+ eq(expected_rgb, nvim("get_hl_by_id", hl_id))
- -- assume there is no hl with 30000
+ -- assume there is no hl with id 30000
local err, emsg = pcall(meths.get_hl_by_id, 30000)
eq(false, err)
ok(string.find(emsg, 'Invalid highlight id') ~= nil)
end)
it("nvim_get_hl_by_name", function()
- local expected_hl = { background = Screen.colors.Yellow,
+ local expected_normal = { background = Screen.colors.Yellow,
foreground = Screen.colors.Red }
-- test "Normal" hl defaults
eq({}, nvim("get_hl_by_name", 'Normal'))
- command('hi NewHighlight guifg=red guibg=yellow')
- eq(expected_hl, nvim("get_hl_by_name", 'NewHighlight'))
+ eq(expected_cterm, nvim("get_hl_by_name", 'NewHighlight'))
+ command('set termguicolors')
+ eq(expected_rgb, nvim("get_hl_by_name", 'NewHighlight'))
command('hi Normal guifg=red guibg=yellow')
- eq(expected_hl, nvim("get_hl_by_name", 'Normal'))
+ eq(expected_normal, nvim("get_hl_by_name", 'Normal'))
+
local err, emsg = pcall(meths.get_hl_by_name , 'unknown_highlight')
eq(false, err)
ok(string.find(emsg, 'Invalid highlight name') ~= nil)
end)
-
-
-
end)
-