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    }
59
60    /// The kind of an LSP symbol.
61    variant symbol-kind {
62        file,
63        module,
64        namespace,
65        %package,
66        class,
67        method,
68        property,
69        field,
70        %constructor,
71        %enum,
72        %interface,
73        function,
74        variable,
75        constant,
76        %string,
77        number,
78        boolean,
79        array,
80        object,
81        key,
82        null,
83        enum-member,
84        struct,
85        event,
86        operator,
87        type-parameter,
88        other(s32),
89    }
90}