Skip to main content

ForeignLspManager

Struct ForeignLspManager 

Source
pub struct ForeignLspManager { /* private fields */ }
Expand description

Manages child LSP server processes for foreign language blocks.

Each foreign language gets at most one child server. The manager handles lifecycle (start, shutdown), document synchronization, and request forwarding.

Implementations§

Source§

impl ForeignLspManager

Source

pub fn new(workspace_dir: PathBuf) -> Self

Source

pub fn set_workspace_dir(&self, dir: PathBuf)

Update the workspace root directory.

Called from initialize() once the real workspace root is known from the client’s rootUri / workspaceFolders. This ensures child LSP servers receive the correct rootUri so they can discover project config files (e.g. pyrightconfig.json, virtualenvs).

Source

pub async fn set_configured_extensions( &self, specs: Vec<ConfiguredExtensionSpec>, )

Set extension specs that should always be loaded for foreign-LSP discovery.

Source

pub async fn start_server(&self, language: &str) -> Result<(), String>

Start a child language server for the given language, if not already running.

Source

pub async fn update_documents( &self, source_uri: &str, source: &str, items: &[Item], current_file: Option<&Path>, workspace_root: Option<&Path>, ) -> Vec<Diagnostic>

Update virtual documents for all foreign function blocks in a parsed program.

Call this from analyze_document whenever the program is successfully parsed.

Source

pub async fn handle_completion( &self, source_uri: &str, position: Position, items: &[Item], source: &str, ) -> Option<Vec<CompletionItem>>

Handle a completion request that falls inside a foreign function body.

Returns None if the position is not in a foreign block or delegation fails.

Source

pub async fn handle_hover( &self, source_uri: &str, position: Position, items: &[Item], source: &str, ) -> Option<Hover>

Handle a hover request that falls inside a foreign function body.

Source

pub async fn handle_signature_help( &self, source_uri: &str, position: Position, items: &[Item], source: &str, ) -> Option<SignatureHelp>

Handle a signature help request that falls inside a foreign function body.

Source

pub async fn handle_definition( &self, source_uri: &str, position: Position, items: &[Item], source: &str, ) -> Option<GotoDefinitionResponse>

Handle go-to-definition for positions inside foreign function bodies.

Source

pub async fn handle_references( &self, source_uri: &str, position: Position, items: &[Item], source: &str, ) -> Option<Vec<Location>>

Handle find-references for positions inside foreign function bodies.

Source

pub async fn collect_semantic_tokens( &self, source_uri: &str, ) -> Vec<ForeignSemanticToken>

Collect semantic tokens for foreign blocks mapped into Shape coordinates.

Source

pub async fn get_diagnostics(&self, source_uri: &str) -> Vec<Diagnostic>

Retrieve diagnostics from child language servers for foreign blocks in a source file.

Maps virtual document diagnostics back to Shape source positions.

Source

pub fn map_diagnostic_to_shape( diagnostic: &Diagnostic, position_map: &PositionMap, ) -> Option<Diagnostic>

Map a diagnostic from a virtual document back to Shape source coordinates.

Source

pub async fn shutdown(&self)

Shut down all child language servers gracefully.

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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: 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: 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> Same for T

Source§

type Output = T

Should always be Self
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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