pub struct Backend<C> { /* private fields */ }Expand description
Transport-agnostic LSP request handler.
Backend exposes inherent async methods mirroring the LSP requests. Front-ends
(the swls binary’s tower_lsp adapter, or a future wasm dispatcher) call these
directly. It is generic over the Client used to send server-to-client messages.
Implementations§
Source§impl<C: Client> Backend<C>
impl<C: Client> Backend<C>
pub fn new( sender: CommandSender, client: C, tokens: Vec<SemanticTokenType>, ) -> Self
Source§impl<C: Client> Backend<C>
impl<C: Client> Backend<C>
pub async fn initialize( &self, init: InitializeParams, ) -> Result<InitializeResult>
pub async fn initialized(&self, _params: InitializedParams)
pub async fn did_change_workspace_folders( &self, params: DidChangeWorkspaceFoldersParams, )
pub async fn semantic_tokens_full( &self, params: SemanticTokensParams, ) -> Result<Option<SemanticTokensResult>>
pub async fn shutdown(&self) -> Result<()>
pub async fn references( &self, params: ReferenceParams, ) -> Result<Option<Vec<Location>>>
pub async fn prepare_rename( &self, params: TextDocumentPositionParams, ) -> Result<Option<PrepareRenameResponse>>
pub async fn rename( &self, params: RenameParams, ) -> Result<Option<WorkspaceEdit>>
pub async fn hover(&self, params: HoverParams) -> Result<Option<Hover>>
pub async fn inlay_hint( &self, params: InlayHintParams, ) -> Result<Option<Vec<InlayHint>>>
pub async fn formatting( &self, params: DocumentFormattingParams, ) -> Result<Option<Vec<TextEdit>>>
pub async fn on_type_formatting( &self, params: DocumentOnTypeFormattingParams, ) -> Result<Option<Vec<TextEdit>>>
pub async fn did_open(&self, params: DidOpenTextDocumentParams)
pub async fn did_change(&self, params: DidChangeTextDocumentParams)
pub async fn did_save(&self, params: DidSaveTextDocumentParams)
pub async fn goto_definition( &self, params: GotoDefinitionParams, ) -> Result<Option<GotoDefinitionResponse>>
pub async fn goto_type_definition( &self, params: GotoTypeDefinitionParams, ) -> Result<Option<GotoTypeDefinitionResponse>>
pub async fn code_action( &self, params: CodeActionParams, ) -> Result<Option<CodeActionResponse>>
Sourcepub async fn execute_command(
&self,
params: ExecuteCommandParams,
) -> Result<Option<Value>>
pub async fn execute_command( &self, params: ExecuteCommandParams, ) -> Result<Option<Value>>
Handle workspace/executeCommand.
Currently only swls.allowProperty: adds the given property IRI to the
user’s allowed_properties, both at runtime (clearing the warning) and on
disk (so the choice survives restarts), then refreshes diagnostics.
pub async fn completion( &self, params: CompletionParams, ) -> Result<Option<CompletionResponse>>
Trait Implementations§
Auto Trait Implementations§
impl<C> Freeze for Backend<C>where
C: Freeze,
impl<C> !RefUnwindSafe for Backend<C>
impl<C> Send for Backend<C>where
C: Send,
impl<C> Sync for Backend<C>where
C: Sync,
impl<C> Unpin for Backend<C>where
C: Unpin,
impl<C> UnsafeUnpin for Backend<C>where
C: UnsafeUnpin,
impl<C> !UnwindSafe for Backend<C>
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
Mutably borrows from an owned value. Read more
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>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn 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>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which 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)
Converts
&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)
Converts
&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> DowncastSend for T
impl<T> DowncastSend 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>
Converts
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>
Converts
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<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
Source§fn into_result(self) -> Result<T, RunSystemError>
fn into_result(self) -> Result<T, RunSystemError>
Converts this type into the system output type.