From 2a8d38c27bce34c9b6fa95a2fb063fe097e220d4 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 18 Jul 2022 09:11:25 +0800 Subject: [PATCH] support toggling pickers' preview panel (#3021) * support toggling pickers' preview panel * add doc for toggling preview --- book/src/keymap.md | 1 + helix-term/src/ui/picker.rs | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/book/src/keymap.md b/book/src/keymap.md index de2980376..abb6f3022 100644 --- a/book/src/keymap.md +++ b/book/src/keymap.md @@ -352,6 +352,7 @@ Keys to use within picker. Remapping currently not supported. | `Enter` | Open selected | | `Ctrl-s` | Open horizontally | | `Ctrl-v` | Open vertically | +| `Ctrl-t` | Toggle preview | | `Escape`, `Ctrl-c` | Close picker | # Prompt diff --git a/helix-term/src/ui/picker.rs b/helix-term/src/ui/picker.rs index 375723e56..9707c81ee 100644 --- a/helix-term/src/ui/picker.rs +++ b/helix-term/src/ui/picker.rs @@ -173,7 +173,7 @@ impl Component for FilePicker { // | | | | // +---------+ +---------+ - let render_preview = area.width > MIN_AREA_WIDTH_FOR_PREVIEW; + let render_preview = self.picker.show_preview && area.width > MIN_AREA_WIDTH_FOR_PREVIEW; // -- Render the frame: // clear area let background = cx.editor.theme.get("ui.background"); @@ -300,6 +300,8 @@ pub struct Picker { previous_pattern: String, /// Whether to truncate the start (default true) pub truncate_start: bool, + /// Whether to show the preview panel (default true) + show_preview: bool, callback_fn: Box, } @@ -327,6 +329,7 @@ impl Picker { prompt, previous_pattern: String::new(), truncate_start: true, + show_preview: true, callback_fn: Box::new(callback_fn), completion_height: 0, }; @@ -470,6 +473,10 @@ impl Picker { self.filters.sort_unstable(); // used for binary search later self.prompt.clear(cx); } + + pub fn toggle_preview(&mut self) { + self.show_preview = !self.show_preview; + } } // process: @@ -538,6 +545,9 @@ impl Component for Picker { ctrl!(' ') => { self.save_filter(cx); } + ctrl!('t') => { + self.toggle_preview(); + } _ => { if let EventResult::Consumed(_) = self.prompt.handle_event(event, cx) { // TODO: recalculate only if pattern changed