aboutsummaryrefslogtreecommitdiff
path: root/alacritty_terminal/src
Commit message (Collapse)AuthorAge
...
* Invert fixed color cursor if it's close to cell bgChristian Duerr2020-07-26
| | | | | | | | | | | | | 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.
* Add secondary DA supportChristian Duerr2020-07-23
| | | | | | | | | | | 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.
* 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 cursor reflowChristian Duerr2020-07-15
| | | | | | | | | | | | | | | | | | | | | This resolves three different issues with cursor reflow. The first issue was that the cursor could reach the top of the screen during reflow, since content was pushed into history despite viewport space being available. Since the cursor cannot leave the viewport, this would insert new space between the cursor and content (see #3968). Another issue was that the wrapline flag was not set correctly with content being available behind the cursor. Since the cursor is not necessarily at the end of the line, it is possible that the cursor should reflow to the next line instead of staying on the current one and setting the wrapline flag. The last bug fixed in this is about reflow with content available behind the cursor. Since that might have en effect on new lines being inserted and deleted below the cursor, the cursor needs to be reflown based on it. Fixes #3968.
* Fallback to SHELL instead of passwd if presentMattbazooka2020-07-14
| | | | | | | | | | | | | Instead of just always falling back to the shell specified in the passwd file when no config or cli shell was specified, Alacritty will not first look at the `$SHELL` environment variable. If this is unset, it will still read the passwd file. Since macOS is a bit peculiar and does not set the `$SHELL` environment variable by default, it is set manually to the shell used by Alacritty while any existing `$SHELL` variables are ignored. This matches the behavior of iTerm and Terminal.app. Co-authored-by: Christian Duerr <contact@christianduerr.com>
* Fix crash on cursor resizeChristian Duerr2020-07-14
| | | Fixes #3960.
* 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.
* 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.
* Fix cursor reflowChristian Duerr2020-07-09
| | | | | | | | | | | | | | | | | | | | | | 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.
* Fix saved cursor handlingChristian Duerr2020-07-06
| | | | | | | | | | | 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.
* Preserve linewrap flag across alt screen switchesChristian Duerr2020-07-06
| | | | | | 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.
* Document supported escape sequencesChristian Duerr2020-07-03
| | | Fixes #3440.
* Fix reflow of empty wrapped cursor lineChristian Duerr2020-07-01
| | | | | | | | | | | 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.
* Fix foreground dimming with truecolor textCarlo Abelli2020-06-29
| | | Fixes #3766.
* Rename alt_grid to inactive_gridChristian Duerr2020-06-28
| | | | | | Since the alt_grid is not always the alternate screen buffer, the name inactive_grid should fit much better. Fixes #3504.
* Clear selection on clear line/screen escapesKirill Chibisov2020-06-26
| | | | | Selection is now cleared if clear line or clear screen escape sequences are clearing content behind it.
* Fix scroll down escape pulling lines from historyChristian Duerr2020-06-25
| | | | | | | | | | | | | | | | | 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.
* 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.
* Remove copypasta dependency from alacritty_terminalKirill Chibisov2020-06-07
|
* Remove copyright notice from filesChristian Duerr2020-06-06
| | | | | | | | | | | | | | 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.
* Fix class and cursor thickness deserializationKirill Chibisov2020-06-05
| | | Fixes #3820.
* Refactor Shell, Command, and Launcher to share implKirill Chibisov2020-06-05
|
* Add cargo feature for WinPTYDavid Hewitt2020-06-02
|
* Refactor Term/Grid separationChristian Duerr2020-05-30
| | | | | | | | | | | 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`.
* Set IUTF8 input setting on supported platformsKirill Chibisov2020-05-27
| | | Fixes #3769.
* Fix crash when writing wide char in last columnChristian Duerr2020-05-17
| | | | | | | | This resolves an issue where trying to write a fullwidth character in the last column would crash Alacritty, if linewrapping was disabled. Instead of assuming that the linewrap put after the linewrapping spacer was successful, the character writing is now skipped completely when trying to put a wide character in the last column.
* Change default color scheme to 'Tomorrow Night'Alexey Chernyshov2020-05-16
| | | Fixes #3404.
* Extend style guideline documentationChristian Duerr2020-05-05
|
* Fix clippy warningsMatthias Krüger2020-05-01
|
* Fix startup locale on macOSCasper Rogild Storm2020-04-30
| | | | Fixes #2800. Fixes #2566.
* Clear selection on grid swapRémi Garde2020-04-20
| | | Fixes #3290.
* Add config option to set cursor thicknessKirill Chibisov2020-04-15
| | | Fixes #3526.
* Use config colors to theme Wayland decorationsKirill Chibisov2020-04-09
| | | Fixes #2092.
* Fix tabstops not being reset with 'reset'Kirill Chibisov2020-03-30
|
* Remove `fs::read_to_string` reimplementationsChristian Duerr2020-03-26
| | | | | | After two previous PRs already removed some instances of reimplementations of the `fs::read_to_string` functionality, this removes the last remaining occurence and with it all instances of `File::open`. So this should remove them all for good.
* Fix cursor position after alt screen resizeChristian Duerr2020-03-24
| | | | | | | | | | | | | | | | | This fixes a regression introduced in 4cc6421, which ignored the main grid's cursor when increasing the number of lines available, causing incorrect cursor position after restoring to the primary screen. Additionally another similar bug has been fixed where the grid was not scrolled correctly when shrinking while in the alternate screen. When the grid is resized multiple lines at once, there was also an issue with Alacritty either pulling all lines from history or none at all, instead of mixing both approaches and pulling just what is required. This lead to incorrect cursor positions when the resize could partially make use of history. Fixes #3499.
* Fix invisible selectionChristian Duerr2020-03-21
| | | | This resolves a bug where the very first/last cell would still be selected when both the start and the end were below/above the viewport.
* Add modal keyboard motion modeChristian Duerr2020-03-18
| | | | | | | | | | | | | | | | | | | This implements a basic mode for navigating inside of Alacritty's history with keyboard bindings. They're bound by default to vi's motion shortcuts but are fully customizable. Since this relies on key bindings only single key bindings are currently supported (so no `ge`, or repetition). Other than navigating the history and moving the viewport, this mode should enable making use of all available selection modes to copy content to the clipboard and launch URLs below the cursor. This also changes the rendering of the block cursor at the side of selections, since previously it could be inverted to be completely invisible. Since that would have caused some troubles with this keyboard selection mode, the block cursor now is no longer inverted when it is at the edges of a selection. Fixes #262.
* Fix live config reload for window titleChristian Duerr2020-03-14
| | | | | | | | | | | | | This enables live config reload for the window title. This includes updating the title after it has been pushed and popped from the title stack. The dynamic title option also isn't disabled automatically anymore when the title is set in the config. If the title is set from CLI, the behavior is unchanged and dynamic title changes are still disabled. If the dynamic title is disabled in the config, the title is still updated when the config title is changed. Dynamic title now only prevents changes to the UI's title.
* Add option to pick Linux/BSD backendsKirill Chibisov2020-03-13
| | | | | | This commit adds two cargo features `x11` and `wayland` to pick Linux/BSD backends, with both enabled by default. Fixes #3340.
* Fix crash when selecting last columnChristian Duerr2020-03-12
| | | | | | | | | This resolves a bug where the selection start would be set to the number of columns, causing an out of bounds when trying to index with it. Instead of extending the selection beyond the grid when the right side of the last column is the start of the selection, the selection will now start in the beginning of the next line. Fixes #3446.
* Fix selection with invisible start and endChristian Duerr2020-03-07
| | | | | This resolves an issue with the selection clamping, where no selection would be rendered at all when the start was above the viewport while the end was below it.
* Remove `ref_test` option from configuration fileChristian Duerr2020-03-04
| | | | | | | | | This removes the `debug.ref_test` option from the configuration file, after this change was originally requested from kchibisov in https://github.com/alacritty/alacritty/pull/3396. While this option is valueable for the CLI, it provides no value in the configuration file.
* Remove HollowBlock/Hidden config cursor stylesRémi Garde2020-03-02
| | | Fixes #3367.
* Remove `tabspaces` config optionChristian Duerr2020-03-01
| | | | | | | This completely removes the tabspaces option from the Alacritty configuration, due to frequent misuse of it. Based on some research, none of the terminal emulators support setting the value for tabspaces or read the terminfo to determine init_tabs value at startup. The tested terminal emulators were URxvt, XTerm, and Termite.
* Fix tabs across linewrapChristian Duerr2020-03-01
| | | | | | | | | | | | This resolves an issue with tabs not breaking across line boundaries, instead the characters would just all get written to the last column and thus be lost. It also tweaks the behavior of what happens when the terminal resizes with the default tabspaces changed, using something like the `tabs` program. Previously all tabstops would be reset to the default on resize, which is what URxvt does. Now the tabspaces are kept and the new columns are filled with the default tabstops, which emulates Termite.
* Fix log target of color config errorsKirill Chibisov2020-02-28
| | | | Due to incorrect log target in the color config errors, the message bar was not cleared when the error was fixed.
* Remove docs for 0xRRGGBB color notationChristian Duerr2020-02-27
|
* Fix config reload updating incorrect gridChristian Duerr2020-02-23
|