pub enum AsyncMessage {
Show 51 variants
RemoteAttachReady(RemoteAttachReady),
RemoteAttachFailed {
error: String,
request_id: u64,
},
LspDiagnostics {
uri: String,
diagnostics: Vec<Diagnostic>,
server_name: String,
},
LspInitialized {
language: String,
server_name: String,
capabilities: ServerCapabilitySummary,
},
LspError {
language: String,
error: String,
stderr_log_path: Option<PathBuf>,
},
LspCompletion {
request_id: u64,
items: Vec<CompletionItem>,
},
LspGotoDefinition {
request_id: u64,
locations: Vec<Location>,
},
LspRename {
request_id: u64,
result: Result<WorkspaceEdit, String>,
},
LspHover {
request_id: u64,
contents: String,
is_markdown: bool,
range: Option<((u32, u32), (u32, u32))>,
},
LspReferences {
request_id: u64,
locations: Vec<Location>,
},
LspSignatureHelp {
request_id: u64,
signature_help: Option<SignatureHelp>,
},
LspCodeActions {
request_id: u64,
actions: Vec<CodeActionOrCommand>,
},
LspCompletionResolved {
request_id: u64,
item: Result<CompletionItem, String>,
},
LspFormatting {
request_id: u64,
uri: String,
edits: Vec<TextEdit>,
},
LspPrepareRename {
request_id: u64,
result: Result<Value, String>,
},
LspPulledDiagnostics {
request_id: u64,
uri: String,
result_id: Option<String>,
diagnostics: Vec<Diagnostic>,
unchanged: bool,
},
LspInlayHints {
request_id: u64,
uri: String,
hints: Vec<InlayHint>,
},
LspFoldingRanges {
request_id: u64,
uri: String,
ranges: Vec<FoldingRange>,
},
LspSemanticTokens {
request_id: u64,
uri: String,
response: LspSemanticTokensResponse,
},
LspServerQuiescent {
language: String,
},
LspDiagnosticRefresh {
language: String,
},
LspInlayHintRefresh {
language: String,
},
LspSemanticTokensRefresh {
language: String,
},
LspDynamicCapabilities {
language: String,
server_name: String,
register: bool,
registrations: Vec<(String, Option<Value>)>,
},
FileChanged {
path: String,
},
GitStatusChanged {
status: String,
},
FileExplorerInitialized {
window: WindowId,
view: FileTreeView,
},
FileExplorerToggleNode(NodeId),
FileExplorerRefreshNode(NodeId),
FileExplorerExpandedToPath {
window: WindowId,
view: FileTreeView,
},
Plugin(PluginAsyncMessage),
FileOpenDirectoryLoaded(Result<Vec<DirEntry>>),
FileOpenShortcutsLoaded(Vec<NavigationShortcut>),
TerminalOutput {
terminal: WindowTerminalId,
},
ClipboardPasteResult {
request_id: u64,
text: Option<String>,
},
PathChanged {
handle: u64,
path: PathBuf,
kind: PathChangeKind,
},
TerminalExited {
terminal: WindowTerminalId,
exit_code: Option<i32>,
},
LspProgress {
language: String,
token: String,
value: LspProgressValue,
},
LspWindowMessage {
language: String,
message_type: LspMessageType,
message: String,
},
LspLogMessage {
language: String,
message_type: LspMessageType,
message: String,
},
LspApplyEdit {
edit: WorkspaceEdit,
label: Option<String>,
},
LspCodeActionResolved {
request_id: u64,
action: Result<CodeAction, String>,
},
LspServerRequest {
language: String,
server_command: String,
method: String,
params: Option<Value>,
},
PluginLspResponse {
language: String,
request_id: u64,
result: Result<Value, String>,
},
PluginProcessOutput {
process_id: u64,
stdout: String,
stderr: String,
exit_code: i32,
},
LspStatusUpdate {
language: String,
server_name: String,
status: LspServerStatus,
message: Option<String>,
},
GrammarRegistryBuilt {
registry: Arc<GrammarRegistry>,
callback_ids: Vec<JsCallbackId>,
},
QuickOpenFilesLoaded {
cwd: String,
files: Arc<Vec<FileEntry>>,
complete: bool,
},
PluginsDirLoaded {
dir: PathBuf,
errors: Vec<String>,
discovered_plugins: HashMap<String, PluginConfig>,
},
PluginDeclarationsReady {
declarations: Vec<(String, String)>,
},
PluginInitScriptLoaded(PluginInitScriptOutcome),
}Expand description
Messages sent from async tasks to the synchronous main loop
Variants§
RemoteAttachReady(RemoteAttachReady)
An async attachRemoteAgent connect succeeded — install the
authority + keepalive and restart.
RemoteAttachFailed
An async attachRemoteAgent connect failed — reject the plugin’s
promise with error (the plugin shows it and creates no window); the
editor stays on its current authority.
LspDiagnostics
LSP diagnostics received for a file
Fields
diagnostics: Vec<Diagnostic>LspInitialized
LSP server initialized successfully
Fields
capabilities: ServerCapabilitySummaryCapabilities reported by this server
LspError
LSP server crashed or failed
Fields
LspCompletion
LSP completion response
LspGotoDefinition
LSP go-to-definition response
LspRename
LSP rename response
LspHover
LSP hover response
Fields
LspReferences
LSP find references response
LspSignatureHelp
LSP signature help response
LspCodeActions
LSP code actions response
LspCompletionResolved
LSP completionItem/resolve response
LspFormatting
LSP textDocument/formatting response
LspPrepareRename
LSP textDocument/prepareRename response
LspPulledDiagnostics
LSP pulled diagnostics response (textDocument/diagnostic)
Fields
diagnostics: Vec<Diagnostic>Diagnostics (empty if unchanged)
LspInlayHints
LSP inlay hints response (textDocument/inlayHint)
LspFoldingRanges
LSP folding ranges response (textDocument/foldingRange)
LspSemanticTokens
LSP semantic tokens response (full, full/delta, or range)
LspServerQuiescent
LSP server status became quiescent (project fully loaded) This is a rust-analyzer specific notification (experimental/serverStatus)
LspDiagnosticRefresh
LSP server requests diagnostic refresh (workspace/diagnostic/refresh) Client should re-pull diagnostics for all open documents
LspInlayHintRefresh
LSP server requests an inlay-hint refresh (workspace/inlayHint/refresh). Client should re-pull inlay hints for all open documents — used when the server learns more later (e.g. a change in file A alters inferred types in file B, which the user never edited so was never otherwise re-pulled).
LspSemanticTokensRefresh
LSP server requests a semantic-tokens refresh (workspace/semanticTokens/refresh). Client should re-pull semantic tokens for all open documents.
LspDynamicCapabilities
LSP server registered (client/registerCapability) or unregistered
(client/unregisterCapability) one or more capabilities dynamically.
Many servers advertise little or nothing statically in their
initialize result and instead register providers afterwards, so these
must update the stored ServerCapabilities or the features stay gated
off for the whole session. register == false means unregister.
Each entry is (method, register_options).
Fields
FileChanged
File changed externally (future: file watching)
GitStatusChanged
Git status updated (future: git integration)
FileExplorerInitialized
File explorer initialized with tree view. Carries the id of the window that requested it: a background preview/materialize can init a non-active window’s explorer, so the view must land on that window — applying it to whatever is active would clobber an unrelated explorer.
FileExplorerToggleNode(NodeId)
File explorer node toggle completed
FileExplorerRefreshNode(NodeId)
File explorer node refresh completed
FileExplorerExpandedToPath
File explorer expand to path completed. Carries the requesting window id
(see FileExplorerInitialized) so the expanded view returns to its own
window rather than the active one.
Plugin(PluginAsyncMessage)
Plugin-related async messages
FileOpenDirectoryLoaded(Result<Vec<DirEntry>>)
File open dialog: directory listing completed
FileOpenShortcutsLoaded(Vec<NavigationShortcut>)
File open dialog: async shortcuts (Windows drive letters) loaded
TerminalOutput
Terminal output received (triggers redraw). Tagged with the owning window: terminal ids are only unique within a window, so a bare id can’t be attributed to a session without guessing.
Fields
terminal: WindowTerminalIdClipboardPasteResult
Result of an asynchronous system-clipboard read. The main loop
blocks input dispatch while a paste is in flight; the matching
request_id ensures a late result that arrived after the
timeout fallback fired is discarded as stale. text is None
when the read errored, returned empty, or was cancelled by the
deadline.
PathChanged
File watcher delivered an event for a path under a
WatchPath-registered watcher. Routed to the
path_changed plugin hook by the main loop.
Fields
kind: PathChangeKindConservative bucketing of notify::EventKind.
TerminalExited
Terminal process exited.
exit_code is None when the editor cannot determine a status
(the wait happens in a separate thread, signal exits, kill
before wait, etc.). Populated end-to-end is a follow-up; the
initial wiring sends None so plugin handlers see the variant
shape that matches HookArgs::TerminalExited.
LspProgress
LSP progress notification ($/progress)
LspWindowMessage
LSP window message (window/showMessage)
LspLogMessage
LSP log message (window/logMessage)
LspApplyEdit
LSP workspace/applyEdit (server -> client request) Server asks client to apply a workspace edit (during executeCommand, etc.)
LspCodeActionResolved
LSP codeAction/resolve response
LspServerRequest
LSP server request (server -> client) Used for custom/extension methods that plugins can handle
PluginLspResponse
Response for a plugin-initiated LSP request
PluginProcessOutput
Plugin process completed with output
Fields
LspStatusUpdate
LSP server status update (progress, messages, etc.)
Fields
status: LspServerStatusGrammarRegistryBuilt
Background grammar build completed — swap in the new registry.
callback_ids contains plugin callbacks to resolve (empty for the
initial startup build).
QuickOpenFilesLoaded
Quick Open file list loaded by a background task.
complete is true when the scan is finished, false for incremental
partial updates sent while the walk is still in progress.
Fields
PluginsDirLoaded
Startup-async: a single plugin directory finished loading on the
plugin thread. Carries the same payload as the blocking
load_plugins_from_dir_with_config return value.
PluginDeclarationsReady
Startup-async: every directory in the startup batch has loaded and
the resulting .d.ts declarations have been collected from the
plugin runtime. Triggers init_script::write_plugin_declarations.
PluginInitScriptLoaded(PluginInitScriptOutcome)
Startup-async: init.ts (auto-loaded source plugin) finished
running its top level and has either succeeded, failed, or was
skipped/fused. The handler logs and applies the corresponding
status message, and (on Loaded) clears the crash fuse.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for AsyncMessage
impl !Sync for AsyncMessage
impl !UnwindSafe for AsyncMessage
impl Freeze for AsyncMessage
impl Send for AsyncMessage
impl Unpin for AsyncMessage
impl UnsafeUnpin for AsyncMessage
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> 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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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 moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more