diff options
author | Christian Dürr <contact@christianduerr.com> | 2017-12-25 20:40:08 +0100 |
---|---|---|
committer | Joe Wilm <jwilm@users.noreply.github.com> | 2018-01-02 08:24:03 -0800 |
commit | aa1f31785e754107fab154002abf9bc0b129aad1 (patch) | |
tree | a079b8a9a4123018e2f32195c77e22772346b6de | |
parent | 8ce553f28a2ae0d022a774e8341e66dca4079b63 (diff) | |
download | alacritty-aa1f31785e754107fab154002abf9bc0b129aad1.tar.gz alacritty-aa1f31785e754107fab154002abf9bc0b129aad1.zip |
Add config option for faux scrollback
Some people have complained about the behavior of faux scrollback inside
of vim/tmux, however from what I can tell, alacritty behaves the same
way as other terminal emulators that support faux scrollback.
However there are a lot of terminal emulators that do not support faux
scrollback at all, which leads to people complaining about unusual
scroll behavior.
This is my proposal on how to solve this issue, by giving people that do
not like the VTE-Style faux scrolling the option to opt-out.
-rw-r--r-- | src/config.rs | 7 | ||||
-rw-r--r-- | src/input.rs | 8 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/config.rs b/src/config.rs index b941c882..aace4254 100644 --- a/src/config.rs +++ b/src/config.rs @@ -65,6 +65,10 @@ fn deserialize_duration_ms<'a, D>(deserializer: D) -> ::std::result::Result<Dura pub struct Mouse { pub double_click: ClickHandler, pub triple_click: ClickHandler, + + /// Send up/down arrow when scrolling in alt screen buffer + #[serde(default="true_bool")] + pub faux_scrollback: bool, } impl Default for Mouse { @@ -75,7 +79,8 @@ impl Default for Mouse { }, triple_click: ClickHandler { threshold: Duration::from_millis(300), - } + }, + faux_scrollback: true, } } } diff --git a/src/input.rs b/src/input.rs index 6c113ab4..ac4078ee 100644 --- a/src/input.rs +++ b/src/input.rs @@ -391,7 +391,9 @@ impl<'a, A: ActionContext + 'a> Processor<'a, A> { }; for _ in 0..(to_scroll.abs() as usize) { - if self.ctx.terminal_mode().intersects(mode::TermMode::ALT_SCREEN) { + if self.mouse_config.faux_scrollback && + self.ctx.terminal_mode().intersects(mode::TermMode::ALT_SCREEN) + { // Faux scrolling if code == 64 { // Scroll up one line @@ -426,7 +428,9 @@ impl<'a, A: ActionContext + 'a> Processor<'a, A> { 65 }; - if self.ctx.terminal_mode().intersects(mode::TermMode::ALT_SCREEN) { + if self.mouse_config.faux_scrollback && + self.ctx.terminal_mode().intersects(mode::TermMode::ALT_SCREEN) + { // Faux scrolling if button == 64 { // Scroll up one line |