Commit graph

1755 commits

Author SHA1 Message Date
Christian Duerr ee2c5a6cdd
Unify term dimension calls
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.
2020-08-25 21:24:16 +03:00
Christian Duerr 6cfcd7c259
Add CLI parameter to override config options
This uses the facilities added in
3c3e6870de to allow overriding individual
configuration file options dynamically from the CLI using the
--options/-o parameter.

Fixes #1258.
2020-08-22 20:55:27 +00:00
Christian Duerr 92a3d482d0
Fix config import error handling 2020-08-22 00:38:09 +00:00
Christian Duerr 3c3e6870de
Add configuration file imports
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.
2020-08-21 18:48:48 +03:00
grumpey 3a7130086a
Update spec file 2020-08-15 14:39:11 +00:00
Christian Duerr 8a6fe7e5d0
Add logging for crossfont
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.
2020-08-14 21:22:02 +00:00
Christian Duerr 0003f6683f
Fix selection scrolling with message bar visible
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.
2020-08-14 10:26:42 +03:00
Kirill Chibisov 0a1683e84d
Use yellow/red from the config for message bar colors
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.
2020-08-13 14:59:35 +03:00
Kirill Chibisov f221108086
Use user's background color for render timer text
Using the user's background color in pair with red should provide better
contrast.
2020-08-13 10:55:11 +00:00
Christian Duerr b904207b19
Add support for double underlines
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.
2020-08-12 19:05:22 +03:00
Christian Duerr 96ea5c445e
Fix handling of wrapline flag in last line
This resolves an issue where Alacritty would crash when a wrapline flag
was present in the last column of the last line.

While it should not be possible to achieve this with normal text flow,
it is possible to rotate the content downwards using the `CSI Ps T`
escape, causing this bug to occur.

This also works around other issues like the vi cursor jumping to the
top of the screen when trying to move beyond the last column using the
`l` key. In debug mode this even lead to a crash due to the overflow.

Fixes #4109.
2020-08-12 08:36:24 +00:00
Christian Duerr 424791842f
Add Vi to available binding modes 2020-08-12 10:37:54 +03:00
Kirill Chibisov ef7cb258b2
Remove copyright notice from files
This commit is a follow-up to 7aafbb757d485c5ff065324464dde8b5322cdd921
which was an effort to remove copyright notice from files.
2020-08-10 16:07:19 +03:00
Kirill Chibisov b630bb45df
Remove markdownish markup from --help output 2020-08-10 15:22:11 +03:00
Christian Duerr 1d00883f10
Fix characters swallowed during search
This resolves a bug where characters get swallowed when pressing them
after pressing backspace before the backspace key is released.
2020-08-09 23:29:58 +00:00
Christian Duerr 4b516c6365
Add ^C binding to cancel search and leave Vi mode
Fixes #4089.
2020-08-10 01:57:55 +03:00
Christian Duerr 576252294d
Add support for colon separated SGR parameters
This implements the colon separated form of SGR 38 and 48.

Fixes #1485.
2020-08-07 22:37:23 +00:00
Canh Dinh b14d032432
Rework installation instructions
Since users should be capable of finding packages for their
distributions, this removes all instructions that point users directly
at specific packages.

The third party repositories like COPR have been kept, since those
are more difficult to find.

The structure of the installation instructions has also been reworked to
adjust for this and the post build instructions should be a bit cleaner
now.

Co-authored-by: Christian Duerr <contact@christianduerr.com>
2020-08-07 14:13:41 +00:00
Christian Duerr c478a9fc52
Fix clippy issues
Co-authored-by: Kirill Chibisov <contact@kchibisov.com>
2020-08-06 01:09:46 +00:00
Christian Duerr 291de2500f
Use tcgetpgrp to get PID for SpawnNewInstance
Fixes #4082.
2020-08-06 00:42:49 +00:00
Joe Wilm 99c34c7ce9
Reduce InstanceData footprint
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>
2020-08-05 00:24:51 +00:00
David de84ab2072
Fix typo in example config file 2020-08-03 18:28:41 +00:00
Mark Stosberg bfdfe2b0dd
Document keybinding actions 2020-08-02 22:42:17 +00:00
Christian Duerr 1cf93dd334
Fix travis release deployment
This resolves an issue with travis release deployment where tags would
cause a release deployment even if the tag did not match the `vX.Y.Z`
format.
2020-08-02 22:00:05 +00:00
Christian Duerr 8b5787a21e
Fix negative window position
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.
2020-08-02 20:09:53 +00:00
Raphael Martin Schindler d55d09ee68
Fix typo in readme 2020-08-02 15:32:08 +00:00
Joshua Steele 5c8aa679ae
Fix configuration file documentation 2020-08-01 11:16:12 +00:00
Christian Duerr 9167461eb3
Fix crates.io publishing restrictions
This works around the problem that crates pushed to crates.io cannot
reference files outside of their crate directory.
2020-08-01 01:11:24 +00:00
Kirill Chibisov d192720f90 Add 0.5.0 announcement blog to readme
This is only an update to the readme and does not represent a stable
release.
2020-08-01 00:38:28 +00:00
Kirill Chibisov c015b39070 Remove 0.5.0 changelog suffix
This is only an update to the changelog and does not represent a stable
release.
2020-08-01 00:38:28 +00:00
Christian Duerr a2b7c9544b Unify changelog section order
This clarifies the order of subsections in the changelog. All entries
are now defined in the order `Packaging`, `Removed`, `Added`, `Changed`
and `Fixed`.

The sections `Security` and `Deprecated` have been removed. Since
deprecation should always just be a soft deprecation with clear user
warnings, it's not much different from just `Changed`, so that should
make it easier to decide where to put things. The `Security` section is
often not clear enough since a lot of changes might have some form of
security impact depending on interpretation. Since there's unlikely to
be any major security advisories from the Alacritty project, that
section is not particularly useful.

The `Added`, `Changed` and `Fixed` order follows the interest of the
user and the impact on them. This puts the most interesting new features
front and center while allowing to go for a deep dive to see if specific
bugs have been fixed.

The `Removed` section was put last since realistically this should not
affect users. All options should be gradually deprecated and no major
features should just get removed. So most of the time this will just
list deprecated features that are now completely removed, which usually
means there's no impact for users that updated from the last version.
2020-07-31 21:01:36 +00:00
Christian Duerr 6378830469 Fix 0.5.0 changelog 2020-07-31 21:01:36 +00:00
Christian Duerr 57c4ac9145
Remove snap packaging config
Since Alacritty should not be responsible for packaging and the
maintainers of the snap package have not kept it up to date, this
removes its configuration file.
2020-07-30 04:02:16 +00:00
Kirill Chibisov 6c4e45f3a6
Bump minimum supported Rust version to 1.43.0 2020-07-28 13:00:55 +03:00
Kirill Chibisov b7faa9f437
Fix CellForeground and CellBackground cursor colors
This commit fixes regression introduced in
bedf5f3004, when setting
certain CellForeground/CellBackground combinations stoppped working.
2020-07-27 20:49:25 +00:00
Christian Duerr a7d5a965c5
Fix scrolling with selection expansion
Fixes #4040.
2020-07-27 22:05:25 +03:00
Christian Duerr 86c978694a
Document rejected window ops escapes
Fixes #4035.
2020-07-26 14:51:15 +00:00
Christian Duerr bedf5f3004
Invert fixed color cursor if it's close to cell bg
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.
2020-07-26 01:04:39 +00:00
Christian Duerr 9a4d847d89
Fix viless search origin
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.
2020-07-25 14:05:11 +00:00
Christian Duerr 555a85ed95
Remove outdated sections from README 2020-07-24 16:29:00 +00:00
Christian Duerr d7425979cf
Document Alacritty's features 2020-07-23 22:32:38 +00:00
Christian Duerr 0dfd8601c9
Add secondary DA support
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.
2020-07-23 21:55:15 +00:00
Christian Duerr dd32447bc2
Improve selection expansion changelog entry 2020-07-22 18:11:24 +00:00
Christian Duerr 3688b5c075
Bump version to 0.6.0-dev 2020-07-19 20:37:59 +00:00
Christian Duerr f0cb1e7cf3
Bump alacritty_terminal version
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.
2020-07-19 14:14:31 +00:00
Christian Duerr f3c5760236
Fix rustfmt build failures 2020-07-18 18:02:06 +00:00
Christian Duerr 7a4b4a6a24
Rename font crate to crossfont 2020-07-18 01:27:41 +00:00
Christian Duerr 411318e6a5
Fix crashes during search
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.
2020-07-17 21:12:11 +00:00
Christian Duerr 82d2cb0be6
Add different search label for backward search 2020-07-17 01:26:53 +00:00
Christian Duerr f608fece45
Fix selection update in viless search 2020-07-17 00:30:34 +00:00