diff options
-rw-r--r-- | src/nvim/edit.c | 2 | ||||
-rw-r--r-- | src/nvim/ex_cmds.c | 9 | ||||
-rw-r--r-- | src/nvim/ex_docmd.c | 4 | ||||
-rw-r--r-- | src/nvim/ex_getln.c | 4 | ||||
-rw-r--r-- | src/nvim/getchar.c | 6 | ||||
-rw-r--r-- | src/nvim/globals.h | 5 | ||||
-rw-r--r-- | src/nvim/main.c | 2 | ||||
-rw-r--r-- | src/nvim/message.c | 30 | ||||
-rw-r--r-- | src/nvim/screen.c | 37 | ||||
-rw-r--r-- | src/nvim/spellfile.c | 2 | ||||
-rw-r--r-- | src/nvim/testdir/test_bufline.vim | 2 | ||||
-rw-r--r-- | src/nvim/testdir/test_messages.vim | 59 | ||||
-rw-r--r-- | test/functional/eval/null_spec.lua | 2 | ||||
-rw-r--r-- | test/functional/eval/timer_spec.lua | 4 | ||||
-rw-r--r-- | test/functional/ui/float_spec.lua | 43 | ||||
-rw-r--r-- | test/functional/ui/screen.lua | 4 | ||||
-rw-r--r-- | test/functional/ui/searchhl_spec.lua | 21 |
17 files changed, 56 insertions, 180 deletions
diff --git a/src/nvim/edit.c b/src/nvim/edit.c index 962ef9b245..4546aa4419 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -7803,7 +7803,7 @@ static bool ins_esc(long *count, int cmdchar, bool nomove) // Otherwise remove the mode message. if (reg_recording != 0 || restart_edit != NUL) { showmode(); - } else if (p_smd && (got_int || !skip_showmode())) { + } else if (p_smd) { MSG(""); } // Exit Insert mode 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/getchar.c b/src/nvim/getchar.c index eddbdef739..2e2993ed26 100644 --- a/src/nvim/getchar.c +++ b/src/nvim/getchar.c @@ -2490,10 +2490,8 @@ int inchar( } // Always flush the output characters when getting input characters - // from the user and not just peeking. - if (wait_time == -1L || wait_time > 10L) { - ui_flush(); - } + // from the user. + ui_flush(); // Fill up to a third of the buffer, because each character may be // tripled below. 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..a7fd2bfcc6 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(); } @@ -6559,28 +6559,12 @@ void grid_del_lines(ScreenGrid *grid, int row, int line_count, int end, int col, return; } -// Return true when postponing displaying the mode message: when not redrawing -// or inside a mapping. -bool skip_showmode(void) -{ - // Call char_avail() only when we are going to show something, because it - // takes a bit of time. redrawing() may also call char_avail_avail(). - if (global_busy - || msg_silent != 0 - || !redrawing() - || (char_avail() && !KeyTyped)) { - redraw_mode = true; // show mode later - return true; - } - return false; -} // Show the current mode and ruler. // // 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) { @@ -6606,8 +6590,12 @@ int showmode(void) || restart_edit || VIsual_active)); if (do_mode || reg_recording != 0) { - if (skip_showmode()) { - return 0; // show mode later + // Don't show mode right now, when not redrawing or inside a mapping. + // Call char_avail() only when we are going to show something, because + // it takes a bit of time. + if (!redrawing() || (char_avail() && !KeyTyped) || msg_silent != 0) { + redraw_cmdline = TRUE; /* show mode later */ + return 0; } nwr_save = need_wait_return; @@ -6727,11 +6715,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 +6727,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 +6743,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_bufline.vim b/src/nvim/testdir/test_bufline.vim index 2567dd2be2..076f03fdd8 100644 --- a/src/nvim/testdir/test_bufline.vim +++ b/src/nvim/testdir/test_bufline.vim @@ -19,7 +19,7 @@ func Test_setbufline_getbufline() let b = bufnr('%') wincmd w call assert_equal(1, setbufline(b, 5, ['x'])) - call assert_equal(1, setbufline(bufnr('$') + 1, 1, ['x'])) + call assert_equal(1, setbufline(1234, 1, ['x'])) call assert_equal(0, setbufline(b, 4, ['d', 'e'])) call assert_equal(['c'], getbufline(b, 3)) call assert_equal(['d'], getbufline(b, 4)) diff --git a/src/nvim/testdir/test_messages.vim b/src/nvim/testdir/test_messages.vim index d0a8f342c9..30239a90c2 100644 --- a/src/nvim/testdir/test_messages.vim +++ b/src/nvim/testdir/test_messages.vim @@ -89,65 +89,6 @@ func Test_echoerr() call test_ignore_error('RESET') endfunc -func Test_mode_message_at_leaving_insert_by_ctrl_c() - if !has('terminal') || has('gui_running') - return - endif - - " Set custom statusline built by user-defined function. - let testfile = 'Xtest.vim' - call writefile([ - \ 'func StatusLine() abort', - \ ' return ""', - \ 'endfunc', - \ 'set statusline=%!StatusLine()', - \ 'set laststatus=2', - \ ], 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, "\<C-C>") - 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_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) diff --git a/test/functional/eval/null_spec.lua b/test/functional/eval/null_spec.lua index bef41e52d4..fa8f7d873f 100644 --- a/test/functional/eval/null_spec.lua +++ b/test/functional/eval/null_spec.lua @@ -121,7 +121,7 @@ describe('NULL', function() null_test('does not make Neovim crash when v:oldfiles gets assigned to that', ':let v:oldfiles = L|oldfiles', 0) null_expr_test('does not make complete() crash or error out', 'execute(":normal i\\<C-r>=complete(1, L)[-1]\\n")', - 0, '', function() + '', '\n', function() eq({''}, curbufmeths.get_lines(0, -1, false)) end) null_expr_test('is accepted by setmatches()', 'setmatches(L)', 0, 0) diff --git a/test/functional/eval/timer_spec.lua b/test/functional/eval/timer_spec.lua index 3f57568b8e..9ee0735e40 100644 --- a/test/functional/eval/timer_spec.lua +++ b/test/functional/eval/timer_spec.lua @@ -130,12 +130,12 @@ describe('timers', function() nvim_async("command", "call timer_start("..load_adjust(100)..", 'AddItem', {'repeat': -1})") screen:expect([[ - ^ITEM 1 | + ITEM 1 | ITEM 2 | {1:~ }| {1:~ }| {1:~ }| - | + ^ | ]]) nvim_async("command", "let g:cont = 1") diff --git a/test/functional/ui/float_spec.lua b/test/functional/ui/float_spec.lua index 8d654f6e5b..32f9ae030f 100644 --- a/test/functional/ui/float_spec.lua +++ b/test/functional/ui/float_spec.lua @@ -5344,45 +5344,6 @@ describe('floatwin', function() -- at least. Also check invisible EndOfBuffer region blends correctly. meths.buf_set_lines(buf, 0, -1, true, {" x x x xx", " x x x x"}) win = meths.open_win(buf, false, {relative='editor', width=12, height=3, row=0, col=11, style='minimal'}) - if multigrid then - screen:expect{grid=[[ - ## grid 1 - [2:----------------------------------------]| - [2:----------------------------------------]| - [2:----------------------------------------]| - [2:----------------------------------------]| - [2:----------------------------------------]| - [2:----------------------------------------]| - [3:----------------------------------------]| - ## grid 2 - # TODO: 测试字典信息的准确性 | - # FIXME: 测试字典信息的准确^性 | - {0:~ }| - {0:~ }| - {0:~ }| - {0:~ }| - ## grid 3 - | - ## grid 6 - {1: x x x xx}| - {1: x x x x}| - {1: }| - ]], float_pos={ - [6] = { { - id = 1003 - }, "NW", 1, 0, 11, true } - }} - else - screen:expect{grid=[[ - # TODO: 测 {1: x x x xx} 确性 | - # FIXME: 测{1: x x x x}准确^性 | - {0:~ }{1: }{0: }| - {0:~ }| - {0:~ }| - {0:~ }| - | - ]]} - end meths.win_set_option(win, 'winblend', 30) screen:set_default_attr_ids({ [1] = {foreground = tonumber('0xb282b2'), background = tonumber('0xffcfff')}, @@ -5420,7 +5381,7 @@ describe('floatwin', function() }, "NW", 1, 0, 11, true } }} else - screen:expect{grid=[[ + screen:expect([[ # TODO: 测 {2: x x x}{1:息}{2: xx} 确性 | # FIXME: 测{1:试}{2:x x x}{1:息}{2: x}准确^性 | {3:~ }{4: }{3: }| @@ -5428,7 +5389,7 @@ describe('floatwin', function() {3:~ }| {3:~ }| | - ]]} + ]]) end meths.win_set_config(win, {relative='editor', row=0, col=12}) diff --git a/test/functional/ui/screen.lua b/test/functional/ui/screen.lua index 5104c58796..8fa9fcc42f 100644 --- a/test/functional/ui/screen.lua +++ b/test/functional/ui/screen.lua @@ -807,9 +807,7 @@ function Screen:_handle_mouse_off() end function Screen:_handle_mode_change(mode, idx) - if self._mode_info ~= nil then - assert(mode == self._mode_info[idx+1].name) - end + assert(mode == self._mode_info[idx+1].name) self.mode = mode end diff --git a/test/functional/ui/searchhl_spec.lua b/test/functional/ui/searchhl_spec.lua index 740126df31..656f613c6a 100644 --- a/test/functional/ui/searchhl_spec.lua +++ b/test/functional/ui/searchhl_spec.lua @@ -20,7 +20,6 @@ describe('search highlighting', function() [2] = {background = colors.Yellow}, -- Search [3] = {reverse = true}, [4] = {foreground = colors.Red}, -- Message - [5] = {bold = true, reverse = true}, [6] = {foreground = Screen.colors.Blue4, background = Screen.colors.LightGrey}, -- Folded }) end) @@ -176,15 +175,7 @@ describe('search highlighting', function() ]]) feed('/foo') helpers.poke_eventloop() - screen:expect{grid=[[ - {3:foo} bar baz {3:│} | - bar baz {2:foo} {3:│} | - bar {2:foo} baz {3:│} | - {3:│} | - {1:~ }{3:│} | - {5:[No Name] [+] }{3:term }| - /foo^ | - ]]} + screen:expect_unchanged() end) it('works with incsearch', function() @@ -483,7 +474,15 @@ describe('search highlighting', function() -- check hilights work also in folds feed("zf4j") command("%foldopen") - screen:expect_unchanged() + screen:expect([[ + very {5:spec^ial}{2: te}{6:xt} | + | + {1:~ }| + {1:~ }| + {1:~ }| + {1:~ }| + {4:search hit BOTTOM, continuing at TOP} | + ]]) feed_command("call clearmatches()") screen:expect([[ |