aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author0x74696d6d79 <34635512+tzx@users.noreply.github.com>2022-06-28 05:53:15 -0400
committerGitHub <noreply@github.com>2022-06-28 02:53:15 -0700
commitee6b21e8430ea810ba2e3e9163b941386a2e1d65 (patch)
tree144e681d0e7fc79107dcbffb91a2eed6bd5a25cf
parent014a88799a1d175ad121c520c9cc5bd0bb2d8813 (diff)
downloadrneovim-ee6b21e8430ea810ba2e3e9163b941386a2e1d65.tar.gz
rneovim-ee6b21e8430ea810ba2e3e9163b941386a2e1d65.tar.bz2
rneovim-ee6b21e8430ea810ba2e3e9163b941386a2e1d65.zip
fix(vim.ui.input): accept nil or empty "opts" #19109
Fix #18143
-rw-r--r--runtime/doc/lua.txt3
-rw-r--r--runtime/lua/vim/ui.lua4
-rw-r--r--test/functional/lua/ui_spec.lua16
3 files changed, 19 insertions, 4 deletions
diff --git a/runtime/doc/lua.txt b/runtime/doc/lua.txt
index b79699c89b..0e72e89672 100644
--- a/runtime/doc/lua.txt
+++ b/runtime/doc/lua.txt
@@ -1935,8 +1935,7 @@ input({opts}, {on_confirm}) *vim.ui.input()*
Parameters: ~
{opts} (table) Additional options. See |input()|
- • prompt (string|nil) Text of the prompt.
- Defaults to `Input:`.
+ • prompt (string|nil) Text of the prompt
• default (string|nil) Default reply to the
input
• completion (string|nil) Specifies type of
diff --git a/runtime/lua/vim/ui.lua b/runtime/lua/vim/ui.lua
index 77bca7f6c4..6f1ce3089d 100644
--- a/runtime/lua/vim/ui.lua
+++ b/runtime/lua/vim/ui.lua
@@ -59,7 +59,7 @@ end
---
---@param opts table Additional options. See |input()|
--- - prompt (string|nil)
---- Text of the prompt. Defaults to `Input: `.
+--- Text of the prompt
--- - default (string|nil)
--- Default reply to the input
--- - completion (string|nil)
@@ -87,7 +87,7 @@ function M.input(opts, on_confirm)
on_confirm = { on_confirm, 'function', false },
})
- opts = opts or {}
+ opts = (opts and not vim.tbl_isempty(opts)) and opts or vim.empty_dict()
local input = vim.fn.input(opts)
if #input > 0 then
on_confirm(input)
diff --git a/test/functional/lua/ui_spec.lua b/test/functional/lua/ui_spec.lua
index 2371939204..3fcb2dec8d 100644
--- a/test/functional/lua/ui_spec.lua
+++ b/test/functional/lua/ui_spec.lua
@@ -2,6 +2,8 @@ local helpers = require('test.functional.helpers')(after_each)
local eq = helpers.eq
local exec_lua = helpers.exec_lua
local clear = helpers.clear
+local feed = helpers.feed
+local eval = helpers.eval
describe('vim.ui', function()
before_each(function()
@@ -67,5 +69,19 @@ describe('vim.ui', function()
eq('Inputted text', result[1])
eq('Input: ', result[2])
end)
+
+ it('can input text on nil opt', function()
+ feed(':lua vim.ui.input(nil, function(input) result = input end)<cr>')
+ eq('', eval('v:errmsg'))
+ feed('Inputted text<cr>')
+ eq('Inputted text', exec_lua('return result'))
+ end)
+
+ it('can input text on {} opt', function()
+ feed(':lua vim.ui.input({}, function(input) result = input end)<cr>')
+ eq('', eval('v:errmsg'))
+ feed('abcdefg<cr>')
+ eq('abcdefg', exec_lua('return result'))
+ end)
end)
end)