mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge pull request #18354 from famiu/feat/api/parse_cmd
fix(api): make `nvim_parse_cmd` preserve command modifiers
This commit is contained in:
commit
a23440bf7c
@ -2624,27 +2624,27 @@ Dictionary nvim_parse_cmd(String str, Dictionary opts, Error *err)
|
|||||||
PUT(mods, "emsg_silent", BOOLEAN_OBJ(cmdinfo.emsg_silent));
|
PUT(mods, "emsg_silent", BOOLEAN_OBJ(cmdinfo.emsg_silent));
|
||||||
PUT(mods, "sandbox", BOOLEAN_OBJ(cmdinfo.sandbox));
|
PUT(mods, "sandbox", BOOLEAN_OBJ(cmdinfo.sandbox));
|
||||||
PUT(mods, "noautocmd", BOOLEAN_OBJ(cmdinfo.noautocmd));
|
PUT(mods, "noautocmd", BOOLEAN_OBJ(cmdinfo.noautocmd));
|
||||||
PUT(mods, "tab", INTEGER_OBJ(cmdmod.tab));
|
PUT(mods, "tab", INTEGER_OBJ(cmdinfo.cmdmod.tab));
|
||||||
PUT(mods, "verbose", INTEGER_OBJ(cmdinfo.verbose));
|
PUT(mods, "verbose", INTEGER_OBJ(cmdinfo.verbose));
|
||||||
PUT(mods, "browse", BOOLEAN_OBJ(cmdmod.browse));
|
PUT(mods, "browse", BOOLEAN_OBJ(cmdinfo.cmdmod.browse));
|
||||||
PUT(mods, "confirm", BOOLEAN_OBJ(cmdmod.confirm));
|
PUT(mods, "confirm", BOOLEAN_OBJ(cmdinfo.cmdmod.confirm));
|
||||||
PUT(mods, "hide", BOOLEAN_OBJ(cmdmod.hide));
|
PUT(mods, "hide", BOOLEAN_OBJ(cmdinfo.cmdmod.hide));
|
||||||
PUT(mods, "keepalt", BOOLEAN_OBJ(cmdmod.keepalt));
|
PUT(mods, "keepalt", BOOLEAN_OBJ(cmdinfo.cmdmod.keepalt));
|
||||||
PUT(mods, "keepjumps", BOOLEAN_OBJ(cmdmod.keepjumps));
|
PUT(mods, "keepjumps", BOOLEAN_OBJ(cmdinfo.cmdmod.keepjumps));
|
||||||
PUT(mods, "keepmarks", BOOLEAN_OBJ(cmdmod.keepmarks));
|
PUT(mods, "keepmarks", BOOLEAN_OBJ(cmdinfo.cmdmod.keepmarks));
|
||||||
PUT(mods, "keeppatterns", BOOLEAN_OBJ(cmdmod.keeppatterns));
|
PUT(mods, "keeppatterns", BOOLEAN_OBJ(cmdinfo.cmdmod.keeppatterns));
|
||||||
PUT(mods, "lockmarks", BOOLEAN_OBJ(cmdmod.lockmarks));
|
PUT(mods, "lockmarks", BOOLEAN_OBJ(cmdinfo.cmdmod.lockmarks));
|
||||||
PUT(mods, "noswapfile", BOOLEAN_OBJ(cmdmod.noswapfile));
|
PUT(mods, "noswapfile", BOOLEAN_OBJ(cmdinfo.cmdmod.noswapfile));
|
||||||
PUT(mods, "vertical", BOOLEAN_OBJ(cmdmod.split & WSP_VERT));
|
PUT(mods, "vertical", BOOLEAN_OBJ(cmdinfo.cmdmod.split & WSP_VERT));
|
||||||
|
|
||||||
const char *split;
|
const char *split;
|
||||||
if (cmdmod.split & WSP_BOT) {
|
if (cmdinfo.cmdmod.split & WSP_BOT) {
|
||||||
split = "botright";
|
split = "botright";
|
||||||
} else if (cmdmod.split & WSP_TOP) {
|
} else if (cmdinfo.cmdmod.split & WSP_TOP) {
|
||||||
split = "topleft";
|
split = "topleft";
|
||||||
} else if (cmdmod.split & WSP_BELOW) {
|
} else if (cmdinfo.cmdmod.split & WSP_BELOW) {
|
||||||
split = "belowright";
|
split = "belowright";
|
||||||
} else if (cmdmod.split & WSP_ABOVE) {
|
} else if (cmdinfo.cmdmod.split & WSP_ABOVE) {
|
||||||
split = "aboveleft";
|
split = "aboveleft";
|
||||||
} else {
|
} else {
|
||||||
split = "";
|
split = "";
|
||||||
|
@ -1306,6 +1306,7 @@ bool parse_cmdline(char_u *cmdline, exarg_T *eap, CmdParseInfo *cmdinfo)
|
|||||||
char *errormsg = NULL;
|
char *errormsg = NULL;
|
||||||
char *cmd;
|
char *cmd;
|
||||||
char *p;
|
char *p;
|
||||||
|
cmdmod_T save_cmdmod = cmdmod;
|
||||||
|
|
||||||
// Initialize cmdinfo
|
// Initialize cmdinfo
|
||||||
memset(cmdinfo, 0, sizeof(*cmdinfo));
|
memset(cmdinfo, 0, sizeof(*cmdinfo));
|
||||||
@ -1346,6 +1347,7 @@ bool parse_cmdline(char_u *cmdline, exarg_T *eap, CmdParseInfo *cmdinfo)
|
|||||||
p_verbose = eap->verbose_save;
|
p_verbose = eap->verbose_save;
|
||||||
}
|
}
|
||||||
cmdinfo->cmdmod = cmdmod;
|
cmdinfo->cmdmod = cmdmod;
|
||||||
|
cmdmod = save_cmdmod;
|
||||||
|
|
||||||
// Save location after command modifiers
|
// Save location after command modifiers
|
||||||
cmd = eap->cmd;
|
cmd = eap->cmd;
|
||||||
|
Loading…
Reference in New Issue
Block a user