diff options
-rw-r--r-- | src/nvim/ex_cmds.c | 4 | ||||
-rw-r--r-- | src/nvim/ex_cmds.lua | 2 | ||||
-rw-r--r-- | src/nvim/ex_getln.c | 8 | ||||
-rw-r--r-- | src/nvim/option.c | 4 |
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)) { |