| Commit message (Collapse) | Author | Age |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This resolves a rounding issue when converting to the 26.6 format used
by freetype for character sizes.
This rounding behavior is taken from cairo:
https://gitlab.freedesktop.org/cairo/cairo/-/blob/master/src/cairo-ft-font.c#L900-903
There are various different implementations of the F26Dot6 conversion
online, but the rounding that cairo does seems to be the most common.
Since cairo is very commonly used, it should produce good results
compared with the rest of Linux text rendering.
Fixes #2780.
Co-authored-by: Christian Duerr <contact@christianduerr.com>
Co-authored-by: Kirill Chibisov <contact@kchibisov.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 #3942.
|
| |
|
| |
Fixes #3938.
|
| |
|
| |
Fixes #3920.
|
| |
|
| |
Fixes #1528.
|
| |
|
|
|
|
| |
In addition it also starts respecting Fontconfig's `autohint`
and `hinting` options.
Fixes #3534.
|
| | |
|
| |
|
|
| |
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 #3915.
|
| |
|
| |
Fixes #2653.
|
| | |
|
| |
|
| |
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.
|
| |
|
|
|
|
|
|
| |
While the commit 43c0ad6ea9d2467ccf867a310c4f1e30f5b627c6 introduced
right click as a way to expand the active selection, it did not allow
for holding right click to continuously do so.
This commit remedies that problem by allowing live expansion with while
holding the right mouse button.
|
| | |
|
| |
|
|
|
| |
This should provide more clear feedback whether rustfmt
job is failed or not.
|
| |
|
|
|
|
|
| |
This allows for expanding the selection using the right mouse button.
The new selection type depends on the number of clicks and applies to
both sides of the selection.
Fixes #1554.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
| |
The compile_error! failure is way more readable and noticeable than
panic!.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reworks the criteria necessary for default bindings to be
overwritten by custom user bindings. It should provide a better
heuristic which accounts for the possibility that notmodes are added
which prevent a conflict between the bindings, so the default isn't
unnecessarily removed.
It is still possible to define a new binding that intersects a default
binding without the default getting removed, if the user explicitly
specifies a mode that doesn't include the default binding's mode. This
is based on the assumption that users explicitly specifying a new mode
are trying to make a mode-specific addition and are capable of removing
the default when desired.
This helps with old modes still being present in user's config files,
since a lot of new config options just have the additional ~Vi mode set.
Fixes #3476.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The window.rs imports have been extremely messy due to heavy
platform-specific import usage. While some of them are just stray
imports for a single platform, a lot of these are specific to Linux/BSD.
To make these a little easier to read and maintain, the Linux/BSD
specific imports were grouped together, since this allows us to just
have a single platform annotation.
Most of our imports follow the order of how relevant and foreign these
imports are to Alacritty, putting our own frequently used imports at the
far bottom and STD with things people usually don't need to care about
at the top. Since platform specific imports are generally important to
fewer people, I've decided to put them before all the other imports
rather than behind them.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 fixes a regression introduced in
77f2d6e853f1ad54e6dc844a811b78daeb463e76.
Fixes #3809.
|
| | |
|
| |
|
| |
Fixes #3767.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
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`.
|
| | |
|
| |
|
|
|
| |
The env logger has been broken for over a year and is not used by anyone
as far as I know. This removes this option entirely in favor of
Alacritty's built-in logger level selection flags.
|
| | |
|
| |
|
| |
Fixes #3769.
|
| | |
|
| | |
|