Skip to content

Commit

Permalink
Merge pull request #8721 from bfredl/quickresize
Browse files Browse the repository at this point in the history
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 56065bb
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 13 deletions.
16 changes: 13 additions & 3 deletions src/nvim/screen.c
Expand Up @@ -6396,6 +6396,13 @@ int showmode(void)
/* Position on the last line in the window, column 0 */ /* Position on the last line in the window, column 0 */
msg_pos_mode(); msg_pos_mode();
attr = HL_ATTR(HLF_CM); // Highlight 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) { if (do_mode) {
MSG_PUTS_ATTR("--", attr); MSG_PUTS_ATTR("--", attr);
// CTRL-X in Insert mode // CTRL-X in Insert mode
Expand Down Expand Up @@ -6495,10 +6502,13 @@ int showmode(void)
msg_didout = FALSE; /* overwrite this message */ msg_didout = FALSE; /* overwrite this message */
length = msg_col; length = msg_col;
msg_col = 0; msg_col = 0;
need_wait_return = nwr_save; /* never ask for hit-return for this */ msg_no_more = false;
} else if (clear_cmdline && msg_silent == 0) lines_left = save_lines_left;
/* Clear the whole command line. Will reset "clear_cmdline". */ 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(); msg_clr_cmdline();
}


/* In Visual mode the size of the selected area must be redrawn. */ /* In Visual mode the size of the selected area must be redrawn. */
if (VIsual_active) if (VIsual_active)
Expand Down
14 changes: 6 additions & 8 deletions test/functional/ui/screen.lua
Expand Up @@ -172,9 +172,6 @@ end


function Screen:try_resize(columns, rows) function Screen:try_resize(columns, rows)
uimeths.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 end


function Screen:set_option(option, value) function Screen:set_option(option, value)
Expand Down Expand Up @@ -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. row = row:sub(1, #row - 1) -- Last char must be the screen delimiter.
table.insert(expected_rows, row) table.insert(expected_rows, row)
end 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 end
local ids = attr_ids or self._default_attr_ids local ids = attr_ids or self._default_attr_ids
local ignore = attr_ignore or self._default_attr_ignore local ignore = attr_ignore or self._default_attr_ignore
Expand All @@ -225,6 +217,12 @@ function Screen:expect(expected, attr_ids, attr_ignore, condition, any)
return tostring(res) return tostring(res)
end end
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 = {} local actual_rows = {}
for i = 1, self._height do for i = 1, self._height do
actual_rows[i] = self:_row_repr(self._rows[i], ids, ignore) actual_rows[i] = self:_row_repr(self._rows[i], ids, ignore)
Expand Down
5 changes: 3 additions & 2 deletions test/functional/ui/screen_basic_spec.lua
Expand Up @@ -651,9 +651,10 @@ describe('Screen', function()
it('has minimum width/height values', function() it('has minimum width/height values', function()
screen:try_resize(1, 1) screen:try_resize(1, 1)
screen:expect([[ screen:expect([[
{2:-- INS^ERT --}| resize^ |
| {2:-- INSERT -} |
]]) ]])

feed('<esc>:ls') feed('<esc>:ls')
screen:expect([[ screen:expect([[
resize | resize |
Expand Down

0 comments on commit 56065bb

Please sign in to comment.