aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2018-07-12 12:21:11 +0200
committerGitHub <noreply@github.com>2018-07-12 12:21:11 +0200
commit56065bbdc6d20feb431fe55d8165f78fb50eb8b7 (patch)
tree33f32334461062dec5bd5624bbadbec828e2c782
parent798f05876c114436851d98232739b4ba28318d79 (diff)
parente51bffefa523e0cde75eedc84b3e1cb02951d391 (diff)
downloadrneovim-56065bbdc6d20feb431fe55d8165f78fb50eb8b7.tar.gz
rneovim-56065bbdc6d20feb431fe55d8165f78fb50eb8b7.tar.bz2
rneovim-56065bbdc6d20feb431fe55d8165f78fb50eb8b7.zip
Merge pull request #8721 from bfredl/quickresize
Fix redrawing issues with narrow screen and remove extra wait in resize tests
-rw-r--r--src/nvim/screen.c16
-rw-r--r--test/functional/ui/screen.lua14
-rw-r--r--test/functional/ui/screen_basic_spec.lua5
3 files changed, 22 insertions, 13 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
index ce5c994526..49aeaff3a6 100644
--- a/src/nvim/screen.c
+++ b/src/nvim/screen.c
@@ -6396,6 +6396,13 @@ int showmode(void)
/* Position on the last line in the window, column 0 */
msg_pos_mode();
attr = HL_ATTR(HLF_CM); // Highlight mode
+
+ // When the screen is too narrow to show the entire mode messsage,
+ // avoid scrolling and truncate instead.
+ msg_no_more = true;
+ int save_lines_left = lines_left;
+ lines_left = 0;
+
if (do_mode) {
MSG_PUTS_ATTR("--", attr);
// CTRL-X in Insert mode
@@ -6495,10 +6502,13 @@ int showmode(void)
msg_didout = FALSE; /* overwrite this message */
length = msg_col;
msg_col = 0;
- need_wait_return = nwr_save; /* never ask for hit-return for this */
- } else if (clear_cmdline && msg_silent == 0)
- /* Clear the whole command line. Will reset "clear_cmdline". */
+ msg_no_more = false;
+ lines_left = save_lines_left;
+ need_wait_return = nwr_save; // never ask for hit-return for this
+ } else if (clear_cmdline && msg_silent == 0) {
+ // Clear the whole command line. Will reset "clear_cmdline".
msg_clr_cmdline();
+ }
/* In Visual mode the size of the selected area must be redrawn. */
if (VIsual_active)
diff --git a/test/functional/ui/screen.lua b/test/functional/ui/screen.lua
index 52e108f389..7607131e9b 100644
--- a/test/functional/ui/screen.lua
+++ b/test/functional/ui/screen.lua
@@ -172,9 +172,6 @@ end
function Screen:try_resize(columns, rows)
uimeths.try_resize(columns, rows)
- -- Give ourselves a chance to _handle_resize, which requires using
- -- self.sleep() (for the resize notification) rather than run()
- self:sleep(0.1)
end
function Screen:set_option(option, value)
@@ -210,11 +207,6 @@ function Screen:expect(expected, attr_ids, attr_ignore, condition, any)
row = row:sub(1, #row - 1) -- Last char must be the screen delimiter.
table.insert(expected_rows, row)
end
- if not any then
- assert(self._height == #expected_rows,
- "Expected screen state's row count(" .. #expected_rows
- .. ') differs from configured height(' .. self._height .. ') of Screen.')
- end
end
local ids = attr_ids or self._default_attr_ids
local ignore = attr_ignore or self._default_attr_ignore
@@ -225,6 +217,12 @@ function Screen:expect(expected, attr_ids, attr_ignore, condition, any)
return tostring(res)
end
end
+
+ if expected and not any and self._height ~= #expected_rows then
+ return ("Expected screen state's row count(" .. #expected_rows
+ .. ') differs from configured height(' .. self._height .. ') of Screen.')
+ end
+
local actual_rows = {}
for i = 1, self._height do
actual_rows[i] = self:_row_repr(self._rows[i], ids, ignore)
diff --git a/test/functional/ui/screen_basic_spec.lua b/test/functional/ui/screen_basic_spec.lua
index 06e4a19354..6f04cde4d4 100644
--- a/test/functional/ui/screen_basic_spec.lua
+++ b/test/functional/ui/screen_basic_spec.lua
@@ -651,9 +651,10 @@ describe('Screen', function()
it('has minimum width/height values', function()
screen:try_resize(1, 1)
screen:expect([[
- {2:-- INS^ERT --}|
- |
+ resize^ |
+ {2:-- INSERT -} |
]])
+
feed('<esc>:ls')
screen:expect([[
resize |