pub struct ConsoleState {
pub input: Editor,
pub pending: String,
pub scrollback: Vec<String>,
pub history: Vec<String>,
pub history_cursor: Option<usize>,
}Expand description
Pure state for the Console tab.
Fields§
§input: EditorThe single-line input editor for the current line.
pending: StringLines of an in-progress multi-line form, joined with \n once a
balanced form is assembled. Empty when no form is pending.
scrollback: Vec<String>The rendered transcript (prompts, inputs, and eval results).
history: Vec<String>Previously submitted complete forms, oldest first.
history_cursor: Option<usize>Cursor into history for up/down navigation; None means the
cursor sits below the newest entry (i.e. on a fresh line).
Implementations§
Source§impl ConsoleState
impl ConsoleState
Sourcepub fn new() -> Self
pub fn new() -> Self
The console input is always an Emacs-style line editor, regardless
of the app’s edit mode. The REPL has no vim-normal routing or
two-stage Esc, so building it in Vim mode (reachable at runtime via
Ctrl-V) would strand it in an unhandled normal mode where motion
keys insert literally; pinning Emacs keeps the input always usable.
Sourcepub fn take_complete_form(&mut self) -> Option<String>
pub fn take_complete_form(&mut self) -> Option<String>
Consume the current input line. If, together with any pending
lines, it forms a balanced nomiscript form, return that complete
form string, clear the buffers, and record it in history. An
unbalanced (incomplete) form is appended to pending and None
is returned, so the caller keeps collecting lines. A blank /
whitespace-only candidate yields None without echoing or
recording history (a bare Enter must not submit an empty form).
Sourcepub fn history_prev(&mut self)
pub fn history_prev(&mut self)
Move the history cursor toward older entries, loading the entry at the new cursor into the input editor. A no-op on empty history; once the cursor reaches the oldest entry it stays there.
Sourcepub fn history_next(&mut self)
pub fn history_next(&mut self)
Move the history cursor toward newer entries, loading the entry into the input editor. Stepping past the newest entry clears the cursor and the input line (a fresh prompt).
Sourcepub fn push_scrollback(&mut self, line: impl Into<String>)
pub fn push_scrollback(&mut self, line: impl Into<String>)
Append a line to the scrollback, dropping the oldest lines once
the retained count would exceed MAX_SCROLLBACK_LINES.
Trait Implementations§
Source§impl Debug for ConsoleState
impl Debug for ConsoleState
Auto Trait Implementations§
impl Freeze for ConsoleState
impl RefUnwindSafe for ConsoleState
impl Send for ConsoleState
impl Sync for ConsoleState
impl Unpin for ConsoleState
impl UnsafeUnpin for ConsoleState
impl UnwindSafe for ConsoleState
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more