aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-12-31 15:38:45 -0500
committerJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-12-31 16:44:53 -0500
commit723e009214ab321ad75051d3c36e3379b1c5e5a8 (patch)
tree10e57056695804f3479176d28fc62f77b56bf20f /src
parent74b343a6f23de43590ab79750848f66e2fa9a7f7 (diff)
downloadrneovim-723e009214ab321ad75051d3c36e3379b1c5e5a8.tar.gz
rneovim-723e009214ab321ad75051d3c36e3379b1c5e5a8.tar.bz2
rneovim-723e009214ab321ad75051d3c36e3379b1c5e5a8.zip
Revert "vim-patch:8.1.1192: mode is not cleared when leaving Insert mode with mapped Esc"
This reverts commit 44bb7147e40743d9a70ee3a2663a7a7dacec7b13. Avoid regression mentioned in https://github.com/neovim/neovim/commit/c64cce906e7ed828d331e1786c985ff7aa734546#commitcomment-45554271
Diffstat (limited to 'src')
-rw-r--r--src/nvim/ex_cmds.c9
-rw-r--r--src/nvim/ex_docmd.c4
-rw-r--r--src/nvim/ex_getln.c4
-rw-r--r--src/nvim/globals.h5
-rw-r--r--src/nvim/main.c2
-rw-r--r--src/nvim/message.c30
-rw-r--r--src/nvim/screen.c16
-rw-r--r--src/nvim/spellfile.c2
-rw-r--r--src/nvim/testdir/test_messages.vim28
9 files changed, 31 insertions, 69 deletions
diff --git a/src/nvim/ex_cmds.c b/src/nvim/ex_cmds.c
index a7d97c904b..ae389a6727 100644
--- a/src/nvim/ex_cmds.c
+++ b/src/nvim/ex_cmds.c
@@ -3713,9 +3713,8 @@ static buf_T *do_sub(exarg_T *eap, proftime_T timeout,
redraw_later(curwin, SOME_VALID);
curwin->w_p_fen = save_p_fen;
- if (msg_row == Rows - 1) {
- msg_didout = false; // avoid a scroll-up
- }
+ if (msg_row == Rows - 1)
+ msg_didout = FALSE; /* avoid a scroll-up */
msg_starthere();
i = msg_scroll;
msg_scroll = 0; /* truncate msg when
@@ -3734,8 +3733,8 @@ static buf_T *do_sub(exarg_T *eap, proftime_T timeout,
typed = plain_vgetc();
no_mapping--;
- // clear the question
- msg_didout = false; // don't scroll up
+ /* clear the question */
+ msg_didout = FALSE; /* don't scroll up */
msg_col = 0;
gotocmdline(TRUE);
diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c
index 35b0755bd8..003c78b241 100644
--- a/src/nvim/ex_docmd.c
+++ b/src/nvim/ex_docmd.c
@@ -8069,8 +8069,8 @@ static void ex_redraw(exarg_T *eap)
RedrawingDisabled = r;
p_lz = p;
- // Reset msg_didout, so that a message that's there is overwritten.
- msg_didout = false;
+ /* Reset msg_didout, so that a message that's there is overwritten. */
+ msg_didout = FALSE;
msg_col = 0;
/* No need to wait after an intentional redraw. */
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c
index 0bc52f1e97..49a3c6e4b8 100644
--- a/src/nvim/ex_getln.c
+++ b/src/nvim/ex_getln.c
@@ -2746,8 +2746,8 @@ redraw:
no_mapping--;
- // make following messages go to the next line
- msg_didout = false;
+ /* make following messages go to the next line */
+ msg_didout = FALSE;
msg_col = 0;
if (msg_row < Rows - 1) {
msg_row++;
diff --git a/src/nvim/globals.h b/src/nvim/globals.h
index d0c00c1d59..31b905e858 100644
--- a/src/nvim/globals.h
+++ b/src/nvim/globals.h
@@ -139,9 +139,8 @@ EXTERN int mod_mask INIT(= 0x0); // current key modifiers
EXTERN int cmdline_row;
EXTERN int redraw_cmdline INIT(= false); // cmdline must be redrawn
-EXTERN bool redraw_mode INIT(= false); // mode must be redrawn
EXTERN int clear_cmdline INIT(= false); // cmdline must be cleared
-EXTERN bool mode_displayed INIT(= false); // mode is being displayed
+EXTERN int mode_displayed INIT(= false); // mode is being displayed
EXTERN int cmdline_star INIT(= false); // cmdline is crypted
EXTERN int redrawing_cmdline INIT(= false); // cmdline is being redrawn
EXTERN int cmdline_was_last_drawn INIT(= false); // cmdline was last drawn
@@ -200,7 +199,7 @@ EXTERN int keep_msg_attr INIT(= 0); // highlight attr for keep_msg
EXTERN int keep_msg_more INIT(= false); // keep_msg was set by msgmore()
EXTERN int need_fileinfo INIT(= false); // do fileinfo() after redraw
EXTERN int msg_scroll INIT(= false); // msg_start() will scroll
-EXTERN bool msg_didout INIT(= false); // msg_outstr() was used in line
+EXTERN int msg_didout INIT(= false); // msg_outstr() was used in line
EXTERN int msg_didany INIT(= false); // msg_outstr() was used at all
EXTERN int msg_nowait INIT(= false); // don't wait for this msg
EXTERN int emsg_off INIT(= 0); // don't display errors for now,
diff --git a/src/nvim/main.c b/src/nvim/main.c
index e068b2361c..8bf745966e 100644
--- a/src/nvim/main.c
+++ b/src/nvim/main.c
@@ -2006,7 +2006,7 @@ static void version(void)
info_message = TRUE; // use mch_msg(), not mch_errmsg()
list_version();
msg_putchar('\n');
- msg_didout = false;
+ msg_didout = FALSE;
}
/// Prints help message for "nvim -h" or "nvim --help".
diff --git a/src/nvim/message.c b/src/nvim/message.c
index 530b930fed..02a7732f5c 100644
--- a/src/nvim/message.c
+++ b/src/nvim/message.c
@@ -1128,11 +1128,11 @@ void wait_return(int redraw)
if (p_more) {
if (c == 'b' || c == 'k' || c == 'u' || c == 'g'
|| c == K_UP || c == K_PAGEUP) {
- if (msg_scrolled > Rows) {
- // scroll back to show older messages
+ if (msg_scrolled > Rows)
+ /* scroll back to show older messages */
do_more_prompt(c);
- } else {
- msg_didout = false;
+ else {
+ msg_didout = FALSE;
c = K_IGNORE;
msg_col =
cmdmsg_rl ? Columns - 1 :
@@ -2097,17 +2097,15 @@ static void msg_puts_display(const char_u *str, int maxlen, int attr,
store_sb_text((char_u **)&sb_str, (char_u *)s, attr, &sb_col, true);
}
- if (*s == '\n') { // go to next line
- msg_didout = false; // remember that line is empty
- if (cmdmsg_rl) {
+ if (*s == '\n') { /* go to next line */
+ msg_didout = FALSE; /* remember that line is empty */
+ if (cmdmsg_rl)
msg_col = Columns - 1;
- } else {
+ else
msg_col = 0;
- }
- if (++msg_row >= Rows) { // safety check
+ if (++msg_row >= Rows) /* safety check */
msg_row = Rows - 1;
- }
- } else if (*s == '\r') { // go to column 0
+ } else if (*s == '\r') { /* go to column 0 */
msg_col = 0;
} else if (*s == '\b') { /* go to previous char */
if (msg_col)
@@ -2880,10 +2878,10 @@ void repeat_message(void)
ui_cursor_goto(msg_row, msg_col); /* put cursor back */
} else if (State == HITRETURN || State == SETWSIZE) {
if (msg_row == Rows - 1) {
- // Avoid drawing the "hit-enter" prompt below the previous one,
- // overwrite it. Esp. useful when regaining focus and a
- // FocusGained autocmd exists but didn't draw anything.
- msg_didout = false;
+ /* Avoid drawing the "hit-enter" prompt below the previous one,
+ * overwrite it. Esp. useful when regaining focus and a
+ * FocusGained autocmd exists but didn't draw anything. */
+ msg_didout = FALSE;
msg_col = 0;
msg_clr_eos();
}
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
index 9ed91fcd89..dcf6657de2 100644
--- a/src/nvim/screen.c
+++ b/src/nvim/screen.c
@@ -620,7 +620,7 @@ int update_screen(int type)
/* Clear or redraw the command line. Done last, because scrolling may
* mess up the command line. */
- if (clear_cmdline || redraw_cmdline || redraw_mode) {
+ if (clear_cmdline || redraw_cmdline) {
showmode();
}
@@ -6569,7 +6569,7 @@ bool skip_showmode(void)
|| msg_silent != 0
|| !redrawing()
|| (char_avail() && !KeyTyped)) {
- redraw_mode = true; // show mode later
+ redraw_cmdline = true; // show mode later
return true;
}
return false;
@@ -6580,7 +6580,6 @@ bool skip_showmode(void)
// If clear_cmdline is TRUE, clear the rest of the cmdline.
// If clear_cmdline is FALSE there may be a message there that needs to be
// cleared only if a mode is shown.
-// If redraw_mode is true show or clear the mode.
// Return the length of the message (0 if no message).
int showmode(void)
{
@@ -6727,11 +6726,10 @@ int showmode(void)
need_clear = true;
}
- mode_displayed = true;
- if (need_clear || clear_cmdline || redraw_mode) {
+ mode_displayed = TRUE;
+ if (need_clear || clear_cmdline)
msg_clr_eos();
- }
- msg_didout = false; // overwrite this message
+ msg_didout = FALSE; /* overwrite this message */
length = msg_col;
msg_col = 0;
msg_no_more = false;
@@ -6740,9 +6738,6 @@ int showmode(void)
} else if (clear_cmdline && msg_silent == 0) {
// Clear the whole command line. Will reset "clear_cmdline".
msg_clr_cmdline();
- } else if (redraw_mode) {
- msg_pos_mode();
- msg_clr_eos();
}
// NB: also handles clearing the showmode if it was emtpy or disabled
@@ -6759,7 +6754,6 @@ int showmode(void)
win_redr_ruler(last, true);
}
redraw_cmdline = false;
- redraw_mode = false;
clear_cmdline = false;
return length;
diff --git a/src/nvim/spellfile.c b/src/nvim/spellfile.c
index 90945eafd7..90af010164 100644
--- a/src/nvim/spellfile.c
+++ b/src/nvim/spellfile.c
@@ -3942,7 +3942,7 @@ static int tree_add_word(spellinfo_T *spin, char_u *word, wordnode_T *root, int
msg_start();
msg_puts(_(msg_compressing));
msg_clr_eos();
- msg_didout = false;
+ msg_didout = FALSE;
msg_col = 0;
ui_flush();
}
diff --git a/src/nvim/testdir/test_messages.vim b/src/nvim/testdir/test_messages.vim
index d0a8f342c9..4051288c7f 100644
--- a/src/nvim/testdir/test_messages.vim
+++ b/src/nvim/testdir/test_messages.vim
@@ -120,34 +120,6 @@ func Test_mode_message_at_leaving_insert_by_ctrl_c()
call delete(testfile)
endfunc
-func Test_mode_message_at_leaving_insert_with_esc_mapped()
- if !has('terminal') || has('gui_running')
- return
- endif
-
- " Set custom statusline built by user-defined function.
- let testfile = 'Xtest.vim'
- call writefile([
- \ 'set laststatus=2',
- \ 'inoremap <Esc> <Esc>00',
- \ ], testfile)
-
- let rows = 10
- let buf = term_start([GetVimProg(), '--clean', '-S', testfile], {'term_rows': rows})
- call term_wait(buf, 200)
- call assert_equal('run', job_status(term_getjob(buf)))
-
- call term_sendkeys(buf, "i")
- call WaitForAssert({-> assert_match('^-- INSERT --\s*$', term_getline(buf, rows))})
- call term_sendkeys(buf, "\<Esc>")
- call WaitForAssert({-> assert_match('^\s*$', term_getline(buf, rows))})
-
- call term_sendkeys(buf, ":qall!\<CR>")
- call WaitForAssert({-> assert_equal('dead', job_status(term_getjob(buf)))})
- exe buf . 'bwipe!'
- call delete(testfile)
-endfunc
-
func Test_echospace()
set noruler noshowcmd laststatus=1
call assert_equal(&columns - 1, v:echospace)