aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/ex_cmds.c4
-rw-r--r--src/nvim/ex_cmds.lua2
-rw-r--r--src/nvim/ex_getln.c8
-rw-r--r--src/nvim/option.c4
4 files changed, 13 insertions, 5 deletions
diff --git a/src/nvim/ex_cmds.c b/src/nvim/ex_cmds.c
index dbf11514cf..15b49b69ce 100644
--- a/src/nvim/ex_cmds.c
+++ b/src/nvim/ex_cmds.c
@@ -2352,8 +2352,8 @@ int do_ecmd(
} else {
// <VN> We could instead free the synblock
// and re-attach to buffer, perhaps.
- if (curwin->w_buffer != NULL
- && curwin->w_s == &(curwin->w_buffer->b_s)) {
+ if (curwin->w_buffer == NULL
+ || curwin->w_s == &(curwin->w_buffer->b_s)) {
curwin->w_s = &(buf->b_s);
}
diff --git a/src/nvim/ex_cmds.lua b/src/nvim/ex_cmds.lua
index c87e3d4c66..31776a70e7 100644
--- a/src/nvim/ex_cmds.lua
+++ b/src/nvim/ex_cmds.lua
@@ -3076,7 +3076,7 @@ return {
},
{
command='wincmd',
- flags=bit.bor(NEEDARG, WORD1, RANGE, NOTADR),
+ flags=bit.bor(NEEDARG, WORD1, RANGE, NOTADR, CMDWIN),
addr_type=ADDR_WINDOWS,
func='ex_wincmd',
},
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c
index 3372edb8fd..d152dfa271 100644
--- a/src/nvim/ex_getln.c
+++ b/src/nvim/ex_getln.c
@@ -6183,9 +6183,13 @@ static int open_cmdwin(void)
ccline.cmdbuff = NULL;
} else
ccline.cmdbuff = vim_strsave(get_cursor_line_ptr());
- if (ccline.cmdbuff == NULL)
+ if (ccline.cmdbuff == NULL) {
+ ccline.cmdbuff = vim_strsave((char_u *)"");
+ ccline.cmdlen = 0;
+ ccline.cmdbufflen = 1;
+ ccline.cmdpos = 0;
cmdwin_result = Ctrl_C;
- else {
+ } else {
ccline.cmdlen = (int)STRLEN(ccline.cmdbuff);
ccline.cmdbufflen = ccline.cmdlen + 1;
ccline.cmdpos = curwin->w_cursor.col;
diff --git a/src/nvim/option.c b/src/nvim/option.c
index ed845df416..50c172b580 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -3243,6 +3243,10 @@ did_set_string_option (
did_filetype = true;
apply_autocmds(EVENT_FILETYPE, curbuf->b_p_ft,
curbuf->b_fname, true, curbuf);
+ // Just in case the old "curbuf" is now invalid
+ if (varp != &(curbuf->b_p_ft)) {
+ varp = NULL;
+ }
}
}
if (varp == &(curwin->w_s->b_p_spl)) {