Skip to main content

Editor

Struct Editor 

Source
pub struct Editor {
    pub on_submit: Option<Box<dyn FnMut(String) + Send>>,
    pub on_change: Option<Box<dyn FnMut(&str)>>,
    pub disable_submit: bool,
    pub border_color: Box<dyn Fn(&str) -> String>,
    pub just_submitted: bool,
    pub autocomplete_active: bool,
    /* private fields */
}

Fields§

§on_submit: Option<Box<dyn FnMut(String) + Send>>§on_change: Option<Box<dyn FnMut(&str)>>§disable_submit: bool§border_color: Box<dyn Fn(&str) -> String>§just_submitted: bool

True after submit() is called, reset when checked.

§autocomplete_active: bool

Implementations§

Source§

impl Editor

Source

pub fn new(theme: EditorTheme, options: EditorOptions) -> Self

Source

pub fn get_text(&self) -> String

Source

pub fn get_lines(&self) -> &[String]

Source

pub fn get_cursor(&self) -> (usize, usize)

Source

pub fn set_terminal_rows(&mut self, rows: usize)

Update the terminal height so render can compute max visible lines dynamically (pi: 30% of rows, min 5).

Source

pub fn set_padding_x(&mut self, padding: usize)

Source

pub fn set_autocomplete_max_visible(&mut self, max: usize)

Source

pub fn set_text(&mut self, text: &str)

Source

pub fn add_to_history(&mut self, text: &str)

Source

pub fn insert_text_at_cursor(&mut self, text: &str)

Source

pub fn set_autocomplete_provider( &mut self, provider: Box<dyn AutocompleteProvider>, )

Set the autocomplete provider (handles slash commands, file paths, etc.).

Source

pub fn set_autocomplete(&mut self, items: Vec<SelectItem>)

Source

pub fn clear_autocomplete(&mut self)

Source

pub fn autocomplete_selected_value(&self) -> Option<String>

Source

pub fn autocomplete_is_empty(&self) -> bool

Source

pub fn try_trigger_autocomplete(&mut self)

Source

pub fn handle_paste(&mut self, text: &str)

Handle a paste: normalizes line endings, filters non-printable chars, CSI-u decodes control bytes, and for large pastes (>10 lines or >1000 chars) stores the content with a marker like “[paste #1 +123 lines]”. Matches pi’s Editor.handlePaste().

Source

pub fn expand_paste_markers(&self, text: &str) -> String

Expand paste markers in text back to their full content.

Source

pub fn get_expanded_text(&self) -> String

Get text with paste markers expanded. Use this when you need the full content (e.g., for external editor).

Source

pub fn is_paste_marker(segment: &str) -> bool

Check if a string is a paste marker.

Trait Implementations§

Source§

impl Component for Editor

Source§

fn render(&self, width: usize) -> Vec<String>

Render to lines for the given viewport width. Each returned string MUST NOT exceed width in visible width.
Source§

fn handle_input(&mut self, key: &KeyEvent) -> bool

Handle keyboard input. Return true if consumed.
Source§

fn handle_paste(&mut self, text: &str)

Handle a paste event (text from bracketed paste mode). Default no-op; override to process pasted content.
Source§

fn is_focusable(&self) -> bool

Whether this component wants focus (for IME cursor positioning).
Source§

fn invalidate(&mut self)

Mark this component as needing re-render. Called when internal state changes (output received, expanded toggled, etc.).
Source§

fn is_dirty(&self) -> bool

Check if this component needs re-render. Default: always re-render (conservative).
Source§

fn clear_dirty(&mut self)

Clear dirty flag after successful render.
Source§

fn cache_key(&self, _width: usize) -> Option<RenderCacheKey>

Get the cache key for this component’s current state. Return None to disable caching (always re-render).
Source§

fn get_cached_render(&self) -> Option<&RenderCache>

Get cached render output, if available and valid.
Source§

fn set_cached_render(&mut self, _cache: RenderCache)

Store render output in cache.
Source§

fn set_expanded(&mut self, _expanded: bool)

Toggle expanded/collapsed state. No-op by default. Override for components that support expand/collapse (tool results, messages, etc.).
Source§

fn set_hide_thinking(&mut self, _hide: bool)

Toggle thinking block visibility. No-op by default. Override for components that display thinking content (AssistantMessageComponent).
Source§

impl Focusable for Editor

Source§

fn set_focused(&mut self, focused: bool)

Source§

fn focused(&self) -> bool

Auto Trait Implementations§

§

impl !Freeze for Editor

§

impl !RefUnwindSafe for Editor

§

impl !Send for Editor

§

impl !Sync for Editor

§

impl !UnwindSafe for Editor

§

impl Unpin for Editor

§

impl UnsafeUnpin for Editor

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + 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: Sized + 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, 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