summaryrefslogtreecommitdiff
path: root/support/texlab/crates/texlab/src/util/client_flags.rs
blob: e5813e4f02814aebbe40f0832e0c5519039aaaa4 (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
/// Contains information about the client's capabilities.
/// This is used to determine which features the server can use.
#[derive(Debug, Clone)]
pub struct ClientFlags {
    /// If `true`, the server can return `DocumentSymbol` instead of `SymbolInformation`.
    pub hierarchical_document_symbols: bool,

    /// If `true`, the server can include markdown in completion items.
    /// This is used to include images via base64 encoding.
    pub completion_markdown: bool,

    /// If `true`, the server can include snippets like `\begin{...}` in completion items.
    pub completion_snippets: bool,

    /// The completion kinds supported by the client. Unsupported kinds will be replaced by `TEXT`.
    pub completion_kinds: Vec<lsp_types::CompletionItemKind>,

    /// If `true`, the server will always mark the completion list as incomplete.
    /// This is used as a workaround for VSCode where the client-side filtering messes with `filterText`.
    /// If not set, then fuzzy citation completion will not work.
    pub completion_always_incomplete: bool,

    /// If `true`, the server can include markdown in hover responses.
    pub hover_markdown: bool,

    /// If `true`, the server can pull the configuration from the client.
    pub configuration_pull: bool,

    /// If `true`, the client notifies the server when the configuration changes.
    pub configuration_push: bool,

    /// If `true`, the client can return `LocationLink` instead of `Location`.
    pub definition_link: bool,

    /// If `true`, the server can return custom kinds like `section`.
    pub folding_custom_kinds: bool,

    /// If `true`, the server can report progress using `WorkDoneProgress`.
    pub progress: bool,
}