aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Dürr <contact@christianduerr.com>2017-12-25 20:40:08 +0100
committerJoe Wilm <jwilm@users.noreply.github.com>2018-01-02 08:24:03 -0800
commitaa1f31785e754107fab154002abf9bc0b129aad1 (patch)
treea079b8a9a4123018e2f32195c77e22772346b6de
parent8ce553f28a2ae0d022a774e8341e66dca4079b63 (diff)
downloadalacritty-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.rs7
-rw-r--r--src/input.rs8
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