summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authora5ob7r <12132068+a5ob7r@users.noreply.github.com>2021-07-08 07:05:05 +0900
committerGitHub <noreply@github.com>2021-07-07 22:05:05 +0000
commit72675db3826ced63990fdede3dcaf07e76b1dde7 (patch)
tree6feec37157f281f43f2b7fd577beeb4be70f0ede
parent0486c7cb138564422a11d14ce002dd121327d700 (diff)
Fix leaving vi mode with active selection
This bug comes from 530de00049c2afcc562d36ccdb3e6afa2fe396a5. The vi cursor movement changes text selection range when it is on vi mode. On the other hand the cursor movement doesn't change the range when it isn't on vi mode. So preserve text selection range by toggling vi mode early.
-rw-r--r--CHANGELOG.md1
-rw-r--r--alacritty.yml6
-rw-r--r--alacritty/src/config/bindings.rs8
3 files changed, 8 insertions, 7 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4e5543b1..bd81bd57 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,6 +19,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Incorrect vi cursor position after invoking `ScrollPage*` action
- Slow PTY read performance with extremely dense grids
- Crash when resizing during vi mode
+- Unintentional text selection range change after leaving vi mode
## 0.8.0
diff --git a/alacritty.yml b/alacritty.yml
index 21f06fd0..a7628203 100644
--- a/alacritty.yml
+++ b/alacritty.yml
@@ -458,7 +458,7 @@
# Each hint must have a `regex` and either an `action` or a `command` field.
# The fields `mouse`, `binding` and `post_processing` are optional.
#
- # The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and
+ # The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and
# `mouse.mods` accept the same values as they do in the `key_bindings` section.
#
# The `mouse.enabled` field controls if the hint should be underlined while
@@ -730,11 +730,11 @@
#- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom }
# Vi Mode
- #- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom }
#- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode }
+ #- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom }
#- { key: Escape, mode: Vi|~Search, action: ClearSelection }
- #- { key: I, mode: Vi|~Search, action: ScrollToBottom }
#- { key: I, mode: Vi|~Search, action: ToggleViMode }
+ #- { key: I, mode: Vi|~Search, action: ScrollToBottom }
#- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode }
#- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp }
#- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown }
diff --git a/alacritty/src/config/bindings.rs b/alacritty/src/config/bindings.rs
index c324459e..57237ad3 100644
--- a/alacritty/src/config/bindings.rs
+++ b/alacritty/src/config/bindings.rs
@@ -424,16 +424,16 @@ pub fn default_key_bindings() -> Vec<KeyBinding> {
F19, ~BindingMode::VI, ~BindingMode::SEARCH; Action::Esc("\x1b[33~".into());
F20, ~BindingMode::VI, ~BindingMode::SEARCH; Action::Esc("\x1b[34~".into());
NumpadEnter, ~BindingMode::VI, ~BindingMode::SEARCH; Action::Esc("\n".into());
- Space, ModifiersState::SHIFT | ModifiersState::CTRL, +BindingMode::VI, ~BindingMode::SEARCH;
- Action::ScrollToBottom;
Space, ModifiersState::SHIFT | ModifiersState::CTRL, ~BindingMode::SEARCH;
Action::ToggleViMode;
+ Space, ModifiersState::SHIFT | ModifiersState::CTRL, +BindingMode::VI, ~BindingMode::SEARCH;
+ Action::ScrollToBottom;
Escape, +BindingMode::VI, ~BindingMode::SEARCH;
Action::ClearSelection;
I, +BindingMode::VI, ~BindingMode::SEARCH;
- Action::ScrollToBottom;
- I, +BindingMode::VI, ~BindingMode::SEARCH;
Action::ToggleViMode;
+ I, +BindingMode::VI, ~BindingMode::SEARCH;
+ Action::ScrollToBottom;
C, ModifiersState::CTRL, +BindingMode::VI, ~BindingMode::SEARCH;
Action::ToggleViMode;
Y, ModifiersState::CTRL, +BindingMode::VI, ~BindingMode::SEARCH;