mirror of
https://github.com/neovim/neovim.git
synced 2024-12-29 14:41:06 -07:00
parent
37b755ab47
commit
9f994bb699
@ -35,6 +35,7 @@
|
||||
#include "nvim/os/input.h"
|
||||
#include "nvim/viml/parser/expressions.h"
|
||||
#include "nvim/viml/parser/parser.h"
|
||||
#include "nvim/ui.h"
|
||||
|
||||
#define LINE_BUFFER_SIZE 4096
|
||||
|
||||
@ -1468,3 +1469,12 @@ Float nvim__id_float(Float flt)
|
||||
{
|
||||
return flt;
|
||||
}
|
||||
|
||||
/// Gets a list of dictionaries representing attached UIs.
|
||||
///
|
||||
/// @return Array of UI dictionaries
|
||||
Array nvim_list_uis(void)
|
||||
FUNC_API_SINCE(4)
|
||||
{
|
||||
return ui_array();
|
||||
}
|
||||
|
@ -526,3 +526,19 @@ bool ui_is_external(UIExtension widget)
|
||||
{
|
||||
return ui_ext[widget];
|
||||
}
|
||||
|
||||
Array ui_array(void)
|
||||
{
|
||||
Array all_uis = ARRAY_DICT_INIT;
|
||||
for (size_t i = 0; i < ui_count; i++) {
|
||||
Dictionary dic = ARRAY_DICT_INIT;
|
||||
PUT(dic, "width", INTEGER_OBJ(uis[i]->width));
|
||||
PUT(dic, "height", INTEGER_OBJ(uis[i]->height));
|
||||
PUT(dic, "rgb", BOOLEAN_OBJ(uis[i]->rgb));
|
||||
for (UIExtension j = 0; j < kUIExtCount; j++) {
|
||||
PUT(dic, ui_ext_names[j], BOOLEAN_OBJ(uis[i]->ui_ext[j]));
|
||||
}
|
||||
ADD(all_uis, DICTIONARY_OBJ(dic));
|
||||
}
|
||||
return all_uis;
|
||||
}
|
||||
|
@ -745,7 +745,7 @@ describe('api', function()
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('list_runtime_paths', function()
|
||||
describe('nvim_list_runtime_paths', function()
|
||||
it('returns nothing with empty &runtimepath', function()
|
||||
meths.set_option('runtimepath', '')
|
||||
eq({}, meths.list_runtime_paths())
|
||||
@ -998,4 +998,43 @@ describe('api', function()
|
||||
it, _check_parsing, hl, fmtn)
|
||||
end)
|
||||
|
||||
describe('nvim_list_uis', function()
|
||||
it('returns empty if --headless', function()
|
||||
-- --embed implies --headless.
|
||||
eq({}, nvim("list_uis"))
|
||||
end)
|
||||
it('returns attached UIs', function()
|
||||
local screen = Screen.new(20, 4)
|
||||
screen:attach()
|
||||
local expected = {
|
||||
{
|
||||
ext_cmdline = false,
|
||||
ext_popupmenu = false,
|
||||
ext_tabline = false,
|
||||
ext_wildmenu = false,
|
||||
height = 4,
|
||||
rgb = true,
|
||||
width = 20,
|
||||
}
|
||||
}
|
||||
eq(expected, nvim("list_uis"))
|
||||
|
||||
screen:detach()
|
||||
screen = Screen.new(44, 99)
|
||||
screen:attach({ rgb = false })
|
||||
expected = {
|
||||
{
|
||||
ext_cmdline = false,
|
||||
ext_popupmenu = false,
|
||||
ext_tabline = false,
|
||||
ext_wildmenu = false,
|
||||
height = 99,
|
||||
rgb = false,
|
||||
width = 44,
|
||||
}
|
||||
}
|
||||
eq(expected, nvim("list_uis"))
|
||||
end)
|
||||
end)
|
||||
|
||||
end)
|
||||
|
Loading…
Reference in New Issue
Block a user