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}