mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge pull request #20039 from zeertzjq/cmod-tab
fix(api)!: correctly deal with number before :tab
This commit is contained in:
commit
05893aea39
@ -1848,7 +1848,7 @@ nvim_parse_cmd({str}, {opts}) *nvim_parse_cmd()*
|
|||||||
• keeppatterns: (boolean) |:keeppatterns|.
|
• keeppatterns: (boolean) |:keeppatterns|.
|
||||||
• lockmarks: (boolean) |:lockmarks|.
|
• lockmarks: (boolean) |:lockmarks|.
|
||||||
• noswapfile: (boolean) |:noswapfile|.
|
• noswapfile: (boolean) |:noswapfile|.
|
||||||
• tab: (integer) |:tab|.
|
• tab: (integer) |:tab|. -1 when omitted.
|
||||||
• verbose: (integer) |:verbose|. -1 when omitted.
|
• verbose: (integer) |:verbose|. -1 when omitted.
|
||||||
• vertical: (boolean) |:vertical|.
|
• vertical: (boolean) |:vertical|.
|
||||||
• split: (string) Split modifier string, is an empty string when
|
• split: (string) Split modifier string, is an empty string when
|
||||||
|
@ -671,7 +671,7 @@ function M.open_page(count, smods, args)
|
|||||||
local target = ('%s(%s)'):format(name, sect)
|
local target = ('%s(%s)'):format(name, sect)
|
||||||
|
|
||||||
local ok, ret = pcall(function()
|
local ok, ret = pcall(function()
|
||||||
if not smods.tab and find_man() then
|
if smods.tab == -1 and find_man() then
|
||||||
vim.cmd.tag({ target, mods = { silent = true, keepalt = true } })
|
vim.cmd.tag({ target, mods = { silent = true, keepalt = true } })
|
||||||
else
|
else
|
||||||
smods.silent = true
|
smods.silent = true
|
||||||
|
@ -69,7 +69,7 @@
|
|||||||
/// - keeppatterns: (boolean) |:keeppatterns|.
|
/// - keeppatterns: (boolean) |:keeppatterns|.
|
||||||
/// - lockmarks: (boolean) |:lockmarks|.
|
/// - lockmarks: (boolean) |:lockmarks|.
|
||||||
/// - noswapfile: (boolean) |:noswapfile|.
|
/// - noswapfile: (boolean) |:noswapfile|.
|
||||||
/// - tab: (integer) |:tab|.
|
/// - tab: (integer) |:tab|. -1 when omitted.
|
||||||
/// - verbose: (integer) |:verbose|. -1 when omitted.
|
/// - verbose: (integer) |:verbose|. -1 when omitted.
|
||||||
/// - vertical: (boolean) |:vertical|.
|
/// - vertical: (boolean) |:vertical|.
|
||||||
/// - split: (string) Split modifier string, is an empty string when there's no split
|
/// - split: (string) Split modifier string, is an empty string when there's no split
|
||||||
@ -239,7 +239,7 @@ Dictionary nvim_parse_cmd(String str, Dictionary opts, Error *err)
|
|||||||
PUT(mods, "unsilent", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_UNSILENT));
|
PUT(mods, "unsilent", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_UNSILENT));
|
||||||
PUT(mods, "sandbox", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_SANDBOX));
|
PUT(mods, "sandbox", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_SANDBOX));
|
||||||
PUT(mods, "noautocmd", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_NOAUTOCMD));
|
PUT(mods, "noautocmd", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_NOAUTOCMD));
|
||||||
PUT(mods, "tab", INTEGER_OBJ(cmdinfo.cmdmod.cmod_tab));
|
PUT(mods, "tab", INTEGER_OBJ(cmdinfo.cmdmod.cmod_tab - 1));
|
||||||
PUT(mods, "verbose", INTEGER_OBJ(cmdinfo.cmdmod.cmod_verbose - 1));
|
PUT(mods, "verbose", INTEGER_OBJ(cmdinfo.cmdmod.cmod_verbose - 1));
|
||||||
PUT(mods, "browse", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_BROWSE));
|
PUT(mods, "browse", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_BROWSE));
|
||||||
PUT(mods, "confirm", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_CONFIRM));
|
PUT(mods, "confirm", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_CONFIRM));
|
||||||
@ -559,15 +559,17 @@ String nvim_cmd(uint64_t channel_id, Dict(cmd) *cmd, Dict(cmd_opts) *opts, Error
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (HAS_KEY(mods.tab)) {
|
if (HAS_KEY(mods.tab)) {
|
||||||
if (mods.tab.type != kObjectTypeInteger || mods.tab.data.integer < 0) {
|
if (mods.tab.type != kObjectTypeInteger) {
|
||||||
VALIDATION_ERROR("'mods.tab' must be a non-negative Integer");
|
VALIDATION_ERROR("'mods.tab' must be an Integer");
|
||||||
|
} else if ((int)mods.tab.data.integer >= 0) {
|
||||||
|
// Silently ignore negative integers to allow mods.tab to be set to -1.
|
||||||
|
cmdinfo.cmdmod.cmod_tab = (int)mods.tab.data.integer + 1;
|
||||||
}
|
}
|
||||||
cmdinfo.cmdmod.cmod_tab = (int)mods.tab.data.integer + 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HAS_KEY(mods.verbose)) {
|
if (HAS_KEY(mods.verbose)) {
|
||||||
if (mods.verbose.type != kObjectTypeInteger) {
|
if (mods.verbose.type != kObjectTypeInteger) {
|
||||||
VALIDATION_ERROR("'mods.verbose' must be a Integer");
|
VALIDATION_ERROR("'mods.verbose' must be an Integer");
|
||||||
} else if ((int)mods.verbose.data.integer >= 0) {
|
} else if ((int)mods.verbose.data.integer >= 0) {
|
||||||
// Silently ignore negative integers to allow mods.verbose to be set to -1.
|
// Silently ignore negative integers to allow mods.verbose to be set to -1.
|
||||||
cmdinfo.cmdmod.cmod_verbose = (int)mods.verbose.data.integer + 1;
|
cmdinfo.cmdmod.cmod_verbose = (int)mods.verbose.data.integer + 1;
|
||||||
|
@ -2082,7 +2082,7 @@ int nlua_do_ucmd(ucmd_T *cmd, exarg_T *eap, bool preview)
|
|||||||
|
|
||||||
lua_newtable(lstate); // smods table
|
lua_newtable(lstate); // smods table
|
||||||
|
|
||||||
lua_pushinteger(lstate, cmdmod.cmod_tab);
|
lua_pushinteger(lstate, cmdmod.cmod_tab - 1);
|
||||||
lua_setfield(lstate, -2, "tab");
|
lua_setfield(lstate, -2, "tab");
|
||||||
|
|
||||||
lua_pushinteger(lstate, cmdmod.cmod_verbose - 1);
|
lua_pushinteger(lstate, cmdmod.cmod_verbose - 1);
|
||||||
|
@ -136,7 +136,7 @@ describe('nvim_create_user_command', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "",
|
split = "",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -172,7 +172,7 @@ describe('nvim_create_user_command', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "",
|
split = "",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -208,7 +208,7 @@ describe('nvim_create_user_command', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "",
|
split = "",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -244,7 +244,7 @@ describe('nvim_create_user_command', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "botright",
|
split = "botright",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = true,
|
unsilent = true,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -280,7 +280,7 @@ describe('nvim_create_user_command', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "",
|
split = "",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -316,7 +316,7 @@ describe('nvim_create_user_command', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "",
|
split = "",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -364,7 +364,7 @@ describe('nvim_create_user_command', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "",
|
split = "",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -401,7 +401,7 @@ describe('nvim_create_user_command', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "",
|
split = "",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -448,7 +448,7 @@ describe('nvim_create_user_command', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "",
|
split = "",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -523,8 +523,29 @@ describe('nvim_create_user_command', function()
|
|||||||
vim.api.nvim_cmd({ cmd = 'echo', args = { '&verbose' }, mods = opts.smods }, {})
|
vim.api.nvim_cmd({ cmd = 'echo', args = { '&verbose' }, mods = opts.smods }, {})
|
||||||
end, {})
|
end, {})
|
||||||
]]
|
]]
|
||||||
|
|
||||||
eq("3", meths.cmd({ cmd = 'MyEcho', mods = { verbose = 3 } }, { output = true }))
|
eq("3", meths.cmd({ cmd = 'MyEcho', mods = { verbose = 3 } }, { output = true }))
|
||||||
|
|
||||||
|
eq(1, #meths.list_tabpages())
|
||||||
|
exec_lua[[
|
||||||
|
vim.api.nvim_create_user_command('MySplit', function(opts)
|
||||||
|
vim.api.nvim_cmd({ cmd = 'split', mods = opts.smods }, {})
|
||||||
|
end, {})
|
||||||
|
]]
|
||||||
|
meths.cmd({ cmd = 'MySplit' }, {})
|
||||||
|
eq(1, #meths.list_tabpages())
|
||||||
|
eq(2, #meths.list_wins())
|
||||||
|
meths.cmd({ cmd = 'MySplit', mods = { tab = 1 } }, {})
|
||||||
|
eq(2, #meths.list_tabpages())
|
||||||
|
eq(2, funcs.tabpagenr())
|
||||||
|
meths.cmd({ cmd = 'MySplit', mods = { tab = 1 } }, {})
|
||||||
|
eq(3, #meths.list_tabpages())
|
||||||
|
eq(2, funcs.tabpagenr())
|
||||||
|
meths.cmd({ cmd = 'MySplit', mods = { tab = 3 } }, {})
|
||||||
|
eq(4, #meths.list_tabpages())
|
||||||
|
eq(4, funcs.tabpagenr())
|
||||||
|
meths.cmd({ cmd = 'MySplit', mods = { tab = 0 } }, {})
|
||||||
|
eq(5, #meths.list_tabpages())
|
||||||
|
eq(1, funcs.tabpagenr())
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
@ -3206,7 +3206,7 @@ describe('API', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "",
|
split = "",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -3248,7 +3248,7 @@ describe('API', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "",
|
split = "",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -3290,7 +3290,7 @@ describe('API', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "",
|
split = "",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -3332,7 +3332,7 @@ describe('API', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "",
|
split = "",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -3374,7 +3374,7 @@ describe('API', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "",
|
split = "",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -3416,7 +3416,7 @@ describe('API', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "",
|
split = "",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -3458,7 +3458,7 @@ describe('API', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = true,
|
silent = true,
|
||||||
split = "topleft",
|
split = "topleft",
|
||||||
tab = 2,
|
tab = 1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = 15,
|
verbose = 15,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -3503,7 +3503,7 @@ describe('API', function()
|
|||||||
verbose = 0,
|
verbose = 0,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
},
|
},
|
||||||
}, meths.parse_cmd('0verbose unsilent botright confirm filter! /foo/ split foo.txt', {}))
|
}, meths.parse_cmd('0verbose unsilent botright 0tab confirm filter! /foo/ split foo.txt', {}))
|
||||||
end)
|
end)
|
||||||
it('works with user commands', function()
|
it('works with user commands', function()
|
||||||
command('command -bang -nargs=+ -range -addr=lines MyCommand echo foo')
|
command('command -bang -nargs=+ -range -addr=lines MyCommand echo foo')
|
||||||
@ -3541,7 +3541,7 @@ describe('API', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "",
|
split = "",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -3583,7 +3583,7 @@ describe('API', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "",
|
split = "",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -3626,7 +3626,7 @@ describe('API', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "",
|
split = "",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
@ -3719,7 +3719,7 @@ describe('API', function()
|
|||||||
sandbox = false,
|
sandbox = false,
|
||||||
silent = false,
|
silent = false,
|
||||||
split = "",
|
split = "",
|
||||||
tab = 0,
|
tab = -1,
|
||||||
unsilent = false,
|
unsilent = false,
|
||||||
verbose = -1,
|
verbose = -1,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
|
Loading…
Reference in New Issue
Block a user