Skip to main content

PromptInputState

Struct PromptInputState 

Source
pub struct PromptInputState {
    pub mode: InputMode,
    pub buffer: String,
    pub cursor: usize,
    pub history: Vec<String>,
    pub history_idx: Option<usize>,
    pub draft: String,
    pub draft_mode: InputMode,
}
Expand description

Mutable state of the multi-mode prompt input.

Owns the editing buffer, byte-cursor, in-session history, and a stash slot for the user’s draft when they walk back through history. Rendering is in crate::tui::ui::input.

Fields§

§mode: InputMode§buffer: String§cursor: usize

Byte offset into [buffer]. Always at a char boundary.

§history: Vec<String>

Submitted entries, oldest first. Capped at HISTORY_CAPACITY.

§history_idx: Option<usize>

Position when navigating history. None means “live draft”.

§draft: String

Stash slot: when the user starts walking history, the current buffer is preserved here and restored when they walk past the end.

§draft_mode: InputMode

Stash for the current mode while walking history. Restored alongside draft.

Implementations§

Source§

impl PromptInputState

Source

pub fn new() -> Self

Source

pub fn insert_char(&mut self, ch: char)

Insert a single character at the cursor. Updates cursor to stay just past the inserted char.

Source

pub fn backspace(&mut self) -> bool

Delete the character to the left of the cursor (Backspace). Returns true if a char was deleted.

Source

pub fn delete_forward(&mut self)

Delete the character at the cursor (Delete key).

Source

pub fn move_left(&mut self)

Move cursor one char left.

Source

pub fn move_right(&mut self)

Move cursor one char right.

Source

pub fn move_home(&mut self)

Move to start of the current visual line (delimited by \n).

Source

pub fn move_end(&mut self)

Move to end of the current visual line.

Source

pub fn move_prev_line(&mut self)

Move cursor to the same column on the previous visual line. No-op when the cursor is already on the first line. If the previous line is shorter than the current column, the cursor lands at the end of the previous line (emacs previous-line semantics).

Source

pub fn move_next_line(&mut self)

Move cursor to the same column on the next visual line. No-op when the cursor is already on the last line. If the next line is shorter than the current column, the cursor lands at the end of the next line (emacs next-line semantics).

Source

pub fn cursor_on_first_line(&self) -> bool

True when the cursor sits on the first visual line.

Source

pub fn cursor_on_last_line(&self) -> bool

True when the cursor sits on the last visual line.

Source

pub fn history_prev(&mut self) -> bool

Walk history one step back (older). Returns true if state changed.

Source

pub fn history_next(&mut self) -> bool

Walk history one step forward (newer). Restores the draft when stepping past the most-recent entry. Returns true if state changed.

Source

pub fn record_submission(&mut self, prefixed: String)

Push the just-submitted entry onto the history ring (with mode prefix) and reset transient state.

Trait Implementations§

Source§

impl Clone for PromptInputState

Source§

fn clone(&self) -> PromptInputState

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PromptInputState

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for PromptInputState

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Eq for PromptInputState

Source§

impl PartialEq for PromptInputState

Source§

fn eq(&self, other: &PromptInputState) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for PromptInputState

Auto Trait Implementations§

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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more