Mercurial > vim
diff src/ex_getln.c @ 18043:5a0d5f8e1778 v8.1.2017
patch 8.1.2017: cannot execute commands after closing the cmdline window
Commit: https://github.com/vim/vim/commit/96e38a86a710fb6daec4550ac1667f019dc3a40e
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Sep 9 18:35:33 2019 +0200
patch 8.1.2017: cannot execute commands after closing the cmdline window
Problem: Cannot execute commands after closing the cmdline window.
Solution: Also trigger BufEnter and WinEnter. (closes https://github.com/vim/vim/issues/4762)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 09 Sep 2019 18:45:04 +0200 |
parents | 684a15da9929 |
children | a2870e6f5b45 |
line wrap: on
line diff
--- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -4069,30 +4069,26 @@ open_cmdwin(void) } set_bufref(&old_curbuf, curbuf); - /* Save current window sizes. */ + // Save current window sizes. win_size_save(&winsizes); - /* Don't execute autocommands while creating the window. */ - block_autocmds(); - // When using completion in Insert mode with <C-R>=<C-F> one can open the // command line window, but we don't want the popup menu then. pum_undisplay(); - /* don't use a new tab page */ + // don't use a new tab page cmdmod.tab = 0; cmdmod.noswapfile = 1; - /* Create a window for the command-line buffer. */ + // Create a window for the command-line buffer. if (win_split((int)p_cwh, WSP_BOT) == FAIL) { beep_flush(); - unblock_autocmds(); return K_IGNORE; } cmdwin_type = get_cmdline_type(); - /* Create the command-line buffer empty. */ + // Create the command-line buffer empty. (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL); (void)setfname(curbuf, (char_u *)"[Command Line]", NULL, TRUE); set_option_value((char_u *)"bt", 0L, (char_u *)"nofile", OPT_LOCAL); @@ -4106,12 +4102,10 @@ open_cmdwin(void) # endif RESET_BINDING(curwin); - /* Do execute autocommands for setting the filetype (load syntax). */ - unblock_autocmds(); - /* But don't allow switching to another buffer. */ + // Don't allow switching to another buffer. ++curbuf_lock; - /* Showing the prompt may have set need_wait_return, reset it. */ + // Showing the prompt may have set need_wait_return, reset it. need_wait_return = FALSE; histtype = hist_char2type(cmdwin_type); @@ -4126,11 +4120,11 @@ open_cmdwin(void) } --curbuf_lock; - /* Reset 'textwidth' after setting 'filetype' (the Vim filetype plugin - * sets 'textwidth' to 78). */ + // Reset 'textwidth' after setting 'filetype' (the Vim filetype plugin + // sets 'textwidth' to 78). curbuf->b_p_tw = 0; - /* Fill the buffer with the history. */ + // Fill the buffer with the history. init_history(); if (get_hislen() > 0) { @@ -4167,9 +4161,9 @@ open_cmdwin(void) setmouse(); # endif - /* Trigger CmdwinEnter autocommands. */ + // Trigger CmdwinEnter autocommands. trigger_cmd_autocmd(cmdwin_type, EVENT_CMDWINENTER); - if (restart_edit != 0) /* autocmd with ":startinsert" */ + if (restart_edit != 0) // autocmd with ":startinsert" stuffcharReadbuff(K_NOP); i = RedrawingDisabled; @@ -4187,11 +4181,11 @@ open_cmdwin(void) save_KeyTyped = KeyTyped; # endif - /* Trigger CmdwinLeave autocommands. */ + // Trigger CmdwinLeave autocommands. trigger_cmd_autocmd(cmdwin_type, EVENT_CMDWINLEAVE); # ifdef FEAT_FOLDING - /* Restore KeyTyped in case it is modified by autocommands */ + // Restore KeyTyped in case it is modified by autocommands KeyTyped = save_KeyTyped; # endif @@ -4268,10 +4262,8 @@ open_cmdwin(void) } } - /* Don't execute autocommands while deleting the window. */ - block_autocmds(); # ifdef FEAT_CONCEAL - /* Avoid command-line window first character being concealed. */ + // Avoid command-line window first character being concealed. curwin->w_p_cole = 0; # endif wp = curwin; @@ -4279,15 +4271,13 @@ open_cmdwin(void) win_goto(old_curwin); win_close(wp, TRUE); - /* win_close() may have already wiped the buffer when 'bh' is - * set to 'wipe' */ + // win_close() may have already wiped the buffer when 'bh' is + // set to 'wipe' if (bufref_valid(&bufref)) close_buffer(NULL, bufref.br_buf, DOBUF_WIPE, FALSE); - /* Restore window sizes. */ + // Restore window sizes. win_size_restore(&winsizes); - - unblock_autocmds(); } ga_clear(&winsizes); @@ -4303,7 +4293,7 @@ open_cmdwin(void) return cmdwin_result; } -#endif /* FEAT_CMDWIN */ +#endif // FEAT_CMDWIN /* * Used for commands that either take a simple command string argument, or: