diff options
Diffstat (limited to 'src/nvim/ex_getln.c')
-rw-r--r-- | src/nvim/ex_getln.c | 46 |
1 files changed, 26 insertions, 20 deletions
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index 786769dc7d..e8375cd3cc 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -51,6 +51,7 @@ #include "nvim/option.h" #include "nvim/os_unix.h" #include "nvim/path.h" +#include "nvim/popupmnu.h" #include "nvim/regexp.h" #include "nvim/screen.h" #include "nvim/search.h" @@ -493,7 +494,7 @@ static uint8_t *command_line_enter(int firstc, long count, int indent) char_u *p = ccline.cmdbuff; - if (ui_is_external(kUICmdline)) { + if (ui_has(kUICmdline)) { ui_call_cmdline_hide(ccline.level); } @@ -613,7 +614,7 @@ static int command_line_execute(VimState *state, int key) if (!(s->c == p_wc && KeyTyped) && s->c != p_wcm && s->c != Ctrl_N && s->c != Ctrl_P && s->c != Ctrl_A && s->c != Ctrl_L) { - if (ui_is_external(kUIWildmenu)) { + if (ui_has(kUIWildmenu)) { ui_call_wildmenu_hide(); } if (s->xpc.xp_numfiles != -1) { @@ -895,7 +896,7 @@ static int command_line_execute(VimState *state, int key) } if (!cmd_silent) { - if (!ui_is_external(kUICmdline)) { + if (!ui_has(kUICmdline)) { ui_cursor_goto(msg_row, 0); } ui_flush(); @@ -1253,7 +1254,7 @@ static int command_line_handle_key(CommandLineState *s) xfree(ccline.cmdbuff); // no commandline to return ccline.cmdbuff = NULL; - if (!cmd_silent && !ui_is_external(kUICmdline)) { + if (!cmd_silent && !ui_has(kUICmdline)) { if (cmdmsg_rl) { msg_col = Columns; } else { @@ -1703,7 +1704,7 @@ static int command_line_handle_key(CommandLineState *s) s->do_abbr = false; // don't do abbreviation now // may need to remove ^ when composing char was typed if (enc_utf8 && utf_iscomposing(s->c) && !cmd_silent) { - if (ui_is_external(kUICmdline)) { + if (ui_has(kUICmdline)) { // TODO(bfredl): why not make unputcmdline also work with true? unputcmdline(); } else { @@ -1967,7 +1968,7 @@ static int command_line_changed(CommandLineState *s) // Do it only when there are no characters left to read // to avoid useless intermediate redraws. // if cmdline is external the ui handles shaping, no redraw needed. - if (!ui_is_external(kUICmdline) && vpeekc() == NUL) { + if (!ui_has(kUICmdline) && vpeekc() == NUL) { redrawcmd(); } } @@ -2834,7 +2835,7 @@ static void draw_cmdline(int start, int len) return; } - if (ui_is_external(kUICmdline)) { + if (ui_has(kUICmdline)) { ccline.special_char = NUL; ccline.redraw_state = kCmdRedrawAll; return; @@ -3027,7 +3028,7 @@ void ui_ext_cmdline_block_leave(void) /// assumes "redrawcmdline()" will already be invoked void cmdline_screen_cleared(void) { - if (!ui_is_external(kUICmdline)) { + if (!ui_has(kUICmdline)) { return; } @@ -3052,7 +3053,7 @@ void cmdline_screen_cleared(void) /// called by ui_flush, do what redraws neccessary to keep cmdline updated. void cmdline_ui_flush(void) { - if (!ui_is_external(kUICmdline)) { + if (!ui_has(kUICmdline)) { return; } int level = ccline.level; @@ -3081,7 +3082,7 @@ void putcmdline(int c, int shift) if (cmd_silent) { return; } - if (!ui_is_external(kUICmdline)) { + if (!ui_has(kUICmdline)) { msg_no_more = true; msg_putchar(c); if (shift) { @@ -3107,7 +3108,7 @@ void unputcmdline(void) return; } msg_no_more = true; - if (ccline.cmdlen == ccline.cmdpos && !ui_is_external(kUICmdline)) { + if (ccline.cmdlen == ccline.cmdpos && !ui_has(kUICmdline)) { msg_putchar(' '); } else { draw_cmdline(ccline.cmdpos, mb_ptr2len(ccline.cmdbuff + ccline.cmdpos)); @@ -3422,7 +3423,7 @@ static void redrawcmdprompt(void) if (cmd_silent) return; - if (ui_is_external(kUICmdline)) { + if (ui_has(kUICmdline)) { ccline.redraw_state = kCmdRedrawAll; return; } @@ -3451,7 +3452,7 @@ void redrawcmd(void) if (cmd_silent) return; - if (ui_is_external(kUICmdline)) { + if (ui_has(kUICmdline)) { draw_cmdline(0, ccline.cmdlen); return; } @@ -3499,7 +3500,7 @@ static void cursorcmd(void) if (cmd_silent) return; - if (ui_is_external(kUICmdline)) { + if (ui_has(kUICmdline)) { if (ccline.redraw_state < kCmdRedrawPos) { ccline.redraw_state = kCmdRedrawPos; } @@ -3524,7 +3525,7 @@ static void cursorcmd(void) void gotocmdline(int clr) { - if (ui_is_external(kUICmdline)) { + if (ui_has(kUICmdline)) { return; } msg_start(); @@ -3612,7 +3613,7 @@ nextwild ( return FAIL; } - if (!ui_is_external(kUIWildmenu)) { + if (!ui_has(kUIWildmenu)) { MSG_PUTS("..."); // show that we are busy ui_flush(); } @@ -3762,7 +3763,7 @@ ExpandOne ( findex = -1; } if (p_wmnu) { - if (ui_is_external(kUIWildmenu)) { + if (ui_has(kUIWildmenu)) { ui_call_wildmenu_select(findex); } else { win_redr_status_matches(xp, xp->xp_numfiles, xp->xp_files, @@ -4117,7 +4118,7 @@ static int showmatches(expand_T *xp, int wildmenu) showtail = cmd_showtail; } - if (ui_is_external(kUIWildmenu)) { + if (ui_has(kUIWildmenu)) { Array args = ARRAY_DICT_INIT; for (i = 0; i < num_files; i++) { ADD(args, STRING_OBJ(cstr_to_string((char *)files_found[i]))); @@ -6051,7 +6052,12 @@ static int open_cmdwin(void) /* Don't execute autocommands while creating the window. */ block_autocmds(); - /* don't use a new tab page */ + + // 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(true); + + // don't use a new tab page cmdmod.tab = 0; cmdmod.noswapfile = 1; @@ -6118,7 +6124,7 @@ static int open_cmdwin(void) curwin->w_cursor.col = ccline.cmdpos; changed_line_abv_curs(); invalidate_botline(); - if (ui_is_external(kUICmdline)) { + if (ui_has(kUICmdline)) { ccline.redraw_state = kCmdRedrawNone; ui_call_cmdline_hide(ccline.level); } |