diff options
author | Christian Duerr <contact@christianduerr.com> | 2017-12-29 18:37:46 +0100 |
---|---|---|
committer | Joe Wilm <jwilm@users.noreply.github.com> | 2018-01-02 08:24:03 -0800 |
commit | b01dc062c704ae3163ca6272dab5d4ec193430a6 (patch) | |
tree | a19aa6586dd5fd364be51c57192030703b1b42bc | |
parent | 9797bd72bca6ee496561714dc1cda4071bebf045 (diff) | |
download | alacritty-b01dc062c704ae3163ca6272dab5d4ec193430a6.tar.gz alacritty-b01dc062c704ae3163ca6272dab5d4ec193430a6.zip |
Address feedback
The config documentation has been changed to make it clear which part of
the documentation is related to which setting.
The faux scrollback part of the `scroll_terminal` method has been
cleaned up by making use of the fact that the `codepoint + 1` can be
used in the escape sequence which is used for scrolling.
-rw-r--r-- | alacritty.yml | 25 | ||||
-rw-r--r-- | alacritty_macos.yml | 25 | ||||
-rw-r--r-- | src/input.rs | 23 |
3 files changed, 37 insertions, 36 deletions
diff --git a/alacritty.yml b/alacritty.yml index 0901b7fe..07e0bfc5 100644 --- a/alacritty.yml +++ b/alacritty.yml @@ -197,20 +197,23 @@ background_opacity: 1.0 mouse_bindings: - { mouse: Middle, action: PasteSelection } -# Mouse settings -# -# The `faux_scrollback_lines` setting controls the number -# of lines the terminal should scroll when the alternate -# screen buffer is active. This is used to allow mouse -# scrolling for applications like `man`. -# To disable this completely, set `faux_scrollback_lines` to 0. -# -# The `double_click` and `triple_click` settings control the time -# alacritty should wait for accepting multiple clicks as one double -# or triple click. mouse: + # Click settings + # + # The `double_click` and `triple_click` settings control the time + # alacritty should wait for accepting multiple clicks as one double + # or triple click. double_click: { threshold: 300 } triple_click: { threshold: 300 } + + # Faux Scrollback + # + # The `faux_scrollback_lines` setting controls the number + # of lines the terminal should scroll when the alternate + # screen buffer is active. This is used to allow mouse + # scrolling for applications like `man`. + # + # To disable this completely, set `faux_scrollback_lines` to 0. faux_scrollback_lines: 1 selection: diff --git a/alacritty_macos.yml b/alacritty_macos.yml index 4b44b3f4..aaa38d21 100644 --- a/alacritty_macos.yml +++ b/alacritty_macos.yml @@ -178,20 +178,23 @@ background_opacity: 1.0 mouse_bindings: - { mouse: Middle, action: PasteSelection } -# Mouse settings -# -# The `faux_scrollback_lines` setting controls the number -# of lines the terminal should scroll when the alternate -# screen buffer is active. This is used to allow mouse -# scrolling for applications like `man`. -# To disable this completely, set `faux_scrollback_lines` to 0. -# -# The `double_click` and `triple_click` settings control the time -# alacritty should wait for accepting multiple clicks as one double -# or triple click. mouse: + # Click settings + # + # The `double_click` and `triple_click` settings control the time + # alacritty should wait for accepting multiple clicks as one double + # or triple click. double_click: { threshold: 300 } triple_click: { threshold: 300 } + + # Faux Scrollback + # + # The `faux_scrollback_lines` setting controls the number + # of lines the terminal should scroll when the alternate + # screen buffer is active. This is used to allow mouse + # scrolling for applications like `man`. + # + # To disable this completely, set `faux_scrollback_lines` to 0. faux_scrollback_lines: 1 selection: diff --git a/src/input.rs b/src/input.rs index 8b66cb61..fa1ce385 100644 --- a/src/input.rs +++ b/src/input.rs @@ -424,26 +424,21 @@ impl<'a, A: ActionContext + 'a> Processor<'a, A> { } fn scroll_terminal(&mut self, mouse_modes: TermMode, code: u8) { + debug_assert!(code == 64 || code == 65); + let faux_scrollback_lines = self.mouse_config.faux_scrollback_lines; if self.ctx.terminal_mode().intersects(mouse_modes) { self.normal_mouse_report(code); } else if faux_scrollback_lines > 0 { // Faux scrolling - if code == 64 { - // Scroll up by `faux_scrollback_lines` - let mut content = String::with_capacity(faux_scrollback_lines * 3); - for _ in 0..faux_scrollback_lines { - content = content + "\x1bOA"; - } - self.ctx.write_to_pty(content.into_bytes()); - } else { - // Scroll down by `faux_scrollback_lines` - let mut content = String::with_capacity(faux_scrollback_lines * 3); - for _ in 0..faux_scrollback_lines { - content = content + "\x1bOB"; - } - self.ctx.write_to_pty(content.into_bytes()); + let cmd = code + 1; // 64 + 1 = A, 65 + 1 = B + let mut content = Vec::with_capacity(faux_scrollback_lines * 3); + for _ in 0..faux_scrollback_lines { + content.push(0x1b); + content.push('O' as u8); + content.push(cmd); } + self.ctx.write_to_pty(content); } } |