1
0
Fork 0
mirror of https://github.com/alacritty/alacritty.git synced 2024-11-25 14:05:41 -05:00
Commit graph

5 commits

Author SHA1 Message Date
Joe Wilm
c61a912f62 Optimize Row::reset
Now, only cells that have been used are cleared. This is achieved by
using a "occupied" memo on the Row itself. The value, `occ`, is updated
wherever the Row is accessed mutably, and it's cleared to zero in
Row::reset.

The tests for grid scroll_up and scroll_down were updated to include a
test on the value `occ` and slightly refactored, but are otherwise
equivalent to the previous implementation of those tests.

Because of the change to the `Row` struct, the ref tests were updated so
Deserialization keeps working as expected.
2018-06-02 09:56:50 -07:00
Christian Duerr
ac93f6d031 Truncate invisible lines before storing ref-tests
Because there is no good way to store invisible lines in a backwards-
and forwards-compatible way, they buffer now gets truncated before
dumping the state of a grid when creating a ref-test.

This involved a few workaround of which a few required adding additional
methods which are only used in ref-tests, these should be minimal
though.

Since this required the creation of a truncation method anyways, some
logic has been added which automatically truncates the invisible buffer
when there are more than X (set to 100) invisible lines. This should not
impact performance because it rarely occurs, but it could save a bit of
memory when the history size is shrunk during runtime (see #1293).

This also adds an optional `config.json` file to the ref-test output
where it is possible to manually specify variables which should override
config defaults, this has been used only for history_size so far.

Creating a new ref-test does also still work, so there was no regression
here, if history size is altered, the config.json just has to be created
manually with the content `{"history_size":HIST_SIZE}`, where
`HIST_SIZE` is the desired history size.
2018-06-02 09:56:50 -07:00
Christian Duerr
dec3ee20e9 Re-record grid_reset test
The old grid_reset test expected the complete grid to be reset, but
instead of resetting the whole grid the `grid.scroll_limit` is just set
to `0` now. This leads to the rest of the grid still containing the old
information.

To fix this test it has simply be re-recorded. The new tests now still
contains the complete history but it is checked that the `scroll_limit`
is correctly reset.
2018-06-02 09:56:50 -07:00
Christian Duerr
31c0f291e0 Reduce size of ref tests 2018-06-02 09:56:50 -07:00
Christian Duerr
d39370514a Reset grid content when running reset
In the current scrollback PR the `reset` command does not affect the
scrollback history. To make sure the terminal is properly reset, it
should clear the scrollback history.

This commit fixes this by creating a new and empty grid whenever `reset`
is executed. It takes the current dimensions and history size from the
old grid.

Right now there's an empty ref-test called `grid_reset` without any
content, this should be implemented once #1244 is resolved.

This fixes #1242.
2018-06-02 09:56:50 -07:00