mirror of
https://github.com/neovim/neovim.git
synced 2026-05-02 20:15:03 +00:00
feat(ui): add vim.ui.select and use in code actions (#15771)
Continuation of https://github.com/neovim/neovim/pull/15202 A plugin like telescope could override it with a fancy implementation and then users would get the telescope-ui within each plugin that utilizes the vim.ui.select function. There are some plugins which override the `textDocument/codeAction` handler solely to provide a different UI. With custom client commands and soon codeAction resolve support, it becomes more difficult to implement the handler right - so having a dedicated way to override the picking function will be useful.
This commit is contained in:
committed by
GitHub
parent
6736ee8be5
commit
63fde086d9
46
test/functional/lua/ui_spec.lua
Normal file
46
test/functional/lua/ui_spec.lua
Normal file
@@ -0,0 +1,46 @@
|
||||
local helpers = require('test.functional.helpers')(after_each)
|
||||
local eq = helpers.eq
|
||||
local exec_lua = helpers.exec_lua
|
||||
local clear = helpers.clear
|
||||
|
||||
describe('vim.ui', function()
|
||||
before_each(function()
|
||||
clear()
|
||||
end)
|
||||
|
||||
|
||||
describe('select', function()
|
||||
it('can select an item', function()
|
||||
local result = exec_lua[[
|
||||
local items = {
|
||||
{ name = 'Item 1' },
|
||||
{ name = 'Item 2' },
|
||||
}
|
||||
local opts = {
|
||||
format_entry = function(entry)
|
||||
return entry.name
|
||||
end
|
||||
}
|
||||
local selected
|
||||
local cb = function(item)
|
||||
selected = item
|
||||
end
|
||||
-- inputlist would require input and block the test;
|
||||
local choices
|
||||
vim.fn.inputlist = function(x)
|
||||
choices = x
|
||||
return 1
|
||||
end
|
||||
vim.ui.select(items, opts, cb)
|
||||
vim.wait(100, function() return selected ~= nil end)
|
||||
return {selected, choices}
|
||||
]]
|
||||
eq({ name = 'Item 1' }, result[1])
|
||||
eq({
|
||||
'Select one of:',
|
||||
'1: Item 1',
|
||||
'2: Item 2',
|
||||
}, result[2])
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
Reference in New Issue
Block a user