Age | Commit message (Collapse) | Author |
|
This implements the colon separated form of SGR 38 and 48.
Fixes #1485.
|
|
Fixes #4082.
|
|
|
|
This commit fixes regression introduced in
bedf5f3004e8f33011925ca471be02ead96f4581, when setting
certain CellForeground/CellBackground combinations stoppped working.
|
|
This should reduce the number of times people with fixed cursor colors
run into troubles when existing text is already colored.
Using just the background color as a metric instead of both background
and foreground color should ensure that the cursor still has a clear
shape, since just changing the foreground color for a cursor might be
difficult to see. Always inverting the entire cursor instead of keeping
the fixed foreground color is important to make sure the contrast isn't
messed up.
Fixes #4016.
|
|
This adds support for the secondary DA escape sequence response.
Alacritty's version is formatted allowing for up to 99 minor and patch
versions, which should be sufficient.
The tertiary DA is intentionally not implemented and marked as rejected
in the documentation, since a lot of terminals do not support it, or
report useless data (XTerm/URxvt/Kitty).
Fixes #3100.
|
|
|
|
This change bumps the version of the `alacritty_terminal` crate to force
it out of sync with the Alacritty application. Since it is a library
that will be published on crates.io, it should be following semver
rather than our binary's release version.
While it would be possible to just keep it at 0.5.0, explicitly
disconnecting it from the Alacritty version should give it a clean
starting-off point and prevent unnecessary confusion. Bumping it to
0.10.0 instead of something like 0.6.0 should allow for a nice gap
between the different versions without being too arbitrary. Changing the
version to 0.1.0 is not an option since decreasing semver version would
likely cause a lot of problems.
While it would be possible to further separate the Alacritty terminal
library from the Alacritty terminal emulator, by renaming it from
`alacritty_terminal` to something different, I don't think that is
necessary or a good idea at the moment. Even though the
`alacritty_terminal` library *can* be used for other terminals, its
primary goal is still to support the Alacritty terminal emulator and I
don't see that changing. So making that clear in its name seems like a
good idea. Since there is no plan to maintain this library separately
from Alacritty, but to keep both tied together, the naming should
reflect this.
|
|
This implements search without vi mode by using the selection to track
the active search match and advancing it on user input. The keys to go
to the next or previous match are not configurable and are bound to
enter and shift enter based on Firefox's behavior.
Fixes #3937.
|
|
This resolves three different issues with cursor reflow.
The first issue was that the cursor could reach the top of the screen
during reflow, since content was pushed into history despite viewport
space being available. Since the cursor cannot leave the viewport, this
would insert new space between the cursor and content (see #3968).
Another issue was that the wrapline flag was not set correctly with
content being available behind the cursor. Since the cursor is not
necessarily at the end of the line, it is possible that the cursor
should reflow to the next line instead of staying on the current one and
setting the wrapline flag.
The last bug fixed in this is about reflow with content available behind
the cursor. Since that might have en effect on new lines being inserted
and deleted below the cursor, the cursor needs to be reflown based on
it.
Fixes #3968.
|
|
Instead of just always falling back to the shell specified in the passwd
file when no config or cli shell was specified, Alacritty will not first
look at the `$SHELL` environment variable. If this is unset, it will
still read the passwd file.
Since macOS is a bit peculiar and does not set the `$SHELL` environment
variable by default, it is set manually to the shell used by Alacritty
while any existing `$SHELL` variables are ignored. This matches the
behavior of iTerm and Terminal.app.
Co-authored-by: Christian Duerr <contact@christianduerr.com>
|
|
Fixes #3960.
|
|
This commit removes font dependency from alacritty_terminal,
so it'll simplify the usage of alacritty_terminal as a library,
since you won't link to system's libraries anymore. It also
moves many alacritty related config options from it.
Fixes #3393.
|
|
Fixes #1528.
|
|
Statically linking Fontconfig was leading to slow startup and
various errors, so forcing the use of system's library.
|
|
This adds a new regex search which allows searching the entire
scrollback and jumping between matches using the vi mode.
All visible matches should be highlighted unless their lines are
excessively long. This should help with performance since highlighting
is done during render time.
Fixes #1017.
|
|
To make sure that output is consistent even while resizing the window,
the cursor will now reflow with the content whenever the window size is
changed.
Since the saved cursor is more likely to represent a position in the
grid rather than a reference to the content below it and handling of
resize before jumping back to it is more likely than with the primary
cursor, no reflow is performed for the saved cursor
The primary cursor is unfortunately always reflowed automatically by
shells like zsh, which has always caused problems like duplicating parts
of the prompt and stretching it out "infinitely". Since the cursor is
now reflowed appropriately the duplication of the shell prompt should be
reduced, however it is possible that the shell moves the cursor up one
line after it has already been reflowed, which will cause a line of
history to be deleted if there is no duplicated prompt line above the
reflowed prompt. Since this behavior is identical in VTE and Kitty, no
attempt is made to work around it in this patch.
Fixes #3584.
|
|
This resolves several problems with handling of the saved cursor when
switching between primary and alternate screen. Additionally ref-tests
are also added for all common interactions to make sure the behavior
does not regress.
The behavior is based on XTerm's behavior except for interaction with
`reset`. XTerm does not reset the alternate screen's saved cursor on
`reset`, but VTE does. Since a `reset` should reset as much as possible,
Alacritty copies VTE here instead of XTerm.
|
|
While neither VTE, URxvt nor Kitty handle this, preserving the linewrap
flag across alternate screen switches seems like the correct thing to
do. XTerm also does handle this correctly, which indicates that it is a
bug and not a feature.
|
|
Fixes #3440.
|
|
This bug was caused by trying to grow the terminal while the cursor line
was wrapped but entirely empty. Resizing the terminal now accounts for
the position of the deleted line and moves the cursor up only when the
line deleted was above it.
The deletion of the line was caused by the shell redrawing itself
whenever the cursor is moved.
Fixes #3583.
|
|
Fixes #3766.
|
|
Since the alt_grid is not always the alternate screen buffer, the name
inactive_grid should fit much better.
Fixes #3504.
|
|
Selection is now cleared if clear line or clear screen escape sequences
are clearing content behind it.
|
|
This works around a bug where the optimized version of the
`Grid::scroll_down` function would just rotate the entire grid down if
the scrolling region starts at the top of the screen, even if there is
history available.
Since rotations of scrolling regions should not affect the scrollback
history, this optimized version is now only called when the max
scrollback size is 0, making it impossible for the grid to have any
history while it is used.
Since the main usecase of this is the alternate screen buffer, which
never has any history, the performance should not be affected negatively
by this change.
Fixes #3582.
|
|
This adds a new `Scheduler` which allows for staging events to be
processed at a later time.
If there is a selection active and the mouse is above or below the
window, the viewport will now scroll torwards the direction of the
mouse. The amount of lines scrolled depends on the distance of the mouse
to the boundaries used for selection scrolling.
To make it possible to scroll while in fullscreen, the selection
scrolling area includes the padding of the window and is at least 5
pixels high in case there is not enough padding present.
|
|
|
|
|
|
Keeping the license as part of every file bloats up the files
unnecessarily and introduces an additional overhead to the creation of
new modules.
Since cargo already provides excellent dependency management, most of
the code-reuse of Alacritty should occur through Rust's dependency
management instead of copying it source.
If code is copied partially, copying the license from the main license
file should be just as easy as copying from the top of the file and
making some adjustments based on where it is used is likely necessary
anyways.
|
|
Fixes #3820.
|
|
|
|
|
|
This commit aims to clear up the separation between Term and Grid to
make way for implementing search.
The `cursor` and `cursor_save` have been moved to the grid, since
they're always bound to their specific grid and this makes updating
easier.
Since the selection is independent of the active grid, it has been moved
to the `Term`.
|
|
Fixes #3769.
|
|
|
|
Fixes #3592.
|
|
This resolves an issue where trying to write a fullwidth character in
the last column would crash Alacritty, if linewrapping was disabled.
Instead of assuming that the linewrap put after the linewrapping spacer
was successful, the character writing is now skipped completely when
trying to put a wide character in the last column.
|
|
Fixes #3404.
|
|
Fixes #3591.
|
|
|
|
|
|
Fixes #2800.
Fixes #2566.
|
|
Fixes #3290.
|
|
|
|
Fixes #3526.
|
|
Fixes #2092.
|
|
|
|
After two previous PRs already removed some instances of
reimplementations of the `fs::read_to_string` functionality, this
removes the last remaining occurence and with it all instances of
`File::open`. So this should remove them all for good.
|
|
|
|
This fixes a regression introduced in 4cc6421, which ignored the main
grid's cursor when increasing the number of lines available, causing
incorrect cursor position after restoring to the primary screen.
Additionally another similar bug has been fixed where the grid was not
scrolled correctly when shrinking while in the alternate screen.
When the grid is resized multiple lines at once, there was also an issue
with Alacritty either pulling all lines from history or none at all,
instead of mixing both approaches and pulling just what is required.
This lead to incorrect cursor positions when the resize could partially
make use of history.
Fixes #3499.
|