aboutsummaryrefslogtreecommitdiff
path: root/helix-term/src/ui
diff options
context:
space:
mode:
Diffstat (limited to 'helix-term/src/ui')
-rw-r--r--helix-term/src/ui/editor.rs4
-rw-r--r--helix-term/src/ui/menu.rs4
-rw-r--r--helix-term/src/ui/picker.rs8
-rw-r--r--helix-term/src/ui/prompt.rs11
4 files changed, 18 insertions, 9 deletions
diff --git a/helix-term/src/ui/editor.rs b/helix-term/src/ui/editor.rs
index f297b44e..493f8d50 100644
--- a/helix-term/src/ui/editor.rs
+++ b/helix-term/src/ui/editor.rs
@@ -1,5 +1,5 @@
use crate::{
- commands,
+ commands::{self, OnKeyCallback},
compositor::{Component, Context, Event, EventResult},
job::{self, Callback},
key,
@@ -37,7 +37,7 @@ use super::{document::LineDecoration, lsp::SignatureHelp};
pub struct EditorView {
pub keymaps: Keymaps,
- on_next_key: Option<Box<dyn FnOnce(&mut commands::Context, KeyEvent)>>,
+ on_next_key: Option<OnKeyCallback>,
pseudo_pending: Vec<KeyEvent>,
last_insert: (commands::MappableCommand, Vec<InsertEvent>),
pub(crate) completion: Option<Completion>,
diff --git a/helix-term/src/ui/menu.rs b/helix-term/src/ui/menu.rs
index 3ae00703..8aa10c08 100644
--- a/helix-term/src/ui/menu.rs
+++ b/helix-term/src/ui/menu.rs
@@ -43,6 +43,8 @@ impl Item for PathBuf {
}
}
+pub type MenuCallback<T> = Box<dyn Fn(&mut Editor, Option<&T>, MenuEvent)>;
+
pub struct Menu<T: Item> {
options: Vec<T>,
editor_data: T::Data,
@@ -55,7 +57,7 @@ pub struct Menu<T: Item> {
widths: Vec<Constraint>,
- callback_fn: Box<dyn Fn(&mut Editor, Option<&T>, MenuEvent)>,
+ callback_fn: MenuCallback<T>,
scroll: usize,
size: (u16, u16),
diff --git a/helix-term/src/ui/picker.rs b/helix-term/src/ui/picker.rs
index 5190fc53..803e2d65 100644
--- a/helix-term/src/ui/picker.rs
+++ b/helix-term/src/ui/picker.rs
@@ -70,6 +70,8 @@ impl From<DocumentId> for PathOrId {
}
}
+type FileCallback<T> = Box<dyn Fn(&Editor, &T) -> Option<FileLocation>>;
+
/// File path and range of lines (used to align and highlight lines)
pub type FileLocation = (PathOrId, Option<(usize, usize)>);
@@ -80,7 +82,7 @@ pub struct FilePicker<T: Item> {
preview_cache: HashMap<PathBuf, CachedPreview>,
read_buffer: Vec<u8>,
/// Given an item in the picker, return the file path and line number to display.
- file_fn: Box<dyn Fn(&Editor, &T) -> Option<FileLocation>>,
+ file_fn: FileCallback<T>,
}
pub enum CachedPreview {
@@ -394,6 +396,8 @@ impl Ord for PickerMatch {
}
}
+type PickerCallback<T> = Box<dyn Fn(&mut Context, &T, Action)>;
+
pub struct Picker<T: Item> {
options: Vec<T>,
editor_data: T::Data,
@@ -415,7 +419,7 @@ pub struct Picker<T: Item> {
/// Constraints for tabular formatting
widths: Vec<Constraint>,
- callback_fn: Box<dyn Fn(&mut Context, &T, Action)>,
+ callback_fn: PickerCallback<T>,
}
impl<T: Item> Picker<T> {
diff --git a/helix-term/src/ui/prompt.rs b/helix-term/src/ui/prompt.rs
index 5fb6745a..f438231f 100644
--- a/helix-term/src/ui/prompt.rs
+++ b/helix-term/src/ui/prompt.rs
@@ -14,8 +14,11 @@ use helix_view::{
Editor,
};
-pub type Completion = (RangeFrom<usize>, Cow<'static, str>);
type PromptCharHandler = Box<dyn Fn(&mut Prompt, char, &Context)>;
+pub type Completion = (RangeFrom<usize>, Cow<'static, str>);
+type CompletionFn = Box<dyn FnMut(&Editor, &str) -> Vec<Completion>>;
+type CallbackFn = Box<dyn FnMut(&mut Context, &str, PromptEvent)>;
+pub type DocFn = Box<dyn Fn(&str) -> Option<Cow<str>>>;
pub struct Prompt {
prompt: Cow<'static, str>,
@@ -25,9 +28,9 @@ pub struct Prompt {
selection: Option<usize>,
history_register: Option<char>,
history_pos: Option<usize>,
- completion_fn: Box<dyn FnMut(&Editor, &str) -> Vec<Completion>>,
- callback_fn: Box<dyn FnMut(&mut Context, &str, PromptEvent)>,
- pub doc_fn: Box<dyn Fn(&str) -> Option<Cow<str>>>,
+ completion_fn: CompletionFn,
+ callback_fn: CallbackFn,
+ pub doc_fn: DocFn,
next_char_handler: Option<PromptCharHandler>,
}