diff options
author | Bob | 2022-07-18 01:11:25 +0000 |
---|---|---|
committer | GitHub | 2022-07-18 01:11:25 +0000 |
commit | 2a8d38c27bce34c9b6fa95a2fb063fe097e220d4 (patch) | |
tree | 8f2ca87a2c4c1ff858d85fd39b6e0f5dcdbba74c | |
parent | dbf68e0370981dc4ad0fa74596b57347f7048fab (diff) |
support toggling pickers' preview panel (#3021)
* support toggling pickers' preview panel
* add doc for toggling preview
-rw-r--r-- | book/src/keymap.md | 1 | ||||
-rw-r--r-- | helix-term/src/ui/picker.rs | 12 |
2 files changed, 12 insertions, 1 deletions
diff --git a/book/src/keymap.md b/book/src/keymap.md index de298037..abb6f302 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 375723e5..9707c81e 100644 --- a/helix-term/src/ui/picker.rs +++ b/helix-term/src/ui/picker.rs @@ -173,7 +173,7 @@ impl<T: Item + 'static> Component for FilePicker<T> { // | | | | // +---------+ +---------+ - 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<T: Item> { 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<dyn Fn(&mut Context, &T, Action)>, } @@ -327,6 +329,7 @@ impl<T: Item> Picker<T> { 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<T: Item> Picker<T> { 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<T: Item + 'static> Component for Picker<T> { 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 |