pub struct KeybindingEditor {Show 25 fields
pub bindings: Vec<ResolvedBinding>,
pub filtered_indices: Vec<usize>,
pub selected: usize,
pub scroll: ScrollState,
pub search_active: bool,
pub search_focused: bool,
pub search_query: String,
pub search_mode: SearchMode,
pub search_key_display: String,
pub search_key_code: Option<KeyCode>,
pub search_modifiers: KeyModifiers,
pub context_filter: ContextFilter,
pub source_filter: SourceFilter,
pub edit_dialog: Option<EditBindingState>,
pub showing_help: bool,
pub active_keymap: String,
pub config_file_path: String,
pub pending_adds: Vec<Keybinding>,
pub pending_removes: Vec<Keybinding>,
pub has_changes: bool,
pub showing_confirm_dialog: bool,
pub confirm_selection: usize,
pub keymap_names: Vec<String>,
pub available_actions: Vec<String>,
pub layout: KeybindingEditorLayout,
}Expand description
The main keybinding editor state
Fields§
§bindings: Vec<ResolvedBinding>All resolved bindings
filtered_indices: Vec<usize>Indices into bindings after filtering/searching
selected: usizeCurrently selected index (within filtered list)
scroll: ScrollStateScroll state (offset, viewport, content_height) — shared with render
search_active: boolWhether search is active (search bar visible)
search_focused: boolWhether search input is focused (accepting keystrokes)
search_query: StringSearch query string
search_mode: SearchModeSearch mode (text or record key)
search_key_display: StringRecorded search key display (when in RecordKey mode)
search_key_code: Option<KeyCode>Recorded search key code (when in RecordKey mode)
search_modifiers: KeyModifiersRecorded search modifiers (when in RecordKey mode)
context_filter: ContextFilterContext filter
source_filter: SourceFilterSource filter
edit_dialog: Option<EditBindingState>Edit/add binding dialog state (None = not open)
showing_help: boolWhether help overlay is showing
active_keymap: StringActive keymap name
config_file_path: StringConfig file path for display
pending_adds: Vec<Keybinding>Custom bindings that have been added (pending save)
pending_removes: Vec<Keybinding>Custom bindings to remove from config (pending save)
has_changes: boolWhether there are unsaved changes
showing_confirm_dialog: boolShowing unsaved changes confirmation dialog
confirm_selection: usizeSelected button in confirm dialog (0=Save, 1=Discard, 2=Cancel)
keymap_names: Vec<String>Named keymaps info for display
available_actions: Vec<String>Available action names (for autocomplete)
layout: KeybindingEditorLayoutLayout info for mouse hit testing (updated during render)
Implementations§
Source§impl KeybindingEditor
impl KeybindingEditor
Sourcepub fn new(
config: &Config,
resolver: &KeybindingResolver,
config_file_path: String,
) -> Self
pub fn new( config: &Config, resolver: &KeybindingResolver, config_file_path: String, ) -> Self
Create a new keybinding editor from config and resolver
Sourcepub fn update_autocomplete(&mut self)
pub fn update_autocomplete(&mut self)
Update autocomplete suggestions based on current action text
Sourcepub fn is_valid_action(&self, action_name: &str) -> bool
pub fn is_valid_action(&self, action_name: &str) -> bool
Check if the given action name is valid
Sourcepub fn apply_filters(&mut self)
pub fn apply_filters(&mut self)
Apply current search and filter criteria
Sourcepub fn selected_binding(&self) -> Option<&ResolvedBinding>
pub fn selected_binding(&self) -> Option<&ResolvedBinding>
Get the currently selected binding
Sourcepub fn select_prev(&mut self)
pub fn select_prev(&mut self)
Move selection up
Sourcepub fn select_next(&mut self)
pub fn select_next(&mut self)
Move selection down
Sourcepub fn ensure_visible_public(&mut self)
pub fn ensure_visible_public(&mut self)
Ensure the selected item is visible (public version)
Sourcepub fn start_search(&mut self)
pub fn start_search(&mut self)
Start text search (preserves existing query when re-focusing)
Sourcepub fn start_record_key_search(&mut self)
pub fn start_record_key_search(&mut self)
Start record-key search
Sourcepub fn cancel_search(&mut self)
pub fn cancel_search(&mut self)
Cancel search (clear everything)
Sourcepub fn record_search_key(&mut self, event: &KeyEvent)
pub fn record_search_key(&mut self, event: &KeyEvent)
Record a search key
Sourcepub fn cycle_context_filter(&mut self)
pub fn cycle_context_filter(&mut self)
Cycle context filter
Sourcepub fn cycle_source_filter(&mut self)
pub fn cycle_source_filter(&mut self)
Cycle source filter
Sourcepub fn open_add_dialog(&mut self)
pub fn open_add_dialog(&mut self)
Open the add binding dialog
Sourcepub fn open_edit_dialog(&mut self)
pub fn open_edit_dialog(&mut self)
Open the edit binding dialog for the selected binding
Sourcepub fn close_edit_dialog(&mut self)
pub fn close_edit_dialog(&mut self)
Close the edit dialog
Sourcepub fn delete_selected(&mut self) -> DeleteResult
pub fn delete_selected(&mut self) -> DeleteResult
Delete the selected binding.
- Custom bindings are removed outright (tracked in
pending_removesor dropped frompending_addswhen added in the same session). - Keymap bindings cannot be removed from the built-in map, so a
custom
noopoverride is created for the same key, which shadows the default binding in the resolver.
Returns DeleteResult indicating what happened.
Sourcepub fn apply_edit_dialog(&mut self) -> Option<String>
pub fn apply_edit_dialog(&mut self) -> Option<String>
Apply the edit dialog to create/update a binding. Returns an error message if validation fails.
Sourcepub fn find_conflicts(
&self,
key_code: KeyCode,
modifiers: KeyModifiers,
context: &str,
) -> Vec<String>
pub fn find_conflicts( &self, key_code: KeyCode, modifiers: KeyModifiers, context: &str, ) -> Vec<String>
Check for conflicts with the given key combination
Sourcepub fn get_custom_bindings(&self) -> Vec<Keybinding>
pub fn get_custom_bindings(&self) -> Vec<Keybinding>
Get the custom bindings to save to config
Sourcepub fn get_pending_removes(&self) -> &[Keybinding]
pub fn get_pending_removes(&self) -> &[Keybinding]
Get the custom bindings to remove from config
Sourcepub fn context_filter_display(&self) -> &str
pub fn context_filter_display(&self) -> &str
Get the context filter display string
Sourcepub fn source_filter_display(&self) -> &str
pub fn source_filter_display(&self) -> &str
Get the source filter display string
Trait Implementations§
Auto Trait Implementations§
impl Freeze for KeybindingEditor
impl RefUnwindSafe for KeybindingEditor
impl Send for KeybindingEditor
impl Sync for KeybindingEditor
impl Unpin for KeybindingEditor
impl UnsafeUnpin for KeybindingEditor
impl UnwindSafe for KeybindingEditor
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more