aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src
Commit message (Collapse)AuthorAge
...
* Fix feature checking in cross buildsKirill Chibisov2020-10-10
| | | | | 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.
* Bump glutin to 0.25.0Kirill Chibisov2020-10-07
| | | | | | | | | | | | Fixes #4206. Fixes #4162. Fixes #4017. Fixes #3998. Fixes #3831. Fixes #3782. Fixes #3708. Fixes #2734. Fixes #2714. Fixes #1801.
* Fix non-ascii message bar text width calculationAlessandro Menezes2020-10-04
| | | | | | | | | | | | | | | | 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>
* Add support for single line terminalsii412020-09-27
| | | | | | | | | | | | | | | | | 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>
* Fix IME position with fullwidth chars in searchChristian Duerr2020-09-25
|
* Log new padding and cell size on 'SizeInfo' updateKirill Chibisov2020-09-24
| | | | This makes our logging of 'SizeInfo' changes more consistent with the one we're using when creating a new 'Display'.
* Fix CLI arguments without config fileChristian Duerr2020-09-20
| | | | | | | | | | | 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.
* Improve example for the -o CLI flagNathan Lilienthal2020-09-13
| | | Co-authored-by: Christian Duerr <contact@christianduerr.com>
* Pass existing CLI parameters to SpawnNewInstanceRohan Poojary2020-09-06
| | | Co-authored-by: Christian Duerr <contact@christianduerr.com>
* Fix multiline URL highlightingChristian Duerr2020-08-30
| | | | Fixes #4182.
* Add escape to report text area sizeAyose Cazorla2020-08-28
| | | | This implements the escapes `CSI 14 t` and `CSI 18 t` which report the text area size in pixels and characters.
* Unify term dimension callsChristian Duerr2020-08-25
| | | | | | | 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.
* Add CLI parameter to override config optionsChristian Duerr2020-08-22
| | | | | | | | 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.
* Fix config import error handlingChristian Duerr2020-08-22
|
* Add configuration file importsChristian Duerr2020-08-21
| | | | | | | | | | | | | | | | | | | 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.
* Add logging for crossfontChristian Duerr2020-08-14
| | | | 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.
* Fix selection scrolling with message bar visibleChristian Duerr2020-08-14
| | | | | | | 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.
* Use yellow/red from the config for message bar colorsKirill Chibisov2020-08-13
| | | | | | | | | | | | 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.
* Use user's background color for render timer textKirill Chibisov2020-08-13
| | | | | Using the user's background color in pair with red should provide better contrast.
* Add support for double underlinesChristian Duerr2020-08-12
| | | | | | | | | | | | | 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.
* Remove markdownish markup from `--help` outputKirill Chibisov2020-08-10
|
* Fix characters swallowed during searchChristian Duerr2020-08-09
| | | | This resolves a bug where characters get swallowed when pressing them after pressing backspace before the backspace key is released.
* Add ^C binding to cancel search and leave Vi modeChristian Duerr2020-08-10
| | | | Fixes #4089.
* Fix clippy issuesChristian Duerr2020-08-06
| | | Co-authored-by: Kirill Chibisov <contact@kchibisov.com>
* Use `tcgetpgrp` to get PID for SpawnNewInstanceChristian Duerr2020-08-06
| | | Fixes #4082.
* Reduce InstanceData footprintJoe Wilm2020-08-05
| | | | | | | | | | | | | | | | | | | | | | | | 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>
* Fix negative window positionChristian Duerr2020-08-02
| | | | | | | 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.
* Fix crates.io publishing restrictionsChristian Duerr2020-08-01
| | | | This works around the problem that crates pushed to crates.io cannot reference files outside of their crate directory.
* Bump minimum supported Rust version to 1.43.0Kirill Chibisov2020-07-28
|
* Fix scrolling with selection expansionChristian Duerr2020-07-27
| | | Fixes #4040.
* Fix viless search originChristian Duerr2020-07-25
| | | | | | | | | | | | | 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.
* Rename font crate to crossfontChristian Duerr2020-07-18
|
* Fix crashes during searchChristian Duerr2020-07-17
| | | | | | | | | | | | | | | | 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.
* Add different search label for backward searchChristian Duerr2020-07-17
|
* Fix selection update in viless searchChristian Duerr2020-07-17
|
* Add support for searching without vi modeChristian Duerr2020-07-15
| | | | | | | | 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.
* Fix padding change not being applied immediatelyKirill Chibisov2020-07-15
|
* Fix movement within search matchesChristian Duerr2020-07-14
| | | | | | | | | | | | | | | | | Previously the SearchEndNext and SearchEndPrevious match acted exactly like the SearchNext and SearchPrevious action, however this is not how vim works. In vim, regardless of direction the `gN` action always jumps to the next match start to the left of the cursor, while the `gn` action always jumps to the next search end to the right of the cursor. While both approaches might seem reasonable at first, vim's approach has a significant advantage w.r.t. predictability and automation of the movement. By always knowing which direction the motion goes to, this allows for mappings that reliably navigate inside the current match regardless of the global search direction. So deleting until the end of the match would always be `dgn` for example, regardless in which direction the user has jumped to it. Fixes #3953.
* Remove gui dependencies from alacritty_terminalKirill Chibisov2020-07-11
| | | | | | | | 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.
* Remove alacritty.yml mentions from font crate errorsKirill Chibisov2020-07-11
|
* Fix crash when configured font is missingChristian Duerr2020-07-11
| | | Fixes #3942.
* Add readline bindings to searchChristian Duerr2020-07-10
| | | Fixes #3938.
* Add option to run command on bell Kirill Chibisov2020-07-10
| | | Fixes #1528.
* Add regex scrollback buffer searchChristian Duerr2020-07-09
| | | | | | | | | | 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.
* Update --help for class option to match manpageJeff Windsor2020-07-04
|
* Fix live right-click expansionChristian Duerr2020-06-24
| | | | | | | | 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.
* Add selection expansionChristian Duerr2020-06-23
| | | | | | | 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.
* Add automatic scrolling during selectionChristian Duerr2020-06-18
| | | | | | | | | | | | | 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.
* Rework default config binding replacementKirill Chibisov2020-06-15
| | | | | | | | | | | | | | | | | | | 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.
* Cleanup window.rs importsChristian Duerr2020-06-08
| | | | | | | | | | | | | | | | 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.