aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/ui.lua
diff options
context:
space:
mode:
authorSebastian Lyng Johansen <seblyng98@gmail.com>2021-11-07 16:13:53 +0100
committerGitHub <noreply@github.com>2021-11-07 07:13:53 -0800
commit16d4af6d2f549709aa55510f5ae52238c5cadb9c (patch)
tree69737a428f78aa7f7df1540038c5d6d463d3e875 /runtime/lua/vim/ui.lua
parentb74916cfd21fc307ad4898a519e1407411a01ba5 (diff)
downloadrneovim-16d4af6d2f549709aa55510f5ae52238c5cadb9c.tar.gz
rneovim-16d4af6d2f549709aa55510f5ae52238c5cadb9c.tar.bz2
rneovim-16d4af6d2f549709aa55510f5ae52238c5cadb9c.zip
feat(ui): add vim.ui.input and use in lsp rename (#15959)
* vim.ui.input is an overridable function that prompts for user input * take an opts table and the `on_confirm` callback, see `:help vim.ui.input` for more details * defaults to a wrapper around vim.fn.input(opts) * switches the built-in client's rename handler to use vim.ui.input by default
Diffstat (limited to 'runtime/lua/vim/ui.lua')
-rw-r--r--runtime/lua/vim/ui.lua33
1 files changed, 33 insertions, 0 deletions
diff --git a/runtime/lua/vim/ui.lua b/runtime/lua/vim/ui.lua
index adc1e16759..9568b60fd0 100644
--- a/runtime/lua/vim/ui.lua
+++ b/runtime/lua/vim/ui.lua
@@ -37,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