| Commit message (Collapse) | Author | Age |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This removes the restriction of not being able to select text while the
search is active, making it a bit less jarring of a UX when the user
tries to interact with the terminal during search.
Since the selection was used during vi-less search to highlight the
focused match, there is now an option for a focused match color, which
uses the inverted normal match color by default. This focused match is
used for both search modes.
Other mouse interactions are now also possible during search, like
opening URLs or clicking inside of mouse mode applications.
|
|
|
|
|
|
| |
On macOS we can use 'proc_pidinfo' to determine the working
directory of the terminal foreground process.
Fixes #1979.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The zerowidth characters were conventionally stored in a [char; 5].
This creates problems both by limiting the maximum number of zerowidth
characters and by increasing the cell size beyond what is necessary even
when no zerowidth characters are used.
Instead of storing zerowidth characters as a slice, a new CellExtra
struct is introduced which can store arbitrary optional cell data that
is rarely required. Since this is stored behind an optional pointer
(Option<Box<CellExtra>>), the initialization and dropping in the case
of no extra data are extremely cheap and the size penalty to cells
without this extra data is limited to 8 instead of 20 bytes.
The most noticible difference with this PR should be a reduction in
memory size of up to at least 30% (1.06G -> 733M, 100k scrollback, 72
lines, 280 columns). Since the zerowidth characters are now stored
dynamically, the limit of 5 per cell is also no longer present.
|
|
|
|
|
|
|
|
| |
This resolves a problem with the visual bell where it would not
automatically trigger a redraw itself after the initial frame has been
rendered.
Since the unit of the visual bell duration is also unclear, it has been
clarified.
|
|
|
| |
Fixes #4363.
|
|
|
|
|
| |
It should simplify tracking of new warnings raised on CI builds
and when cross checking. This commit also enables warnings
for 'rust_2018_idioms' and 'future_incompatible'.
|
|
|
| |
Fixes #4353.
|
| |
|
|
|
|
|
| |
Since the 'set_inner_size' call might immediately alter the window size,
the query for the window's dimensions should be performed after the
resize has been requested.
|
|
|
| |
See https://github.com/alacritty/alacritty/commit/721f789b5f98ab5c47e6e817c3c2228636ca0a1a#r43183826.
|
|
|
|
| |
This should allow users that are not using Wayland/X11
to reduce the resulted binary size and compilation times.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Teach Alacritty to stop setting the window as urgent upon a bell by
emulating xterm's 'bellIsUrgent' resource and relevant CSI. When this
resource is enabled (with 'CSI ? 1042 h'), a bell event causes the
window to be marked as urgent. When the resource is disabled (with 'CSI
? 1042 l'), the window is not marked urgent in the event of a bell.
There are two wrinkles worth noting here:
- The 'TermMode::URGENCY_HINTS' does _not_ affect the terminal's
configured bell command, since we only want to control whether or
not the window is marked as urgent, not anything else.
- In xterm, the 'bellIsUrgent' resource is _disabled_ by default.
Since bouncing the dock icon has been the default in Alacritty on
macOS thus far, do not make an effort to change that in this patch.
This allows users to emit "\e[?1042l" and disable bouncing the dock
icon.
Fixes #2950.
|
|
|
|
|
| |
Checking for target os in build.rs doesn't work, since build.rs
is running for host, so checking should be done in src. Thus moving
'compile_error!' check from build.rs to main.rs.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes #4206.
Fixes #4162.
Fixes #4017.
Fixes #3998.
Fixes #3831.
Fixes #3782.
Fixes #3708.
Fixes #2734.
Fixes #2714.
Fixes #1801.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When formatting text for display in the message bar, Alacritty was using
the byte length of the text instead of the glyph count. This lead to
unnecessary blank space at the end of lines due to overestimation of
their length.
There also were no extra spaces inserted after fullwidth characters,
leading to Alacritty giving them only a single cell of space. In line
with the rest of Alacritty's rendering, a wide char spacer whitespace is
now inserted in the message bar after glyphs which should occupy two
cells.
Fixes #4250.
Co-authored-by: Christian Duerr <contact@christianduerr.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changes the minimum terminal dimensions from 2 lines and 2 columns,
to 1 line and 2 columns.
This also reworks the `SizeInfo` to store the number of columns and
lines and consistently has only the terminal lines/columns stored,
instead of including the message bar and search in some places of the
Alacritty renderer/input.
These new changes also make it easy to properly start the selection
scrolling as soon as the mouse is over the message bar, instead of
waiting until it is beyond it.
Fixes #4207.
Co-authored-by: Christian Duerr <contact@christianduerr.com>
|
| |
|
|
|
|
| |
This makes our logging of 'SizeInfo' changes more consistent
with the one we're using when creating a new 'Display'.
|
|
|
|
|
|
|
|
|
|
|
| |
Since we only applied the CLI arguments as overrides to the
configuration file after the file was loaded, all CLI arguments that are
stored on the config would be dropped without a configuration file in
place.
This also makes sure that all configuration file config overrides are
still loaded if the configuration file could not be loaded for any
reason, since there's no reason why we'd just drop everything in that
case.
|
|
|
| |
Co-authored-by: Christian Duerr <contact@christianduerr.com>
|
|
|
| |
Co-authored-by: Christian Duerr <contact@christianduerr.com>
|
|
|
|
| |
Fixes #4182.
|
|
|
|
| |
This implements the escapes `CSI 14 t` and `CSI 18 t` which report the
text area size in pixels and characters.
|
|
|
|
|
|
|
| |
Since the `Term` implements the `Dimensions` trait itself, we shouldn't
call `term.grid()` to call methods from the `Dimensions` trait.
This removes all instances of this that I could find in the code at the
moment.
|
|
|
|
|
|
|
|
| |
This uses the facilities added in
3c3e6870dedad56b270f5b65ea57d5a6e46b1de6 to allow overriding individual
configuration file options dynamically from the CLI using the
--options/-o parameter.
Fixes #1258.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds the ability for users to have multiple configuration files
which all inherit from each other.
The order of imports is chronological, branching out to the deepest
children first and overriding every field with that of the configuration
files that are loaded at a later point in time.
Live config reload watches the directories of all configuration files,
allowing edits in any of them to update Alacritty immediately. While the
imports are live reloaded, a new configuration file watcher will only be
spawned once Alacritty is restarted.
Since this might cause loops which would be very difficult to detect, a
maximum depth is set to limit the recursion possible with nested
configuration files.
Fixes #779.
|
|
|
|
| |
This refactors the logging function to clean things up a little bit and
also adds the ability to see log messages for the `crossfont` library.
|
|
|
|
|
|
|
| |
This resolves an issue with selection scrolling which would cause the
selection to wrap to the top of the screen once the cursor enters the
padding below the message bar.
Fixes #4120.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit completes the effort to use config colors for
message bar content by picking red/yellow from user's
colors.normal.{red,yellow} for error/warning messages
instead of fixed colors.
It also removes alacritty_terminal::term::color::RED and
alacritty_terminal::term::color::YELLOW from the alacritty_terminal API,
bumping its version to 0.11.0-dev.
Fixes #4116.
|
|
|
|
|
| |
Using the user's background color in pair with red should provide better
contrast.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds support for double underlines using the colon separated escape
sequence `CSI 4 : 2 m`.
Alacritty will now also always fallback to the normal underline in case
any of the other underlines like the undercurl are specified. The escape
sequence `CSI 4 : 0 m` can now be used to clear all underlines.
Some terminals support `CSI 21 m` for double underline, but since
Alacritty already uses that as cancel bold which is a little more
consistent, that behavior has not changed. So the colon separated
variant must be used.
|
| |
|
|
|
|
| |
This resolves a bug where characters get swallowed when pressing them
after pressing backspace before the backspace key is released.
|
|
|
|
| |
Fixes #4089.
|
|
|
| |
Co-authored-by: Kirill Chibisov <contact@kchibisov.com>
|
|
|
| |
Fixes #4082.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The InstanceData type in the rendering subsystem was previously 17 f32s
plus one u8 which occupied a total of 72 bytes per instance. This meant
that for every character or background cell drawn, 72 bytes were sent to
the GPU. In the case of a 400x100 cell grid, a total of 2.9MB would be
sent.
This patch reduces InstanceData's size to 36 bytes, a 50% improvement!
Using the above example for comparison, a worst case of 1.44MB would be
transferred.
The motivation for this patch comes from macOS. Once the terminal grid
would reach a certain size, performance experienced a sharp and dramatic
drop (render times would go from ~3ms to ~16ms). I don't want to
speculate too much on the underlying issue, but suffice it to say that
this patch alleviates the problem in my testing.
While the performance impact was most significant on macOS, with
rendering times cut by more than 50% in some cases, this also results in
a measurable performance difference on other systems with high density
grids.
Co-authored-by: Christian Duerr <contact@christianduerr.com>
|
|
|
|
|
|
|
| |
This resolves an issue where negative window positions set in the
configuration file would not place the Alacritty window in the correct
location.
Fixes #4061.
|
|
|
|
| |
This works around the problem that crates pushed to crates.io cannot
reference files outside of their crate directory.
|
| |
|
|
|
| |
Fixes #4040.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When searching without vi mode the display is no longer reset when the
user hasn't jumped between matches at all. Since there's no reason to
confirm the search, we shouldn't just reset the viewport without a good
reason.
The search is now also restarted completely when the entire search regex
is deleted. While this doesn't reset to the original viewport position
if the user has jumped between matches, it should make things feel a
little less arbitrary.
Fixes #4020.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes two crashes related to search. The first crash was due to
variable shadowing computing the incorrect length of a search as soon as
it was started, causing an overflow after attempting a subtraction.
Since overflows are only debug mode checks, in release this would lead
to an IME positioned far, far beyond the window's boundaries (likely
offscreen).
The other bug was that the search was always started from the last
column in reverse search without vi mode, but after shrinking the
terminal width that origin point is no longer a valid part of the grid.
As a result it would cause an index out of bounds. The line was already
clamped to the grid, but now the same is also done for the column.
Fixes #3987.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
| |
|