diff options
author | Javier Lopez <graulopezjavier@gmail.com> | 2022-08-21 08:19:29 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-21 15:19:29 +0200 |
commit | dde90f0ca4e394667afe39c18f4a4dabdd8a6666 (patch) | |
tree | 47a8e51fe02f013c15157cb87ae18bcdb15c5141 /test/functional/api/command_spec.lua | |
parent | 5928d5c2f11754e1d2cc383a1568c3664a38207d (diff) | |
download | rneovim-dde90f0ca4e394667afe39c18f4a4dabdd8a6666.tar.gz rneovim-dde90f0ca4e394667afe39c18f4a4dabdd8a6666.tar.bz2 rneovim-dde90f0ca4e394667afe39c18f4a4dabdd8a6666.zip |
fix(api/command): fargs behavior when no arguments are passed (#19862)
Problem: A command defined with `nargs="?"` returns `fargs={""}` to
a Lua callback when executed with no arguments, which is inconsistent
with how`nargs="*"` behaves.
Solution: Pass `fargs={}` for no argument with `nargs="?"` as well.
Diffstat (limited to 'test/functional/api/command_spec.lua')
-rw-r--r-- | test/functional/api/command_spec.lua | 86 |
1 files changed, 84 insertions, 2 deletions
diff --git a/test/functional/api/command_spec.lua b/test/functional/api/command_spec.lua index 7eb7ee73f9..890710b6e6 100644 --- a/test/functional/api/command_spec.lua +++ b/test/functional/api/command_spec.lua @@ -326,7 +326,7 @@ describe('nvim_create_user_command', function() -- f-args doesn't split when command nargs is 1 or "?" exec_lua [[ result = {} - vim.api.nvim_create_user_command('CommandWithOneArg', function(opts) + vim.api.nvim_create_user_command('CommandWithOneOrNoArg', function(opts) result = opts end, { nargs = "?", @@ -366,7 +366,89 @@ describe('nvim_create_user_command', function() count = 2, reg = "", }, exec_lua [[ - vim.api.nvim_command('CommandWithOneArg hello I\'m one argument') + vim.api.nvim_command('CommandWithOneOrNoArg hello I\'m one argument') + return result + ]]) + + -- f-args is an empty table if no args were passed + eq({ + args = "", + fargs = {}, + bang = false, + line1 = 1, + line2 = 1, + mods = "", + smods = { + browse = false, + confirm = false, + emsg_silent = false, + hide = false, + keepalt = false, + keepjumps = false, + keepmarks = false, + keeppatterns = false, + lockmarks = false, + noautocmd = false, + noswapfile = false, + sandbox = false, + silent = false, + split = "", + tab = 0, + unsilent = false, + verbose = -1, + vertical = false, + }, + range = 0, + count = 2, + reg = "", + }, exec_lua [[ + vim.api.nvim_command('CommandWithOneOrNoArg') + return result + ]]) + + -- f-args is an empty table when the command nargs=0 + exec_lua [[ + result = {} + vim.api.nvim_create_user_command('CommandWithNoArgs', function(opts) + result = opts + end, { + nargs = 0, + bang = true, + count = 2, + }) + ]] + eq({ + args = "", + fargs = {}, + bang = false, + line1 = 1, + line2 = 1, + mods = "", + smods = { + browse = false, + confirm = false, + emsg_silent = false, + hide = false, + keepalt = false, + keepjumps = false, + keepmarks = false, + keeppatterns = false, + lockmarks = false, + noautocmd = false, + noswapfile = false, + sandbox = false, + silent = false, + split = "", + tab = 0, + unsilent = false, + verbose = -1, + vertical = false, + }, + range = 0, + count = 2, + reg = "", + }, exec_lua [[ + vim.cmd('CommandWithNoArgs') return result ]]) |