Skip to the content.

lsp-ty

This crate provides types used for LSP, and some helper structures, macro and trait for handling message.

For more information about LSP, see LSP - overview.

demo usage

check examples of lsp-io

add custom request, notification and response

If you want to custom request/response pair. First, define you request params and response result type, with Serialize and Deserialize derive.

#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
pub struct MyParams {
    pub name: String,
    pub pos: Position
}

#[derive(Clone, PartialEq, Debug, Default, Deserialize, Serialize)]
pub struct MyResult {
    pub data: Vec<String>
}

then use impl_req helper macro to auto complete FromReq trait for you custom types

// the second param is you custom request method
impl_req!(MyParams, "custom/my", MyResult);

impl notification message is similar with above, except that, notification does not need to specify response type.