diff options
author | bfredl <bjorn.linse@gmail.com> | 2022-05-02 08:27:20 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-02 08:27:20 +0200 |
commit | a23440bf7cf5102f18092bb4239c198e217bf928 (patch) | |
tree | 5e7d4d08ba5be6f3a6dbcfcdd5f81981f6e3547f /src | |
parent | 371dfb1746325ff9f219d4a42262e6409b951362 (diff) | |
parent | bfb72f637b9d8dc9e4a05479c2b1a0fe1fbc5e36 (diff) | |
download | rneovim-a23440bf7cf5102f18092bb4239c198e217bf928.tar.gz rneovim-a23440bf7cf5102f18092bb4239c198e217bf928.tar.bz2 rneovim-a23440bf7cf5102f18092bb4239c198e217bf928.zip |
Merge pull request #18354 from famiu/feat/api/parse_cmd
fix(api): make `nvim_parse_cmd` preserve command modifiers
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/api/vim.c | 30 | ||||
-rw-r--r-- | src/nvim/ex_docmd.c | 2 |
2 files changed, 17 insertions, 15 deletions
diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c index 3d1b5eade4..061653c5af 100644 --- a/src/nvim/api/vim.c +++ b/src/nvim/api/vim.c @@ -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, "sandbox", BOOLEAN_OBJ(cmdinfo.sandbox)); 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, "browse", BOOLEAN_OBJ(cmdmod.browse)); - PUT(mods, "confirm", BOOLEAN_OBJ(cmdmod.confirm)); - PUT(mods, "hide", BOOLEAN_OBJ(cmdmod.hide)); - PUT(mods, "keepalt", BOOLEAN_OBJ(cmdmod.keepalt)); - PUT(mods, "keepjumps", BOOLEAN_OBJ(cmdmod.keepjumps)); - PUT(mods, "keepmarks", BOOLEAN_OBJ(cmdmod.keepmarks)); - PUT(mods, "keeppatterns", BOOLEAN_OBJ(cmdmod.keeppatterns)); - PUT(mods, "lockmarks", BOOLEAN_OBJ(cmdmod.lockmarks)); - PUT(mods, "noswapfile", BOOLEAN_OBJ(cmdmod.noswapfile)); - PUT(mods, "vertical", BOOLEAN_OBJ(cmdmod.split & WSP_VERT)); + PUT(mods, "browse", BOOLEAN_OBJ(cmdinfo.cmdmod.browse)); + PUT(mods, "confirm", BOOLEAN_OBJ(cmdinfo.cmdmod.confirm)); + PUT(mods, "hide", BOOLEAN_OBJ(cmdinfo.cmdmod.hide)); + PUT(mods, "keepalt", BOOLEAN_OBJ(cmdinfo.cmdmod.keepalt)); + PUT(mods, "keepjumps", BOOLEAN_OBJ(cmdinfo.cmdmod.keepjumps)); + PUT(mods, "keepmarks", BOOLEAN_OBJ(cmdinfo.cmdmod.keepmarks)); + PUT(mods, "keeppatterns", BOOLEAN_OBJ(cmdinfo.cmdmod.keeppatterns)); + PUT(mods, "lockmarks", BOOLEAN_OBJ(cmdinfo.cmdmod.lockmarks)); + PUT(mods, "noswapfile", BOOLEAN_OBJ(cmdinfo.cmdmod.noswapfile)); + PUT(mods, "vertical", BOOLEAN_OBJ(cmdinfo.cmdmod.split & WSP_VERT)); const char *split; - if (cmdmod.split & WSP_BOT) { + if (cmdinfo.cmdmod.split & WSP_BOT) { split = "botright"; - } else if (cmdmod.split & WSP_TOP) { + } else if (cmdinfo.cmdmod.split & WSP_TOP) { split = "topleft"; - } else if (cmdmod.split & WSP_BELOW) { + } else if (cmdinfo.cmdmod.split & WSP_BELOW) { split = "belowright"; - } else if (cmdmod.split & WSP_ABOVE) { + } else if (cmdinfo.cmdmod.split & WSP_ABOVE) { split = "aboveleft"; } else { split = ""; diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c index 7b5d14a404..b2a71b386b 100644 --- a/src/nvim/ex_docmd.c +++ b/src/nvim/ex_docmd.c @@ -1306,6 +1306,7 @@ bool parse_cmdline(char_u *cmdline, exarg_T *eap, CmdParseInfo *cmdinfo) char *errormsg = NULL; char *cmd; char *p; + cmdmod_T save_cmdmod = cmdmod; // Initialize 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; } cmdinfo->cmdmod = cmdmod; + cmdmod = save_cmdmod; // Save location after command modifiers cmd = eap->cmd; |