diff options
author | Sebastian Lyng Johansen <seblyng98@gmail.com> | 2021-11-07 16:13:53 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-07 07:13:53 -0800 |
commit | 16d4af6d2f549709aa55510f5ae52238c5cadb9c (patch) | |
tree | 69737a428f78aa7f7df1540038c5d6d463d3e875 /runtime/lua/vim/ui.lua | |
parent | b74916cfd21fc307ad4898a519e1407411a01ba5 (diff) | |
download | rneovim-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.lua | 33 |
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 |