pub enum Operation {
Show 80 variants
InsertText {
path: Option<PathBuf>,
cursor: Position,
text: String,
},
PasteText {
path: Option<PathBuf>,
text: String,
},
DeleteText {
path: Option<PathBuf>,
cursor: Position,
len: usize,
},
DeleteForward {
path: Option<PathBuf>,
cursor: Position,
},
DeleteWordBackward {
path: Option<PathBuf>,
},
DeleteWordForward {
path: Option<PathBuf>,
},
IndentLines {
path: Option<PathBuf>,
},
UnindentLines {
path: Option<PathBuf>,
},
DeleteLine {
path: Option<PathBuf>,
},
ReplaceRange {
path: Option<PathBuf>,
start: Position,
end: Position,
text: String,
},
MoveCursor {
path: Option<PathBuf>,
cursor: Position,
},
Undo {
path: Option<PathBuf>,
},
Redo {
path: Option<PathBuf>,
},
ToggleFold {
path: Option<PathBuf>,
line: usize,
},
ToggleMarker {
path: Option<PathBuf>,
line: usize,
},
ToggleWordWrap,
OpenFile {
path: PathBuf,
},
OpenUrl {
url: String,
},
SaveFile {
path: PathBuf,
},
ReloadFromDisk {
path: PathBuf,
accept_external: bool,
},
SwitchScreen {
to: ScreenKind,
},
CloseModal,
Quit,
Focus(FocusOp),
NavigateUp,
NavigateDown,
NavigatePageUp,
NavigatePageDown,
NavigateHome,
NavigateEnd,
FileSelectorLocal(FileSelectorOp),
CommandSelectorLocal(CommandSelectorOp),
LogViewLocal(LogViewOp),
CommitLocal(CommitOp),
GitHistoryLocal(GitHistoryOp),
ExtensionConfig(ExtensionConfigOp),
LspTriggerCompletion {
path: Option<PathBuf>,
},
LspTriggerHover {
path: Option<PathBuf>,
},
LspGoToDefinition {
path: Option<PathBuf>,
},
LspGoToDefinitionResult(Vec<LspLocation>),
LspLocal(LspOp),
SearchLocal(SearchOp),
GoToLineLocal(GoToLineOp),
SelectionLocal(SelectionOp),
ClipboardLocal(ClipOp),
SearchReplaceLocal(SearchReplaceOp),
RunCommand {
id: CommandId,
args: HashMap<String, ArgValue>,
},
OpenContextMenu {
items: Vec<(String, CommandId, Option<bool>)>,
x: u16,
y: u16,
},
CloseContextMenu,
Generic {
source: Cow<'static, str>,
name: Cow<'static, str>,
payload: HashMap<String, ArgValue>,
},
ExtensionEvent {
name: String,
payload: HashMap<String, String>,
},
ShowNotification {
message: String,
level: NotificationLevel,
},
UpdateStatusBar {
text: String,
slot: StatusSlot,
},
CreateTerminal {
command: String,
},
TerminalInput {
id: u64,
data: Vec<u8>,
},
TerminalLocal(TerminalOp),
ShowPicker {
title: String,
items: Vec<PickerItem>,
},
SetEditorHighlights {
path: Option<PathBuf>,
version: Version,
start_line: usize,
generation: u64,
spans: Vec<Vec<StyledSpan>>,
},
SetEditorHighlightsChunk {
path: Option<PathBuf>,
version: Version,
generation: u64,
spans: Vec<(usize, Vec<StyledSpan>)>,
},
AddIssue {
issue: NewIssue,
},
RemoveIssue {
id: IssueId,
},
ResolveIssue {
id: IssueId,
},
DismissIssue {
id: IssueId,
},
ClearIssuesByMarker {
marker: String,
},
PersistentIssueLocal(PersistentIssueOp),
IssueAdded {
id: IssueId,
},
IssueRemoved {
id: IssueId,
},
IssueUpdated {
id: IssueId,
},
TaskScheduled(TaskId),
TaskStarted(TaskId),
TaskFinished {
id: TaskId,
status: TaskStatus,
},
TaskCancelled(TaskId),
ScheduleTask {
key: TaskKey,
trigger: TaskTrigger,
command: String,
},
CancelTask(TaskId),
OpenLogForTask {
task_id: TaskId,
},
OpenTaskArchive,
ShowTaskOutput {
task_id: TaskId,
title: String,
status: TaskStatus,
lines: Vec<String>,
},
TaskArchiveLocal(TaskArchiveOp),
OpenIssueList,
IssueViewLocal(IssueViewOp),
}Variants§
InsertText
PasteText
Bracketed paste (or fallback-heuristic detected paste) delivered to the
active editor. Unlike InsertText, the full multi-line string is inserted
at once via insert_text_raw and also pushed to the clipboard register.
DeleteText
DeleteForward
DeleteWordBackward
DeleteWordForward
IndentLines
UnindentLines
DeleteLine
ReplaceRange
Replace the text from start to end (same line, byte offsets) with text.
Used by CompletionConfirm to delete the filter prefix before inserting.
MoveCursor
Undo
Redo
ToggleFold
ToggleMarker
ToggleWordWrap
OpenFile
OpenUrl
Open an external URL in the system default browser.
SaveFile
ReloadFromDisk
SwitchScreen
Fields
to: ScreenKindCloseModal
Close the currently open modal/temporary view.
If the current view is already primary, this is a no-op.
Quit
Focus(FocusOp)
FileSelectorLocal(FileSelectorOp)
CommandSelectorLocal(CommandSelectorOp)
LogViewLocal(LogViewOp)
CommitLocal(CommitOp)
GitHistoryLocal(GitHistoryOp)
ExtensionConfig(ExtensionConfigOp)
LspTriggerCompletion
LspTriggerHover
LspGoToDefinition
LspGoToDefinitionResult(Vec<LspLocation>)
Result from a go-to-definition request, dispatched back into the queue.
LspLocal(LspOp)
LSP editor-local ops (dropdown navigation, response delivery).
SearchLocal(SearchOp)
Search/replace bar ops (editor-local).
GoToLineLocal(GoToLineOp)
Go-to-line bar ops (editor-local).
SelectionLocal(SelectionOp)
Selection management ops (editor-local).
ClipboardLocal(ClipOp)
Clipboard ops (editor-local).
SearchReplaceLocal(SearchReplaceOp)
Project-wide search & replace ops.
RunCommand
Execute a registered command by id (with pre-filled args).
OpenContextMenu
Open a generic context menu at (x, y) with the given items.
Items are (label, command_id) pairs. app.rs stores the menu on
crate::app_state::AppState, intercepts input, and dispatches the selected command.
CloseContextMenu
Close the currently open context menu without selecting any item.
Generic
ExtensionEvent
Broadcast a named event to all active extensions.
ShowNotification
Display a user-visible notification (shown in status bar).
UpdateStatusBar
Update the IDE status bar slot with custom text.
CreateTerminal
Request a terminal be created running the given command.
TerminalInput
Send raw bytes to the PTY of the terminal tab with the given ID.
TerminalLocal(TerminalOp)
Terminal view-local operations.
ShowPicker
Show a picker (like command palette) populated with arbitrary items.
SetEditorHighlights
Deliver pre-computed syntax-highlight spans for an editor buffer.
Sent by the background highlight task; handled in app.rs, which stores
the result in crate::views::editor::EditorView::highlight_cache when the version still
matches the live buffer. The next frame then renders without blocking.
Fields
spans: Vec<Vec<StyledSpan>>SetEditorHighlightsChunk
Incremental highlight update for multiple lines.
Unlike SetEditorHighlights, this operation updates individual lines without clearing existing highlights. This prevents highlights from disappearing while typing or scrolling.
AddIssue
Add an issue to the registry (registry-only, no disk write).
issue.marker = Some(m) → ephemeral (cleared via ClearIssuesByMarker).
issue.marker = None → used only for startup loads by the Persistent
Component. User-initiated persistent issues
must go through PersistentIssueLocal(Add).
RemoveIssue
Remove an issue by ID (registry-only). Emits IssueRemoved on success.
ResolveIssue
Mark an issue as resolved (registry-only). Emits IssueUpdated on success.
DismissIssue
Mark an issue as dismissed (registry-only). Emits IssueUpdated on success.
ClearIssuesByMarker
Remove all ephemeral issues belonging to marker. Emits one
IssueRemoved per removed issue.
PersistentIssueLocal(PersistentIssueOp)
Persistent-issue commands: each variant updates the in-memory
IssueRegistry and atomically rewrites .oo/issues.yaml.
IssueAdded
An issue was added.
IssueRemoved
An issue was removed.
IssueUpdated
An issue’s resolved or dismissed flag was toggled.
TaskScheduled(TaskId)
A task was created and either started immediately or added to its queue.
TaskStarted(TaskId)
A task transitioned from Pending to Running.
TaskFinished
A task reached a terminal status (Success, Warning, or Error).
Sent by crate::task_executor::TaskExecutor when the spawned process
exits. Handled by apply_operation in app.rs, which calls
crate::task_registry::TaskRegistry::mark_finished and starts the
next queued task if one exists.
TaskCancelled(TaskId)
A task was cancelled (running or queued).
ScheduleTask
Schedule a new task. Handled by apply_operation, which calls
crate::task_registry::TaskRegistry::schedule_task and immediately
spawns the executor if the queue was idle.
Fields
trigger: TaskTriggerCancelTask(TaskId)
Cancel a running or queued task by its ID. Handled by apply_operation,
which calls crate::task_registry::TaskRegistry::cancel and starts the
next queued task if one exists.
OpenLogForTask
Open the log view and pre-populate its filter with the task’s label so the user can quickly inspect task-related entries.
OpenTaskArchive
Open the Task Archive View.
ShowTaskOutput
Delivered by app.rs after it asynchronously loads task output from the
log store. Switches to TaskOutputView and populates it with the lines.
TaskArchiveLocal(TaskArchiveOp)
View-local ops for crate::views::task_archive::TaskArchiveView.
OpenIssueList
Open the Issue List View.
IssueViewLocal(IssueViewOp)
View-local ops for crate::views::issue_view::IssueView.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Operation
impl RefUnwindSafe for Operation
impl Send for Operation
impl Sync for Operation
impl Unpin for Operation
impl UnsafeUnpin for Operation
impl UnwindSafe for Operation
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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