Skip to main content

ChatEditor

Struct ChatEditor 

Source
pub struct ChatEditor {
    pub editor: Editor,
    /* private fields */
}
Expand description

Rab-specific chat editor that wraps the core tui::Editor.

Mirrors pi’s CustomEditor pattern: ChatEditor handles keyboard input and dispatches app-level actions (escape, submit, model selector, etc.) as an InputAction enum, while text-editing keys are delegated to the inner Editor. The app layer matches on InputAction to perform side effects.

Key differences from pi’s CustomEditor:

  • Text-editing keys (Ctrl+Z undo, Ctrl+J newline, Up/Down history, Tab, PageUp/PageDown, etc.) are delegated entirely to the inner Editor, matching pi’s editor-centric handling.
  • Only app-level keybindings (interrupt, exit, model selector, help, etc.) are intercepted here.

Fields§

§editor: Editor

Implementations§

Source§

impl ChatEditor

Source

pub fn new(_theme: &dyn Theme, cwd: PathBuf) -> Self

Source

pub fn set_slash_commands(&mut self, commands: Vec<SlashCommand>)

Set the available slash commands for autocomplete.

Source

pub fn set_extension_shortcut_handler( &mut self, handler: Box<dyn FnMut(&KeyEvent) -> bool + Send>, )

Set a handler for extension-registered shortcuts (pi-style). The handler receives the key event and returns true if the key was handled.

Source

pub fn on_action(&mut self, action: &str, handler: Box<dyn FnMut() + Send>)

Register a dynamic app action handler (pi-style). When the keybinding for action is pressed, handler is called. Does NOT override built-in actions (Escape, Ctrl+C, Ctrl+D, Enter).

Source

pub fn check_autocomplete(&mut self)

After programmatic set_text, trigger autocomplete check (pi-style).

Source

pub fn set_cwd(&mut self, cwd: PathBuf)

Update the working directory.

Source

pub fn update_border_color( &mut self, thinking_level: Option<&str>, theme: &dyn Theme, )

Handle keyboard input. Mirrors pi’s CustomEditor.handleInput:

  1. Checks app-level keys (escape, clear, submit, model selector, etc.) and returns the corresponding InputAction for the app layer to handle.
  2. All other keys are delegated to the inner Editor for text editing, including Ctrl+Z (undo), Ctrl+J (newline), Up/Down (history), Tab (autocomplete), PageUp/PageDown (scroll), etc.

This keeps app-level side effects (aborting agent, opening overlays, etc.) in the app layer while keeping text-editing logic in the Editor component. Update editor border color based on thinking level or bash mode. Matches pi’s updateEditorBorderColor().

  • Bash mode (text starts with !): uses bashMode color
  • Otherwise: uses thinking level color (thinkingOff..thinkingXhigh)
Source

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

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> 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