aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/ui.lua
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/lua/vim/ui.lua')
-rw-r--r--runtime/lua/vim/ui.lua38
1 files changed, 38 insertions, 0 deletions
diff --git a/runtime/lua/vim/ui.lua b/runtime/lua/vim/ui.lua
index 5eab20fc54..9568b60fd0 100644
--- a/runtime/lua/vim/ui.lua
+++ b/runtime/lua/vim/ui.lua
@@ -9,6 +9,11 @@ local M = {}
--- - format_item (function item -> text)
--- Function to format an
--- individual item from `items`. Defaults to `tostring`.
+--- - kind (string|nil)
+--- Arbitrary hint string indicating the item shape.
+--- Plugins reimplementing `vim.ui.select` may wish to
+--- use this to infer the structure or semantics of
+--- `items`, or the context in which select() was called.
---@param on_choice function ((item|nil, idx|nil) -> ())
--- Called once the user made a choice.
--- `idx` is the 1-based index of `item` within `item`.
@@ -32,5 +37,38 @@ function M.select(items, opts, on_choice)
end
end
+--- Prompts the user for input
+---
+---@param opts table Additional options. See |input()|
+--- - prompt (string|nil)
+--- Text of the prompt. Defaults to `Input: `.
+--- - default (string|nil)
+--- Default reply to the input
+--- - completion (string|nil)
+--- Specifies type of completion supported
+--- for input. Supported types are the same
+--- that can be supplied to a user-defined
+--- command using the "-complete=" argument.
+--- See |:command-completion|
+--- - highlight (function)
+--- Function that will be used for highlighting
+--- user inputs.
+---@param on_confirm function ((input|nil) -> ())
+--- Called once the user confirms or abort the input.
+--- `input` is what the user typed.
+--- `nil` if the user aborted the dialog.
+function M.input(opts, on_confirm)
+ vim.validate {
+ on_confirm = { on_confirm, 'function', false },
+ }
+
+ opts = opts or {}
+ local input = vim.fn.input(opts)
+ if #input > 0 then
+ on_confirm(input)
+ else
+ on_confirm(nil)
+ end
+end
return M