Skip to content

Commit af8f94d

Browse files
committed
Update language server to differenciate between procedures and prototypes
Signed-off-by: worksofliam <[email protected]>
1 parent 181e545 commit af8f94d

File tree

2 files changed

+21
-21
lines changed

2 files changed

+21
-21
lines changed

extension/server/src/providers/completionItem.ts

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { getInterfaces } from './project/exportInterfaces';
1010
import Parser from '../../../../language/parser';
1111

1212
const completionKind = {
13-
function: CompletionItemKind.Function,
13+
function: CompletionItemKind.Interface,
1414
struct: CompletionItemKind.Struct
1515
};
1616

@@ -127,7 +127,7 @@ export default async function completionItemProvider(handler: CompletionParams):
127127
} else {
128128
const expandScope = (localCache: Cache) => {
129129
for (const subItem of localCache.parameters) {
130-
const item = CompletionItem.create(`${subItem.name}`);
130+
const item = CompletionItem.create(subItem.name);
131131
item.kind = CompletionItemKind.TypeParameter;
132132
item.insertText = subItem.name;
133133
item.detail = [`parameter`, prettyKeywords(subItem.keyword)].join(` `);
@@ -136,8 +136,8 @@ export default async function completionItemProvider(handler: CompletionParams):
136136
}
137137

138138
for (const procedure of localCache.procedures) {
139-
const item = CompletionItem.create(`${procedure.name}`);
140-
item.kind = CompletionItemKind.Function;
139+
const item = CompletionItem.create(procedure.name);
140+
item.kind = procedure.prototype ? CompletionItemKind.Interface : CompletionItemKind.Function;
141141
item.insertTextFormat = InsertTextFormat.Snippet;
142142
item.insertText = `${procedure.name}(${procedure.subItems.map((parm, index) => `\${${index + 1}:${parm.name}}`).join(`:`)})`;
143143
item.detail = prettyKeywords(procedure.keyword);
@@ -146,41 +146,41 @@ export default async function completionItemProvider(handler: CompletionParams):
146146
}
147147

148148
for (const subroutine of localCache.subroutines) {
149-
const item = CompletionItem.create(`${subroutine.name}`);
149+
const item = CompletionItem.create(subroutine.name);
150150
item.kind = CompletionItemKind.Function;
151-
item.insertText = `${subroutine.name}`;
151+
item.insertText = subroutine.name;
152152
item.documentation = subroutine.description;
153153
items.push(item);
154154
}
155155

156156
for (const variable of localCache.variables) {
157-
const item = CompletionItem.create(`${variable.name}`);
157+
const item = CompletionItem.create(variable.name);
158158
item.kind = CompletionItemKind.Variable;
159-
item.insertText = `${variable.name}`;
159+
item.insertText = variable.name;
160160
item.detail = prettyKeywords(variable.keyword);
161161
item.documentation = variable.description;
162162
items.push(item);
163163
}
164164

165165
localCache.files.forEach(file => {
166-
const item = CompletionItem.create(`${file.name}`);
166+
const item = CompletionItem.create(file.name);
167167
item.kind = CompletionItemKind.File;
168-
item.insertText = `${file.name}`;
168+
item.insertText = file.name;
169169
item.detail = prettyKeywords(file.keyword);
170170
item.documentation = file.description;
171171
items.push(item);
172172

173173
for (const struct of file.subItems) {
174-
const item = CompletionItem.create(`${struct.name}`);
174+
const item = CompletionItem.create(struct.name);
175175
item.kind = CompletionItemKind.Struct;
176-
item.insertText = `${struct.name}`;
176+
item.insertText = struct.name;
177177
item.detail = prettyKeywords(struct.keyword);
178178
item.documentation = struct.description;
179179
items.push(item);
180180

181181
if (!struct.keyword[`QUALIFIED`]) {
182182
struct.subItems.forEach((subItem: Declaration) => {
183-
const item = CompletionItem.create(`${subItem.name}`);
183+
const item = CompletionItem.create(subItem.name);
184184
item.kind = CompletionItemKind.Property;
185185
item.insertText = `${subItem.name}`;
186186
item.detail = prettyKeywords(subItem.keyword);
@@ -192,16 +192,16 @@ export default async function completionItemProvider(handler: CompletionParams):
192192
});
193193

194194
for (const struct of localCache.structs) {
195-
const item = CompletionItem.create(`${struct.name}`);
195+
const item = CompletionItem.create(struct.name);
196196
item.kind = CompletionItemKind.Struct;
197-
item.insertText = `${struct.name}`;
197+
item.insertText = struct.name;
198198
item.detail = prettyKeywords(struct.keyword);
199199
item.documentation = struct.description;
200200
items.push(item);
201201

202202
if (!struct.keyword[`QUALIFIED`]) {
203203
struct.subItems.forEach((subItem: Declaration) => {
204-
const item = CompletionItem.create(`${subItem.name}`);
204+
const item = CompletionItem.create(subItem.name);
205205
item.kind = CompletionItemKind.Property;
206206
item.insertText = `${subItem.name}`;
207207
item.detail = prettyKeywords(subItem.keyword);
@@ -212,16 +212,16 @@ export default async function completionItemProvider(handler: CompletionParams):
212212
}
213213

214214
for (const constant of localCache.constants) {
215-
const item = CompletionItem.create(`${constant.name}`);
215+
const item = CompletionItem.create(constant.name);
216216
item.kind = CompletionItemKind.Constant;
217-
item.insertText = `${constant.name}`;
217+
item.insertText = constant.name;
218218
item.detail = prettyKeywords(constant.keyword);
219219
item.documentation = constant.description;
220220
items.push(item);
221221

222222
if (!constant.keyword[`QUALIFIED`]) {
223223
constant.subItems.forEach((subItem: Declaration) => {
224-
const item = CompletionItem.create(`${subItem.name}`);
224+
const item = CompletionItem.create(subItem.name);
225225
item.kind = CompletionItemKind.Property;
226226
item.insertText = `${subItem.name}`;
227227
item.detail = prettyKeywords(subItem.keyword);
@@ -244,7 +244,7 @@ export default async function completionItemProvider(handler: CompletionParams):
244244
// So if the user is in the middle of a statement, then they still exist in the subItems
245245
else if (currentProcedure.subItems.length > 0) {
246246
for (const subItem of currentProcedure.subItems) {
247-
const item = CompletionItem.create(`${subItem.name}`);
247+
const item = CompletionItem.create(subItem.name);
248248
item.kind = CompletionItemKind.TypeParameter;
249249
item.insertText = subItem.name;
250250
item.detail = [`parameter`, prettyKeywords(subItem.keyword)].join(` `);

extension/server/src/providers/documentSymbols.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export default async function documentSymbolProvider(handler: DocumentSymbolPara
5050
const procDef = DocumentSymbol.create(
5151
proc.name,
5252
prettyKeywords(proc.keyword),
53-
SymbolKind.Function,
53+
proc.prototype ? SymbolKind.Interface : SymbolKind.Function,
5454
Range.create(proc.range.start!, 0, proc.range.end!, 0),
5555
Range.create(proc.range.start!, 0, proc.range.start!, 0),
5656
);

0 commit comments

Comments
 (0)