pub struct LspHandle { /* private fields */ }Expand description
Synchronous handle to an async LSP task
Implementations§
Source§impl LspHandle
impl LspHandle
Sourcepub fn spawn(
runtime: &Handle,
command: &str,
args: &[String],
env: HashMap<String, String>,
language: String,
async_bridge: &AsyncBridge,
process_limits: ProcessLimits,
language_id_overrides: HashMap<String, String>,
) -> Result<Self, String>
pub fn spawn( runtime: &Handle, command: &str, args: &[String], env: HashMap<String, String>, language: String, async_bridge: &AsyncBridge, process_limits: ProcessLimits, language_id_overrides: HashMap<String, String>, ) -> Result<Self, String>
Spawn a new LSP server in an async task
Sourcepub fn initialize(
&self,
root_uri: Option<Uri>,
initialization_options: Option<Value>,
) -> Result<(), String>
pub fn initialize( &self, root_uri: Option<Uri>, initialization_options: Option<Value>, ) -> Result<(), String>
Initialize the server (non-blocking)
This sends the initialize request asynchronously. The server will be ready
when is_initialized() returns true. Other methods that require initialization
will fail gracefully until then.
The initialization_options are passed to the server during initialization.
Some servers like Deno require specific options (e.g., {"enable": true}).
Sourcepub fn is_initialized(&self) -> bool
pub fn is_initialized(&self) -> bool
Check if the server is initialized
Sourcepub fn state(&self) -> LspClientState
pub fn state(&self) -> LspClientState
Get the current client state
Sourcepub fn did_open(
&self,
uri: Uri,
text: String,
language_id: String,
) -> Result<(), String>
pub fn did_open( &self, uri: Uri, text: String, language_id: String, ) -> Result<(), String>
Notify document opened
The language_id should match this handle’s language. If it doesn’t,
a warning is logged but the notification is still sent (the server
will receive it with the specified language_id).
Sourcepub fn did_change(
&self,
uri: Uri,
content_changes: Vec<TextDocumentContentChangeEvent>,
) -> Result<(), String>
pub fn did_change( &self, uri: Uri, content_changes: Vec<TextDocumentContentChangeEvent>, ) -> Result<(), String>
Notify document changed
Sourcepub fn did_save(&self, uri: Uri, text: Option<String>) -> Result<(), String>
pub fn did_save(&self, uri: Uri, text: Option<String>) -> Result<(), String>
Send didSave notification
Sourcepub fn add_workspace_folder(&self, uri: Uri, name: String) -> Result<(), String>
pub fn add_workspace_folder(&self, uri: Uri, name: String) -> Result<(), String>
Add a workspace folder to the running LSP server
Sourcepub fn completion(
&self,
request_id: u64,
uri: Uri,
line: u32,
character: u32,
) -> Result<(), String>
pub fn completion( &self, request_id: u64, uri: Uri, line: u32, character: u32, ) -> Result<(), String>
Request completion at position
Sourcepub fn goto_definition(
&self,
request_id: u64,
uri: Uri,
line: u32,
character: u32,
) -> Result<(), String>
pub fn goto_definition( &self, request_id: u64, uri: Uri, line: u32, character: u32, ) -> Result<(), String>
Request go-to-definition
Sourcepub fn rename(
&self,
request_id: u64,
uri: Uri,
line: u32,
character: u32,
new_name: String,
) -> Result<(), String>
pub fn rename( &self, request_id: u64, uri: Uri, line: u32, character: u32, new_name: String, ) -> Result<(), String>
Request rename
Sourcepub fn hover(
&self,
request_id: u64,
uri: Uri,
line: u32,
character: u32,
) -> Result<(), String>
pub fn hover( &self, request_id: u64, uri: Uri, line: u32, character: u32, ) -> Result<(), String>
Request hover documentation
Sourcepub fn references(
&self,
request_id: u64,
uri: Uri,
line: u32,
character: u32,
) -> Result<(), String>
pub fn references( &self, request_id: u64, uri: Uri, line: u32, character: u32, ) -> Result<(), String>
Request find references
Sourcepub fn signature_help(
&self,
request_id: u64,
uri: Uri,
line: u32,
character: u32,
) -> Result<(), String>
pub fn signature_help( &self, request_id: u64, uri: Uri, line: u32, character: u32, ) -> Result<(), String>
Request signature help
Sourcepub fn code_actions(
&self,
request_id: u64,
uri: Uri,
start_line: u32,
start_char: u32,
end_line: u32,
end_char: u32,
diagnostics: Vec<Diagnostic>,
) -> Result<(), String>
pub fn code_actions( &self, request_id: u64, uri: Uri, start_line: u32, start_char: u32, end_line: u32, end_char: u32, diagnostics: Vec<Diagnostic>, ) -> Result<(), String>
Request code actions
Sourcepub fn document_diagnostic(
&self,
request_id: u64,
uri: Uri,
previous_result_id: Option<String>,
) -> Result<(), String>
pub fn document_diagnostic( &self, request_id: u64, uri: Uri, previous_result_id: Option<String>, ) -> Result<(), String>
Request document diagnostics (pull model)
This sends a textDocument/diagnostic request to fetch diagnostics on demand.
Use previous_result_id for incremental updates (server may return unchanged).
Sourcepub fn inlay_hints(
&self,
request_id: u64,
uri: Uri,
start_line: u32,
start_char: u32,
end_line: u32,
end_char: u32,
) -> Result<(), String>
pub fn inlay_hints( &self, request_id: u64, uri: Uri, start_line: u32, start_char: u32, end_line: u32, end_char: u32, ) -> Result<(), String>
Request inlay hints for a range (LSP 3.17+)
Inlay hints are virtual text annotations displayed inline (e.g., type hints, parameter names).
Sourcepub fn folding_ranges(&self, request_id: u64, uri: Uri) -> Result<(), String>
pub fn folding_ranges(&self, request_id: u64, uri: Uri) -> Result<(), String>
Request folding ranges for a document
Sourcepub fn semantic_tokens_full(
&self,
request_id: u64,
uri: Uri,
) -> Result<(), String>
pub fn semantic_tokens_full( &self, request_id: u64, uri: Uri, ) -> Result<(), String>
Request semantic tokens for an entire document
Sourcepub fn semantic_tokens_full_delta(
&self,
request_id: u64,
uri: Uri,
previous_result_id: String,
) -> Result<(), String>
pub fn semantic_tokens_full_delta( &self, request_id: u64, uri: Uri, previous_result_id: String, ) -> Result<(), String>
Request semantic tokens delta for an entire document
Sourcepub fn semantic_tokens_range(
&self,
request_id: u64,
uri: Uri,
range: Range,
) -> Result<(), String>
pub fn semantic_tokens_range( &self, request_id: u64, uri: Uri, range: Range, ) -> Result<(), String>
Request semantic tokens for a range
Sourcepub fn cancel_request(&self, request_id: u64) -> Result<(), String>
pub fn cancel_request(&self, request_id: u64) -> Result<(), String>
Cancel a pending request by its editor request_id
This sends a $/cancelRequest notification to the LSP server. If the request has already completed or doesn’t exist, this is a no-op.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for LspHandle
impl RefUnwindSafe for LspHandle
impl Send for LspHandle
impl Sync for LspHandle
impl Unpin for LspHandle
impl UnsafeUnpin for LspHandle
impl UnwindSafe for LspHandle
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> DowncastSync for T
impl<T> DowncastSync for T
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