on master help sign in
fix: shift-tab mappings broken after efc2b4c7
d3def16Blaž Hrastnik
helix-term/src/keymap.rs+16
@@ -25,6 +25,22 @@ macro_rules! key {
25 };
25 };
26}
26}
27
27
28+#[macro_export]
29+macro_rules! shift {
30+ ($key:ident) => {
31+ ::helix_view::input::KeyEvent {
32+ code: ::helix_view::keyboard::KeyCode::$key,
33+ modifiers: ::helix_view::keyboard::KeyModifiers::SHIFT,
34+ }
35+ };
36+ ($($ch:tt)*) => {
37+ ::helix_view::input::KeyEvent {
38+ code: ::helix_view::keyboard::KeyCode::Char($($ch)*),
39+ modifiers: ::helix_view::keyboard::KeyModifiers::SHIFT,
40+ }
41+ };
42+}
43+
28#[macro_export]
44#[macro_export]
29macro_rules! ctrl {
45macro_rules! ctrl {
30 ($key:ident) => {
46 ($key:ident) => {
helix-term/src/ui/menu.rs+2−2
@@ -1,6 +1,6 @@
1use crate::{
1use crate::{
2 compositor::{Component, Compositor, Context, EventResult},
2 compositor::{Component, Compositor, Context, EventResult},
3− ctrl, key,
3+ ctrl, key, shift,
4};
4};
5use crossterm::event::Event;
5use crossterm::event::Event;
6use tui::{buffer::Buffer as Surface, widgets::Table};
6use tui::{buffer::Buffer as Surface, widgets::Table};
@@ -202,7 +202,7 @@ impl<T: Item + 'static> Component for Menu<T> {
202 return close_fn;
202 return close_fn;
203 }
203 }
204 // arrow up/ctrl-p/shift-tab prev completion choice (including updating the doc)
204 // arrow up/ctrl-p/shift-tab prev completion choice (including updating the doc)
205− key!(BackTab) | key!(Up) | ctrl!('p') | ctrl!('k') => {
205+ shift!(BackTab) | key!(Up) | ctrl!('p') | ctrl!('k') => {
206 self.move_up();
206 self.move_up();
207 (self.callback_fn)(cx.editor, self.selection(), MenuEvent::Update);
207 (self.callback_fn)(cx.editor, self.selection(), MenuEvent::Update);
208 return EventResult::Consumed(None);
208 return EventResult::Consumed(None);
helix-term/src/ui/picker.rs+2−2
@@ -1,6 +1,6 @@
1use crate::{
1use crate::{
2 compositor::{Component, Compositor, Context, EventResult},
2 compositor::{Component, Compositor, Context, EventResult},
3− ctrl, key,
3+ ctrl, key, shift,
4 ui::EditorView,
4 ui::EditorView,
5};
5};
6use crossterm::event::Event;
6use crossterm::event::Event;
@@ -404,7 +404,7 @@ impl<T: 'static> Component for Picker<T> {
404 })));
404 })));
405
405
406 match key_event.into() {
406 match key_event.into() {
407− key!(BackTab) | key!(Up) | ctrl!('p') | ctrl!('k') => {
407+ shift!(BackTab) | key!(Up) | ctrl!('p') | ctrl!('k') => {
408 self.move_up();
408 self.move_up();
409 }
409 }
410 key!(Tab) | key!(Down) | ctrl!('n') | ctrl!('j') => {
410 key!(Tab) | key!(Down) | ctrl!('n') | ctrl!('j') => {
helix-term/src/ui/prompt.rs+2−2
@@ -1,5 +1,5 @@
1use crate::compositor::{Component, Compositor, Context, EventResult};
1use crate::compositor::{Component, Compositor, Context, EventResult};
2−use crate::{alt, ctrl, key, ui};
2+use crate::{alt, ctrl, key, shift, ui};
3use crossterm::event::Event;
3use crossterm::event::Event;
4use helix_view::input::KeyEvent;
4use helix_view::input::KeyEvent;
5use helix_view::keyboard::{KeyCode, KeyModifiers};
5use helix_view::keyboard::{KeyCode, KeyModifiers};
@@ -496,7 +496,7 @@ impl Component for Prompt {
496 self.change_completion_selection(CompletionDirection::Forward);
496 self.change_completion_selection(CompletionDirection::Forward);
497 (self.callback_fn)(cx, &self.line, PromptEvent::Update)
497 (self.callback_fn)(cx, &self.line, PromptEvent::Update)
498 }
498 }
499− key!(BackTab) => {
499+ shift!(BackTab) => {
500 self.change_completion_selection(CompletionDirection::Backward);
500 self.change_completion_selection(CompletionDirection::Backward);
501 (self.callback_fn)(cx, &self.line, PromptEvent::Update)
501 (self.callback_fn)(cx, &self.line, PromptEvent::Update)
502 }
502 }