• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2018 The Go Authors.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package protocol
16
17import (
18	"fmt"
19)
20
21var (
22	namesTextDocumentSyncKind   [int(Incremental) + 1]string
23	namesInitializeError        [int(UnknownProtocolVersion) + 1]string
24	namesMessageType            [int(Log) + 1]string
25	namesFileChangeType         [int(Deleted) + 1]string
26	namesWatchKind              [int(WatchDelete) + 1]string
27	namesCompletionTriggerKind  [int(TriggerForIncompleteCompletions) + 1]string
28	namesDiagnosticSeverity     [int(SeverityHint) + 1]string
29	namesDiagnosticTag          [int(Unnecessary) + 1]string
30	namesCompletionItemKind     [int(TypeParameterCompletion) + 1]string
31	namesInsertTextFormat       [int(SnippetTextFormat) + 1]string
32	namesDocumentHighlightKind  [int(Write) + 1]string
33	namesSymbolKind             [int(TypeParameter) + 1]string
34	namesTextDocumentSaveReason [int(FocusOut) + 1]string
35)
36
37func init() {
38	namesTextDocumentSyncKind[int(None)] = "None"
39	namesTextDocumentSyncKind[int(Full)] = "Full"
40	namesTextDocumentSyncKind[int(Incremental)] = "Incremental"
41
42	namesInitializeError[int(UnknownProtocolVersion)] = "UnknownProtocolVersion"
43
44	namesMessageType[int(Error)] = "Error"
45	namesMessageType[int(Warning)] = "Warning"
46	namesMessageType[int(Info)] = "Info"
47	namesMessageType[int(Log)] = "Log"
48
49	namesFileChangeType[int(Created)] = "Created"
50	namesFileChangeType[int(Changed)] = "Changed"
51	namesFileChangeType[int(Deleted)] = "Deleted"
52
53	namesWatchKind[int(WatchCreate)] = "WatchCreate"
54	namesWatchKind[int(WatchChange)] = "WatchChange"
55	namesWatchKind[int(WatchDelete)] = "WatchDelete"
56
57	namesCompletionTriggerKind[int(Invoked)] = "Invoked"
58	namesCompletionTriggerKind[int(TriggerCharacter)] = "TriggerCharacter"
59	namesCompletionTriggerKind[int(TriggerForIncompleteCompletions)] = "TriggerForIncompleteCompletions"
60
61	namesDiagnosticSeverity[int(SeverityError)] = "Error"
62	namesDiagnosticSeverity[int(SeverityWarning)] = "Warning"
63	namesDiagnosticSeverity[int(SeverityInformation)] = "Information"
64	namesDiagnosticSeverity[int(SeverityHint)] = "Hint"
65
66	namesDiagnosticTag[int(Unnecessary)] = "Unnecessary"
67
68	namesCompletionItemKind[int(TextCompletion)] = "text"
69	namesCompletionItemKind[int(MethodCompletion)] = "method"
70	namesCompletionItemKind[int(FunctionCompletion)] = "func"
71	namesCompletionItemKind[int(ConstructorCompletion)] = "constructor"
72	namesCompletionItemKind[int(FieldCompletion)] = "field"
73	namesCompletionItemKind[int(VariableCompletion)] = "var"
74	namesCompletionItemKind[int(ClassCompletion)] = "type"
75	namesCompletionItemKind[int(InterfaceCompletion)] = "interface"
76	namesCompletionItemKind[int(ModuleCompletion)] = "package"
77	namesCompletionItemKind[int(PropertyCompletion)] = "property"
78	namesCompletionItemKind[int(UnitCompletion)] = "unit"
79	namesCompletionItemKind[int(ValueCompletion)] = "value"
80	namesCompletionItemKind[int(EnumCompletion)] = "enum"
81	namesCompletionItemKind[int(KeywordCompletion)] = "keyword"
82	namesCompletionItemKind[int(SnippetCompletion)] = "snippet"
83	namesCompletionItemKind[int(ColorCompletion)] = "color"
84	namesCompletionItemKind[int(FileCompletion)] = "file"
85	namesCompletionItemKind[int(ReferenceCompletion)] = "reference"
86	namesCompletionItemKind[int(FolderCompletion)] = "folder"
87	namesCompletionItemKind[int(EnumMemberCompletion)] = "enumMember"
88	namesCompletionItemKind[int(ConstantCompletion)] = "const"
89	namesCompletionItemKind[int(StructCompletion)] = "struct"
90	namesCompletionItemKind[int(EventCompletion)] = "event"
91	namesCompletionItemKind[int(OperatorCompletion)] = "operator"
92	namesCompletionItemKind[int(TypeParameterCompletion)] = "typeParam"
93
94	namesInsertTextFormat[int(PlainTextTextFormat)] = "PlainText"
95	namesInsertTextFormat[int(SnippetTextFormat)] = "Snippet"
96
97	namesDocumentHighlightKind[int(Text)] = "Text"
98	namesDocumentHighlightKind[int(Read)] = "Read"
99	namesDocumentHighlightKind[int(Write)] = "Write"
100
101	namesSymbolKind[int(File)] = "File"
102	namesSymbolKind[int(Module)] = "Module"
103	namesSymbolKind[int(Namespace)] = "Namespace"
104	namesSymbolKind[int(Package)] = "Package"
105	namesSymbolKind[int(Class)] = "Class"
106	namesSymbolKind[int(Method)] = "Method"
107	namesSymbolKind[int(Property)] = "Property"
108	namesSymbolKind[int(Field)] = "Field"
109	namesSymbolKind[int(Constructor)] = "Constructor"
110	namesSymbolKind[int(Enum)] = "Enum"
111	namesSymbolKind[int(Interface)] = "Interface"
112	namesSymbolKind[int(Function)] = "Function"
113	namesSymbolKind[int(Variable)] = "Variable"
114	namesSymbolKind[int(Constant)] = "Constant"
115	namesSymbolKind[int(String)] = "String"
116	namesSymbolKind[int(Number)] = "Number"
117	namesSymbolKind[int(Boolean)] = "Boolean"
118	namesSymbolKind[int(Array)] = "Array"
119	namesSymbolKind[int(Object)] = "Object"
120	namesSymbolKind[int(Key)] = "Key"
121	namesSymbolKind[int(Null)] = "Null"
122	namesSymbolKind[int(EnumMember)] = "EnumMember"
123	namesSymbolKind[int(Struct)] = "Struct"
124	namesSymbolKind[int(Event)] = "Event"
125	namesSymbolKind[int(Operator)] = "Operator"
126	namesSymbolKind[int(TypeParameter)] = "TypeParameter"
127
128	namesTextDocumentSaveReason[int(Manual)] = "Manual"
129	namesTextDocumentSaveReason[int(AfterDelay)] = "AfterDelay"
130	namesTextDocumentSaveReason[int(FocusOut)] = "FocusOut"
131}
132
133func formatEnum(f fmt.State, c rune, i int, names []string, unknown string) {
134	s := ""
135	if i >= 0 && i < len(names) {
136		s = names[i]
137	}
138	if s != "" {
139		fmt.Fprint(f, s)
140	} else {
141		fmt.Fprintf(f, "%s(%d)", unknown, i)
142	}
143}
144
145func parseEnum(s string, names []string) int {
146	for i, name := range names {
147		if s == name {
148			return i
149		}
150	}
151	return 0
152}
153
154func (e TextDocumentSyncKind) Format(f fmt.State, c rune) {
155	formatEnum(f, c, int(e), namesTextDocumentSyncKind[:], "TextDocumentSyncKind")
156}
157
158func ParseTextDocumentSyncKind(s string) TextDocumentSyncKind {
159	return TextDocumentSyncKind(parseEnum(s, namesTextDocumentSyncKind[:]))
160}
161
162func (e InitializeError) Format(f fmt.State, c rune) {
163	formatEnum(f, c, int(e), namesInitializeError[:], "InitializeError")
164}
165
166func ParseInitializeError(s string) InitializeError {
167	return InitializeError(parseEnum(s, namesInitializeError[:]))
168}
169
170func (e MessageType) Format(f fmt.State, c rune) {
171	formatEnum(f, c, int(e), namesMessageType[:], "MessageType")
172}
173
174func ParseMessageType(s string) MessageType {
175	return MessageType(parseEnum(s, namesMessageType[:]))
176}
177
178func (e FileChangeType) Format(f fmt.State, c rune) {
179	formatEnum(f, c, int(e), namesFileChangeType[:], "FileChangeType")
180}
181
182func ParseFileChangeType(s string) FileChangeType {
183	return FileChangeType(parseEnum(s, namesFileChangeType[:]))
184}
185
186func (e WatchKind) Format(f fmt.State, c rune) {
187	formatEnum(f, c, int(e), namesWatchKind[:], "WatchKind")
188}
189
190func ParseWatchKind(s string) WatchKind {
191	return WatchKind(parseEnum(s, namesWatchKind[:]))
192}
193
194func (e CompletionTriggerKind) Format(f fmt.State, c rune) {
195	formatEnum(f, c, int(e), namesCompletionTriggerKind[:], "CompletionTriggerKind")
196}
197
198func ParseCompletionTriggerKind(s string) CompletionTriggerKind {
199	return CompletionTriggerKind(parseEnum(s, namesCompletionTriggerKind[:]))
200}
201
202func (e DiagnosticSeverity) Format(f fmt.State, c rune) {
203	formatEnum(f, c, int(e), namesDiagnosticSeverity[:], "DiagnosticSeverity")
204}
205
206func ParseDiagnosticSeverity(s string) DiagnosticSeverity {
207	return DiagnosticSeverity(parseEnum(s, namesDiagnosticSeverity[:]))
208}
209
210func (e DiagnosticTag) Format(f fmt.State, c rune) {
211	formatEnum(f, c, int(e), namesDiagnosticTag[:], "DiagnosticTag")
212}
213
214func ParseDiagnosticTag(s string) DiagnosticTag {
215	return DiagnosticTag(parseEnum(s, namesDiagnosticTag[:]))
216}
217
218func (e CompletionItemKind) Format(f fmt.State, c rune) {
219	formatEnum(f, c, int(e), namesCompletionItemKind[:], "CompletionItemKind")
220}
221
222func ParseCompletionItemKind(s string) CompletionItemKind {
223	return CompletionItemKind(parseEnum(s, namesCompletionItemKind[:]))
224}
225
226func (e InsertTextFormat) Format(f fmt.State, c rune) {
227	formatEnum(f, c, int(e), namesInsertTextFormat[:], "InsertTextFormat")
228}
229
230func ParseInsertTextFormat(s string) InsertTextFormat {
231	return InsertTextFormat(parseEnum(s, namesInsertTextFormat[:]))
232}
233
234func (e DocumentHighlightKind) Format(f fmt.State, c rune) {
235	formatEnum(f, c, int(e), namesDocumentHighlightKind[:], "DocumentHighlightKind")
236}
237
238func ParseDocumentHighlightKind(s string) DocumentHighlightKind {
239	return DocumentHighlightKind(parseEnum(s, namesDocumentHighlightKind[:]))
240}
241
242func (e SymbolKind) Format(f fmt.State, c rune) {
243	formatEnum(f, c, int(e), namesSymbolKind[:], "SymbolKind")
244}
245
246func ParseSymbolKind(s string) SymbolKind {
247	return SymbolKind(parseEnum(s, namesSymbolKind[:]))
248}
249
250func (e TextDocumentSaveReason) Format(f fmt.State, c rune) {
251	formatEnum(f, c, int(e), namesTextDocumentSaveReason[:], "TextDocumentSaveReason")
252}
253
254func ParseTextDocumentSaveReason(s string) TextDocumentSaveReason {
255	return TextDocumentSaveReason(parseEnum(s, namesTextDocumentSaveReason[:]))
256}
257