Skip to content

Commit bdbfb5d

Browse files
Auto complete separated into recipes and building completion items
1 parent 6460f7c commit bdbfb5d

5 files changed

Lines changed: 588 additions & 536 deletions

File tree

libs/parsing/index/src/lib/auto-complete/auto-complete-recipe.interface.ts

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ import {
6565
export type AutoCompleteType =
6666
| CompileOptCompletion
6767
| ExecutiveCommandCompletion
68-
| FunctionMethodCompletion
6968
| FunctionCompletion
69+
| FunctionMethodCompletion
7070
| IncludeCompletion
7171
| KeywordCompletion
7272
| ProcedureCompletion
@@ -124,3 +124,45 @@ export type AutoCompleteRecipe<T extends AutoCompleteType> = {
124124
/** Options to add auto-complete values */
125125
options: AutoCompleteRecipeOptions<T>;
126126
};
127+
128+
/**
129+
* Strictly typed lookup for completion types
130+
*/
131+
interface IAutoCompleteTypeLookup {
132+
COMPILE_OPT: CompileOptCompletion;
133+
EXECUTIVE_COMMAND: ExecutiveCommandCompletion;
134+
FUNCTION: FunctionCompletion;
135+
FUNCTION_METHOD: FunctionMethodCompletion;
136+
INCLUDE: IncludeCompletion;
137+
KEYWORD: KeywordCompletion;
138+
PROCEDURE: ProcedureCompletion;
139+
PROCEDURE_METHOD: ProcedureMethodCompletion;
140+
PROPERTY: PropertyCompletion;
141+
PROPERTY_IN_STRUCTURE: PropertyInStructureCompletion;
142+
SPECIAL_FUNCTION: SpecialFunctionCompletion;
143+
SPECIAL_PROCEDURE: SpecialProcedureCompletion;
144+
STRUCTURE_NAME: StructureNameCompletion;
145+
SYSTEM_VARIABLE: SystemVariableCompletion;
146+
VARIABLE: VariableCompletion;
147+
}
148+
149+
/**
150+
* Lookup of all types of auto-complete
151+
*/
152+
export const AUTO_COMPLETE_TYPE_LOOKUP: IAutoCompleteTypeLookup = {
153+
COMPILE_OPT: 'compile-opt',
154+
EXECUTIVE_COMMAND: 'executive-command',
155+
FUNCTION: 'function',
156+
FUNCTION_METHOD: 'function-method',
157+
INCLUDE: 'include',
158+
KEYWORD: 'keyword',
159+
PROCEDURE: 'procedure',
160+
PROCEDURE_METHOD: 'procedure-method',
161+
PROPERTY: 'property',
162+
PROPERTY_IN_STRUCTURE: 'property-in-structure',
163+
SPECIAL_FUNCTION: 'special-function',
164+
SPECIAL_PROCEDURE: 'special-procedure',
165+
STRUCTURE_NAME: 'structure-name',
166+
SYSTEM_VARIABLE: 'system-variable',
167+
VARIABLE: 'variable',
168+
};

libs/parsing/index/src/lib/auto-complete/build-completion-items.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { FormatterType, IAssemblerOptions } from '@idl/assembling/config';
2-
import { CompletionItem } from 'vscode-languageserver';
2+
import { IDLExtensionConfig } from '@idl/vscode/extension-config';
3+
import { CompletionItem, MarkupKind } from 'vscode-languageserver';
34

5+
import { ResolveHoverHelpLinks } from '../helpers/resolve-hover-help-links';
46
import { IDLIndex } from '../idl-index.class';
57
import {
68
AutoCompleteRecipe,
@@ -12,9 +14,10 @@ import { ALL_COMPLETION_ITEM_BUILDERS } from './build-completion-items.interface
1214
* Builds auto-complete items from our recipes
1315
*/
1416
export function BuildCompletionItems(
17+
index: IDLIndex,
1518
recipes: AutoCompleteRecipe<AutoCompleteType>[],
1619
formatting: IAssemblerOptions<FormatterType>,
17-
index: IDLIndex
20+
config: IDLExtensionConfig
1821
) {
1922
/** initial list of completion items */
2023
const complete: CompletionItem[] = [];
@@ -32,5 +35,19 @@ export function BuildCompletionItems(
3235
}
3336
}
3437

38+
// resolve links in any completion items and indicate that
39+
// we have markdown to present
40+
for (let i = 0; i < complete.length; i++) {
41+
if (complete[i].documentation) {
42+
complete[i].documentation = {
43+
kind: MarkupKind.Markdown,
44+
value: ResolveHoverHelpLinks(
45+
complete[i].documentation as string,
46+
config
47+
),
48+
};
49+
}
50+
}
51+
3552
return complete;
3653
}

0 commit comments

Comments
 (0)