aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/ex_getln.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/ex_getln.c')
-rw-r--r--src/nvim/ex_getln.c46
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);
}