Age | Commit message (Collapse) | Author |
|
|
|
This prevents cell_width or cell_height being zero.
Fixes #1693
|
|
Automatically remove all selections when part of the screen is cleared.
This fixes issues in applications like `less -S` where a selection would
stay around after scrolling horizontally.
XTerm and URxvt both choose to always remove the selection, even if it's
outside of the cleared area, however VTE only clears the selection if
any part of it is inside the cleared area.
To keep things simple, Alacritty has adopted the behavior of XTerm and
URxvt to always clear selections.
This fixes #1644.
|
|
The default shift+pgup/pgdown buttons were sending the escape sequences
specified by the official standard, however most terminal emulators like
XTerm, URxvt and VTE make an exception for this special case and instead
scroll the native history buffer.
Both XTerm and URxvt do never send the escapes for Shift+PgUp/PgDown,
however VTE does send them in the alternate screen.
Since Alacritty already supports keybindings based on terminal mode and
the binding to scroll the history is useless when in the alternate
screen buffer, Alacritty is now following VTEs behavior here, allowing
applications in the alt screen (like vim) to handle this escape.
Fixes #1989.
|
|
The warning and error messages now don't overwrite other terminal
content anymore but instead resize the terminal to make sure that text
can always be read.
Instead of just showing that there is a new error and pointing to the log,
errors will now be displayed fully in multiple lines of text, assuming that
there is enough space left in the terminal.
Explicit mouse click handling has also been added to the message bar,
which made it possible to add a simple `close` button in the form of
`[X]`.
Alacritty's log file location is now stored in the `$ALACRITTY_LOG`
environment variable which the shell inherits automatically.
Previously there were some issues with the log file only being deleted
when certain methods for closing Alacritty were used (like typing
`exit`). This has been reworked and now Ctrl+D, exit and signals should
all work properly.
Before the config is reloaded, all current messages are now dropped.
This should help with multiple terminals all getting clogged up at the
same time when the config is broken.
When one message is removed, all other duplicate messages are
automatically removed too.
|
|
Since scrolling the terminal moves around the underlying data structure
of the terminal, the URL selection would search for the URL at the
position where the click would have been without any scrolling.
By adding the viewport offset to the click position, the URL clicking
now searches at the correct location.
This fixes https://github.com/jwilm/alacritty/issues/2076.
|
|
Fixes #1582.
Fixes #1875.
|
|
Since the IME was positioned using physical coordinates,
the location would be incorrect with monitors using a DPR
other than 1.0.
This has been resolved by converting the physical position
to a logical position using the methods built into winit.
Fixes #2056.
|
|
|
|
|
|
Due to the merging of configuration files on all platforms, it has been
made impossible to completely disable URL launching without still
executing some kind of program like `true`.
Setting the launcher to `None` in the config, will now disable it
completely.
This fixes #2058.
|
|
When loading an empty configuration file, Alacritty only prints an info
message and then proceeds to load the default config. However when
reloading the configuration file it would throw a hard error.
This has been fixed and a hard error is now only thrown when an error is
returned during reload which isn't the empty file error.
|
|
|
|
By scaling fractional scaling by scrolling multiplier
before conversion to lines it is now possible to scroll
much more accurately with touchpads.
The `scrolling.multiplier` now also applies to touchpads.
|
|
The clippy tests had to be run on nightly previously since it wasn't
available with the stable compiler yet, however this had the potential
to fail a lot since not all nightly builds offer clippy.
Since clippy is now available for stable rust, moving clippy to a stable
build should make sure that the failure rate of the CI job is cut down
to a minimum.
This fixes https://github.com/jwilm/alacritty/issues/2007.
|
|
|
|
The rusttype backend did not properly support manually specifying font
styles, but instead chose to panic when they are specified.
The rusttype implementation now provides a proper implementation for
handling `bold`, `italic` and `regular` font styles.
This fixes #2020.
|
|
|
|
|
|
All configuration fields now have fallback values which will be used if
the field is not present. This includes mouse, key bindings and platform
specific differences.
The mouse and key bindings are now filled by default, if the user
rebinds a default mapping, it will be overwritten. To unbind a default
binding, it can be mapped to `chars: ""`.
Since all platform differences can now be correctly handled by the
`src/config/mod.rs` code, it's no longer necessary to maintain separate
configuration files, so the `alacritty_macos.yml` and
`alacritty_windows.yml` have been deleted.
Fixes #40.
Fixes #1923.
|
|
When compiling ncurses with the `--enable-hard-tabs` option, it will
make use of tabs to speed up cursor movement. These tabs can be set at
positions which will overwrite existing characters.
Since these are only for movement and not supposed to write anything to
the terminal, it is now checked that a cell does not contain any
character before writing a tab to it.
This fixes #1933.
|
|
Since the Alacritty configuration file is written to the filesystem at
startup, this could create issues when the system does not have any free
space left.
To circumvent this problem, the default configuration is now returned
even when the configuration file could not be created. Instead of
crashing Alacritty, an error is now emitted.
Fixes #1936.
|
|
Since there was no check for the button state for semantic and line
selection, it was possible to trigger selection using the middle and
right mouse button. This has been resolved by explicitly checking for
the pressed button before starting these selections.
To further ensure that double and triple clicks are only triggered when
the same button is pressed multiple times, the last pressed button is
stored.
This fixes #1915.
|
|
The general style for errors, warnings and info messages is to start
with a capitalized letter and end without a period. The main exception
is when dealing with nouns that are clearer with special case handling,
e.g. "macOS failed to work" or "ioctl is borked".
|
|
Various special characters and character combinations were not handled
correctly with URL detection. All these instances have been resolved and
covered by various tests to prevent future regressions.
Notable fixes include single quotes working more properly now (like
`'https://example.org'`) and IPv6 URL support.
Since URL detection is now more than just a few lines of code and it's
mostly unrelated to the `Term`, it has also been extracted into the
`src/url.rs` file together with all URL-related tests.
|
|
This limits the number of allowed schemes for the URL launcher, to
reduce the number of false-positives.
The accepted URL schemes are now:
- http
- https
- mailto
- news
- file
- git
- ssh
- ftp
This fixes #1727.
|
|
Some characters were not correctly stripped from the end of URLs with
the URL launching feature. The list of URL separator characters has been
extended to include '<', '>', '"', ' ', '{', '}', '|', '\\', '^' and
'`', following the URL specification defined here:
https://tools.ietf.org/html/rfc3987#page-13
Additionally, a list of characters which are always stripped from the
end of URLs has been setup to contain '.', ',', ';', ':', '?', '!', and
'/'.
This fixes #1753.
|
|
This fixes #1903.
|
|
|
|
The 2d9afb9b395ea0cc71432613e0df104aefcf24c1 commit lead to mouse
actions being triggered on both press and release of mouse buttons.
This reverts the mouse binding behavior back to the previous state where
they are only triggered when the button is pressed, not when it's
released.
The `mouse_input` method's structure was overly complicated and did not
accurately represent the logic which should be implemented by it. This
is likely what caused the regression in 2d9afb9b395ea0cc71432613e0df104aefcf24c1.
To prevent similar issues from popping up in the future, the method has
been cleaned up and the structure should now represent the logic
required more logically.
|
|
To allow for a mouse binding to properly copy text, we should process
the mouse binding actions before thee built-in functionality, which will
clear the selection on right click, for example.
|
|
Update the Windows shell settings and comments so they look familiar to
Windows users, but comment out the shell settings for consistency with
Linux and Mac.
Stop checking COMSPEC when the configuration file does not specify which
shell to use, and just default to PowerShell.
|
|
|
|
Since bitmap fonts do not provide their own underline metrics, the
self-calculated metrics which have been used for rusttype are now also
used for bitmap fonts with freetype.
The rusttype and bitmap fallback metrics have incorrectly offset the
underline by the underline height. Since the position is already defined
as the center point, that is not necessary.
All rounding and clamping has also been removed from the font library,
so that the raw values are reported now. The clamping and rounding is
now done in the line renderer.
|
|
Since completely empty cells are not reported by the renderable cells
iterator, the line renderer has incorrectly assumed that these cells did
not cause any change in cell state, leading to underlines spanning empty
cells.
Instead of assuming that the line state is unchanged, the line
calculation now correctly interprets a jump in the renderable cells
column as an interruption of the line.
This fixes #1960.
|
|
|
|
|
|
The latter isn't maintained anymore and this removes a bunch of outdated
dependencies.
|
|
|
|
Alacritty is often spawned through the executable on
Windows. Since this doesn't allow access to the stderr
and crashes on startup are more common on Windows
due to the agent, it can be hard to troubleshoot issues.
This reports all Alacritty crashes through error popups
on Windows, which should resolve the problem of
crashing Alacritty instances without any error feedback.
|
|
This makes use of the new rectangle rendering methods used to display
the colored visual bell to add proper underline and strikeout support to
Alacritty.
|
|
The delay between the alt key and the actual received key might cause
certain key sequences to be missed, ex. when tmux has its escape-time
set to 0.
|
|
This adds the option to specify the color of the visual bell using the
`visual_bell.color` configuration setting.
This is done by rendering a big quad over the entire screen, which also
opens up options to draw other arbitrary rectangles on the screen in the
future.
|
|
This resolves issues with copy-pasting tabs by including them in the
pasted string.
Selection of tabs is still inconsistent with what might be expected
based on other terminal emulators, however the behavior hasn't
regressed.
This fixes https://github.com/jwilm/alacritty/issues/219.
|
|
Fixes #1897.
|
|
This resolves a lot of NLL issues, however full NLL will be necessary to
handle a couple of remaining issues.
|
|
Instead of rendering zero-width characters as full characters, they are
now properly rendered without advancing the cursor.
Because of performance limitations, this implementation only supports up
to 5 zero-width characters per cell. However, as a result of this
limitation there should not be any performance impact.
This fixes #1317, fixes #696 and closes #1318.
|
|
|
|
Due to the lazy initialization of lines in the Alacritty history, the
recording of ref tests was broken. Because a WM would often resize the
ref test window after it was spawned, some additional lines were
initialized in the stored ref test.
To make sure lazy initialization does not play any role in the recording
and replaying of reftests, before recording and replaying the tests, the
complete grid is initialized and then truncated. This should make sure
that only the relevant lines are kept.
|
|
|