Permalink
Browse files

Merge pull request #8721 from bfredl/quickresize

Fix redrawing issues with narrow screen and remove extra wait in resize tests
  • Loading branch information...
bfredl committed Jul 12, 2018
2 parents 798f058 + e51bffe commit 56065bbdc6d20feb431fe55d8165f78fb50eb8b7
Showing with 22 additions and 13 deletions.
  1. +13 −3 src/nvim/screen.c
  2. +6 −8 test/functional/ui/screen.lua
  3. +3 −2 test/functional/ui/screen_basic_spec.lua
@@ -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)
@@ -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)
@@ -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 |

0 comments on commit 56065bb

Please sign in to comment.