Skip to main content

Help

Struct Help 

Source
pub struct Help { /* private fields */ }
Expand description

A searchable help overlay (#473): every binding of a keymap, grouped by context, with its keys and what it does. Typing searches keys, descriptions and contexts; the arrows and PageUp/PageDown scroll; Escape clears the search, then closes; Enter closes.

Options: wrap wraps a row too long for the width (its keys and its description) rather than cutting it, key_format says the keys another way (<C-u>), flat lists every binding in one list under the search line and a rule, with no context headings, and filter_key makes letters move until a key starts the search (Yazi’s /).

Implementations§

Source§

impl Help

Source

pub fn new(keymap: &Keymap) -> Help

Help for every binding of keymap that has keys.

Source

pub fn from_bindings(bindings: impl IntoIterator<Item = Binding>) -> Help

Source

pub fn filter_key(self, key: Option<Key>) -> Self

Move with the letters until key is pressed, and only then search: j/k move a row, g and G go to the top and the bottom, and key (Yazi’s /) starts the search, which Escape ends (clearing it). None, the default, searches as soon as a letter is typed.

Source

pub fn prompt(self, prompt: impl Into<String>) -> Self

Source

pub fn theme(self, theme: Theme) -> Self

Source

pub fn wrap(self, on: bool) -> Self

Wrap a row too long for the width onto the next rows, under its description, rather than cut it. Off by default.

Source

pub fn flat(self, on: bool) -> Self

Every binding in one list, under the search line and a rule, with no heading for each context (Yazi’s help). Off by default.

Source

pub fn key_format(self, format: impl Fn(&Binding) -> String + 'static) -> Self

Say each binding’s keys with format (vim’s <C-u>, say) rather than as Binding::hint does; searching finds them as said.

Source

pub fn query(self, query: impl Into<String>) -> Self

Search for query from the start.

Source

pub fn set_bindings(&mut self, bindings: impl IntoIterator<Item = Binding>)

Put bindings in place of those it has, as they change while it is open: the search stays, and so does the scroll, as far as the new rows reach.

Source

pub fn matches(&self) -> Vec<&Binding>

The bindings that match the search, in keymap order.

Trait Implementations§

Source§

impl Component for Help

Source§

type Output = ()

Source§

fn handle(&mut self, event: &Event, _: &Context<'_>) -> Flow<()>

Handle one event. Ctrl+C never arrives here: the event loop ends the component with Outcome::Interrupted.
Source§

fn render(&self, context: &Context<'_>) -> View

Render the current state.
Source§

fn mouse(&self) -> bool

Whether the component wants mouse events (#476): clicks, drags and the wheel. Off by default, since reporting the mouse takes text selection away from the terminal; a component turns it on when its caller opts in, and run then enables mouse reporting for the session.
Source§

fn keymap(&self) -> Keymap

The bindings this component has right now, for a help overlay, a shortcut list or status-bar hints to read (see keymap). A container’s include its focused child’s, before its own. The default declares none.
Source§

fn start(&mut self, context: &Context<'_>) -> Flow<Self::Output>

Called once, before the component is first painted, with the terminal’s size: for work that needs it, such as rendering content at the width. Returning Done or Cancel finishes the component without waiting for an event. The default does nothing.
Source§

fn tick(&self) -> Option<Duration>

How often the component wants Event::Tick, for a spinner or a countdown. None (the default): never.
Source§

fn focusable(&self) -> bool

Whether the component takes focus in a container: Tab stops on it and keys go to it. The default: yes. A label, or a component that has finished, says no.
Source§

fn focus_step(&mut self, forward: bool) -> bool

Move focus to the next (forward) or previous focus stop inside this component, for Tab and Shift+Tab. false when there is none after the current one, so the container moves on to its next child. The default, for a component that is one stop: false.
Source§

fn focus_enter(&mut self, forward: bool) -> bool

Take focus from outside: at the first stop inside when forward, at the last otherwise. false when nothing in it can take focus. The default: whether the component is focusable.
Source§

fn default_value(&self) -> Option<Self::Output>

The value to return when the terminal is not interactive and the policy asks for defaults. None: there is none.
Source§

fn prompt( &mut self, io: &mut dyn LineIo, ) -> Result<Option<Self::Output>, NotInteractive>

Ask for the value line by line, for when the terminal is not interactive and the policy asks for a prompt. The default says the component has no line-based form. Read more

Auto Trait Implementations§

§

impl !Freeze for Help

§

impl !RefUnwindSafe for Help

§

impl !Send for Help

§

impl !Sync for Help

§

impl !UnwindSafe for Help

§

impl Unpin for Help

§

impl UnsafeUnpin for Help

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<C> ComponentExt for C
where C: Component,

Source§

fn map<'a, M>( self, done: impl FnMut(Self::Output) -> Flow<M> + 'a, ) -> Map<'a, Self, M>
where Self: 'a,

Turn this component’s answer into M’s flow: Flow::Done(m) to finish the whole composition with m, Flow::Continue to carry on (the component stays, showing its answer, and focus moves past it). Cancelling cancels the composition unless on_cancel says otherwise.
Source§

fn with_overlays<'a>(self) -> Overlays<'a, Self::Output>
where Self: 'a, Self::Output: 'a,

Wrap this component in Overlays: a command palette, help and a shortcut sheet read from its keymap, and room for a status bar and breadcrumbs.
Source§

fn boxed<'a>(self) -> Child<'a, Self::Output>
where Self: 'a,

Box this component as a Child.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.