pub struct LsDriver<M, Args: Initializer> {
pub client: LspClient,
pub events: HashMap<TypeId, Box<dyn for<'a> Fn(ServiceState<'a, Args, Args::S>, &LspClient, Event) -> Result<()>>>,
pub commands: HashMap<&'static str, Box<dyn Fn(&mut Args::S, Vec<Value>) -> SchedulableResponse<Value>>>,
pub notifications: HashMap<&'static str, Box<dyn Fn(&mut Args::S, Value) -> LspResult<()>>>,
pub requests: HashMap<&'static str, Box<dyn Fn(&mut Args::S, Value) -> SchedulableResponse<Value>>>,
pub resources: HashMap<Arc<Path>, Box<dyn Fn(&mut Args::S, Vec<Value>) -> SchedulableResponse<Value>>>,
/* private fields */
}Expand description
The language server driver.
Fields§
§client: LspClientThe language server client.
events: HashMap<TypeId, Box<dyn for<'a> Fn(ServiceState<'a, Args, Args::S>, &LspClient, Event) -> Result<()>>>Events for dispatching.
commands: HashMap<&'static str, Box<dyn Fn(&mut Args::S, Vec<Value>) -> SchedulableResponse<Value>>>Extra commands provided with textDocument/executeCommand.
notifications: HashMap<&'static str, Box<dyn Fn(&mut Args::S, Value) -> LspResult<()>>>Notifications for dispatching.
requests: HashMap<&'static str, Box<dyn Fn(&mut Args::S, Value) -> SchedulableResponse<Value>>>Requests for dispatching.
resources: HashMap<Arc<Path>, Box<dyn Fn(&mut Args::S, Vec<Value>) -> SchedulableResponse<Value>>>Resources for dispatching.
Implementations§
Source§impl<Args: Initializer> LsDriver<DapMessage, Args>where
Args::S: 'static,
impl<Args: Initializer> LsDriver<DapMessage, Args>where
Args::S: 'static,
Sourcepub fn start(
&mut self,
inbox: TConnectionRx<DapMessage>,
is_replay: bool,
) -> Result<()>
pub fn start( &mut self, inbox: TConnectionRx<DapMessage>, is_replay: bool, ) -> Result<()>
Starts the debug adaptor on the given connection.
If is_replay is true, the server will wait for all pending requests to
finish before exiting. This is useful for testing the language server.
See transport::MirrorArgs for information about the record-replay
feature.
Sourcepub fn start_(&mut self, inbox: TConnectionRx<DapMessage>) -> Result<()>
pub fn start_(&mut self, inbox: TConnectionRx<DapMessage>) -> Result<()>
Starts the debug adaptor on the given connection.
Source§impl<Args: Initializer> LsDriver<LspMessage, Args>where
Args::S: 'static,
impl<Args: Initializer> LsDriver<LspMessage, Args>where
Args::S: 'static,
Sourcepub fn start(
&mut self,
inbox: TConnectionRx<LspMessage>,
is_replay: bool,
) -> Result<()>
pub fn start( &mut self, inbox: TConnectionRx<LspMessage>, is_replay: bool, ) -> Result<()>
Starts the language server on the given connection.
If is_replay is true, the server will wait for all pending requests to
finish before exiting. This is useful for testing the language server.
See transport::MirrorArgs for information about the record-replay
feature.
Sourcepub fn start_(&mut self, inbox: TConnectionRx<LspMessage>) -> Result<()>
pub fn start_(&mut self, inbox: TConnectionRx<LspMessage>) -> Result<()>
Starts the language server on the given connection.
Sourcepub fn on_server_event(&mut self, event_id: u32)
pub fn on_server_event(&mut self, event_id: u32)
Handles an incoming server event.
Sourcepub fn on_lsp_request(
&mut self,
method: &str,
params: JsonValue,
) -> ScheduleResult
pub fn on_lsp_request( &mut self, method: &str, params: JsonValue, ) -> ScheduleResult
Registers and handles a request. This should only be called once per incoming request.
Sourcepub fn on_notification(
&mut self,
method: &str,
params: JsonValue,
) -> LspResult<()>
pub fn on_notification( &mut self, method: &str, params: JsonValue, ) -> LspResult<()>
Handles an incoming notification.
Sourcepub fn on_lsp_response(&mut self, resp: Response)
pub fn on_lsp_response(&mut self, resp: Response)
Handles an incoming response.
Source§impl<M, Args: Initializer> LsDriver<M, Args>
impl<M, Args: Initializer> LsDriver<M, Args>
Sourcepub fn state_mut(&mut self) -> Option<&mut Args::S>
pub fn state_mut(&mut self) -> Option<&mut Args::S>
Gets the mutable state of the language server.
Sourcepub fn ready(&mut self, params: Args::I) -> AnySchedulableResponse
pub fn ready(&mut self, params: Args::I) -> AnySchedulableResponse
Makes the language server ready.
Sourcepub fn get_resources(&mut self, args: Vec<JsonValue>) -> ScheduleResult
pub fn get_resources(&mut self, args: Vec<JsonValue>) -> ScheduleResult
Get static resources with help of tinymist service, for example, a static help pages for some typst function.
Auto Trait Implementations§
impl<M, Args> Freeze for LsDriver<M, Args>
impl<M, Args> !RefUnwindSafe for LsDriver<M, Args>
impl<M, Args> !Send for LsDriver<M, Args>
impl<M, Args> !Sync for LsDriver<M, Args>
impl<M, Args> Unpin for LsDriver<M, Args>
impl<M, Args> !UnwindSafe for LsDriver<M, Args>
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
§impl<S, T> ArcInto<T> for S
impl<S, T> ArcInto<T> for S
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
§fn deserialize(
&self,
deserializer: &mut D,
) -> Result<With<T, W>, <D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>
§impl<T> Filterable for T
impl<T> Filterable for T
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
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<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more