summaryrefslogtreecommitdiff
path: root/support/texlab/src/test/client.rs
blob: b8806cc93322bf9a146589a084a2f5dc701fd00a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
use crate::protocol::*;
use jsonrpc::client::Result;
use jsonrpc_derive::{jsonrpc_client, jsonrpc_method};

#[jsonrpc_client(TestLatexLspClient)]
pub trait TestLspClient {
    #[jsonrpc_method("initialize", kind = "request")]
    async fn initialize(&self, params: InitializeParams) -> Result<InitializeResult>;

    #[jsonrpc_method("initialized", kind = "notification")]
    async fn initialized(&self, params: InitializedParams);

    #[jsonrpc_method("shutdown", kind = "request")]
    async fn shutdown(&self, params: ()) -> Result<()>;

    #[jsonrpc_method("exit", kind = "notification")]
    async fn exit(&self, params: ());

    #[jsonrpc_method("textDocument/didOpen", kind = "notification")]
    async fn did_open(&self, params: DidOpenTextDocumentParams);

    #[jsonrpc_method("textDocument/didChange", kind = "notification")]
    async fn did_change(&self, params: DidChangeTextDocumentParams);

    #[jsonrpc_method("workspace/didChangeConfiguration", kind = "notification")]
    async fn did_change_configuration(&self, params: DidChangeConfigurationParams);

    #[jsonrpc_method("textDocument/definition", kind = "request")]
    async fn definition(&self, params: TextDocumentPositionParams) -> Result<DefinitionResponse>;

    #[jsonrpc_method("textDocument/completion", kind = "request")]
    async fn completion(&self, params: CompletionParams) -> Result<CompletionList>;

    #[jsonrpc_method("completionItem/resolve", kind = "request")]
    async fn completion_resolve(&self, item: CompletionItem) -> Result<CompletionItem>;

    #[jsonrpc_method("textDocument/foldingRange", kind = "request")]
    async fn folding_range(&self, params: FoldingRangeParams) -> Result<Vec<FoldingRange>>;

    #[jsonrpc_method("textDocument/documentHighlight", kind = "request")]
    async fn document_highlight(
        &self,
        params: TextDocumentPositionParams,
    ) -> Result<Vec<DocumentHighlight>>;

    #[jsonrpc_method("textDocument/documentLink", kind = "request")]
    async fn document_link(&self, params: DocumentLinkParams) -> Result<Vec<DocumentLink>>;

    #[jsonrpc_method("textDocument/references", kind = "request")]
    async fn references(&self, params: ReferenceParams) -> Result<Vec<Location>>;

    #[jsonrpc_method("textDocument/prepareRename", kind = "request")]
    async fn prepare_rename(&self, params: TextDocumentPositionParams) -> Result<Option<Range>>;

    #[jsonrpc_method("textDocument/rename", kind = "request")]
    async fn rename(&self, params: RenameParams) -> Result<Option<WorkspaceEdit>>;

    #[jsonrpc_method("textDocument/hover", kind = "request")]
    async fn hover(&self, params: TextDocumentPositionParams) -> Result<Option<Hover>>;

    #[jsonrpc_method("workspace/symbol", kind = "request")]
    async fn workspace_symbol(
        &self,
        params: WorkspaceSymbolParams,
    ) -> Result<Vec<SymbolInformation>>;

    #[jsonrpc_method("textDocument/documentSymbol", kind = "request")]
    async fn document_symbol(&self, params: DocumentSymbolParams)
        -> Result<DocumentSymbolResponse>;

    #[jsonrpc_method("$/detectRoot", kind = "request")]
    async fn detect_root(&self, params: TextDocumentIdentifier) -> Result<()>;
}