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}