lsp.wit

 1interface lsp {
 2    /// An LSP completion.
 3    record completion {
 4        label: string,
 5        label-details: option<completion-label-details>,
 6        detail: option<string>,
 7        kind: option<completion-kind>,
 8        insert-text-format: option<insert-text-format>,
 9    }
10
11    /// The kind of an LSP completion.
12    variant completion-kind {
13        text,
14        method,
15        function,
16        %constructor,
17        field,
18        variable,
19        class,
20        %interface,
21        module,
22        property,
23        unit,
24        value,
25        %enum,
26        keyword,
27        snippet,
28        color,
29        file,
30        reference,
31        folder,
32        enum-member,
33        constant,
34        struct,
35        event,
36        operator,
37        type-parameter,
38        other(s32),
39    }
40
41    /// Label details for an LSP completion.
42    record completion-label-details {
43        detail: option<string>,
44        description: option<string>,
45    }
46
47    /// Defines how to interpret the insert text in a completion item.
48    variant insert-text-format {
49        plain-text,
50        snippet,
51        other(s32),
52    }
53
54    /// An LSP symbol.
55    record symbol {
56        kind: symbol-kind,
57        name: string,
58        container-name: option<string>,
59    }
60
61    /// The kind of an LSP symbol.
62    variant symbol-kind {
63        file,
64        module,
65        namespace,
66        %package,
67        class,
68        method,
69        property,
70        field,
71        %constructor,
72        %enum,
73        %interface,
74        function,
75        variable,
76        constant,
77        %string,
78        number,
79        boolean,
80        array,
81        object,
82        key,
83        null,
84        enum-member,
85        struct,
86        event,
87        operator,
88        type-parameter,
89        other(s32),
90    }
91}