Skip to content

Commit 5553c73

Browse files
Migrate procedure completion
1 parent 5db3a4b commit 5553c73

5 files changed

Lines changed: 34 additions & 10 deletions

File tree

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ import {
2222
IKeywordCompletionOptions,
2323
KeywordCompletion,
2424
} from './completion-for/completion-keyword.interface';
25+
import {
26+
IProcedureCompletionOptions,
27+
ProcedureCompletion,
28+
} from './completion-for/completion-procedures.interface';
2529
import {
2630
ISpecialFunctionCompletionOptions,
2731
SpecialFunctionCompletion,
@@ -53,6 +57,7 @@ export type AutoCompleteType =
5357
| FunctionCompletion
5458
| IncludeCompletion
5559
| KeywordCompletion
60+
| ProcedureCompletion
5661
| SpecialFunctionCompletion
5762
| SpecialProcedureCompletion
5863
| StructureNameCompletion
@@ -75,6 +80,8 @@ export type AutoCompleteRecipeOptions<T extends AutoCompleteType> =
7580
? IIncludeCompletionOptions
7681
: T extends KeywordCompletion
7782
? IKeywordCompletionOptions
83+
: T extends ProcedureCompletion
84+
? IProcedureCompletionOptions
7885
: T extends SpecialFunctionCompletion
7986
? ISpecialFunctionCompletionOptions
8087
: T extends SpecialProcedureCompletion

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { BuildFunctionMethodCompletionItems } from './completion-for/completion-
1212
import { BuildFunctionCompletionItems } from './completion-for/completion-functions';
1313
import { BuildIncludeCompletionItems } from './completion-for/completion-include';
1414
import { BuildKeywordCompletionItems } from './completion-for/completion-keywords';
15+
import { BuildProcedureCompletionItems } from './completion-for/completion-procedures';
1516
import { BuildSpecialFunctionCompletionItems } from './completion-for/completion-special-functions';
1617
import { BuildSpecialProcedureCompletionItems } from './completion-for/completion-special-procedures';
1718
import { BuildCompletionStructureNameItems } from './completion-for/completion-structure-names';
@@ -52,6 +53,7 @@ export const ALL_COMPLETION_ITEM_BUILDERS: BuildCompletionItemsLookup = {
5253
function: BuildFunctionCompletionItems,
5354
include: BuildIncludeCompletionItems,
5455
keyword: BuildKeywordCompletionItems,
56+
procedure: BuildProcedureCompletionItems,
5557
'special-function': BuildSpecialFunctionCompletionItems,
5658
'special-procedure': BuildSpecialProcedureCompletionItems,
5759
'structure-name': BuildCompletionStructureNameItems,
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/**
2+
* Auto-complete for procedures
3+
*/
4+
export type ProcedureCompletion = 'procedure';
5+
6+
/**
7+
* Options for adding procedure completion items
8+
*/
9+
// eslint-disable-next-line @typescript-eslint/no-empty-interface
10+
export interface IProcedureCompletionOptions {}

libs/parsing/index/src/lib/auto-complete/completion-for/add-completion-procedures.ts renamed to libs/parsing/index/src/lib/auto-complete/completion-for/completion-procedures.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,33 @@
1-
import { FormatterType, IAssemblerOptions } from '@idl/assembling/config';
21
import { TransformCase } from '@idl/assembling/shared';
32
import { IDL_DISPLAY_NAMES } from '@idl/parsing/routines';
43
import { MAIN_LEVEL_NAME } from '@idl/parsing/syntax-tree';
54
import { IDL_TRANSLATION } from '@idl/translation';
65
import { GLOBAL_TOKEN_TYPES } from '@idl/types/core';
7-
import { CompletionItem, CompletionItemKind } from 'vscode-languageserver';
6+
import { CompletionItemKind } from 'vscode-languageserver';
87

8+
import { BuildCompletionItemsArg } from '../build-completion-items.interface';
99
import { SORT_PRIORITY } from '../sort-priority.interface';
10+
import { ProcedureCompletion } from './completion-procedures.interface';
1011

1112
/**
1213
* Display names for procedures
1314
*/
1415
const PROCEDURES = IDL_DISPLAY_NAMES[GLOBAL_TOKEN_TYPES.PROCEDURE];
1516

1617
/**
17-
* Adds variables to our completion items
18+
* Makes completion items for procedures
1819
*/
19-
export function AddCompletionProcedures(
20-
complete: CompletionItem[],
21-
formatting: IAssemblerOptions<FormatterType>
20+
export function BuildProcedureCompletionItems(
21+
arg: BuildCompletionItemsArg<ProcedureCompletion>
2222
) {
2323
// add user procedures first
2424
const displayNames = Object.values(PROCEDURES);
2525
for (let i = 0; i < displayNames.length; i++) {
2626
if (displayNames[i] === MAIN_LEVEL_NAME) {
2727
continue;
2828
}
29-
complete.push({
30-
label: TransformCase(displayNames[i], formatting.style.routines),
29+
arg.complete.push({
30+
label: TransformCase(displayNames[i], arg.formatting.style.routines),
3131
kind: CompletionItemKind.Function,
3232
sortText: SORT_PRIORITY.ROUTINES,
3333
detail: IDL_TRANSLATION.autoComplete.detail.procedure,

libs/parsing/index/src/lib/auto-complete/get-auto-complete.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import { GetTypeBefore } from '../helpers/get-type-before';
2020
import { ResolveHoverHelpLinks } from '../helpers/resolve-hover-help-links';
2121
import { IDLIndex } from '../idl-index.class';
2222
import { AddCompletionProcedureMethods } from './completion-for/add-completion-procedure-methods';
23-
import { AddCompletionProcedures } from './completion-for/add-completion-procedures';
2423
import { AddCompletionProperties } from './completion-for/add-completion-properties';
2524
import { AddCompletionPropertiesInStructures } from './completion-for/add-completion-properties-in-structures';
2625
import {
@@ -44,6 +43,7 @@ import {
4443
BuildKeywordCompletionItems,
4544
GetKeywordCompletionOptions,
4645
} from './completion-for/completion-keywords';
46+
import { BuildProcedureCompletionItems } from './completion-for/completion-procedures';
4747
import {
4848
BuildSpecialFunctionCompletionItems,
4949
GetSpecialFunctionCompletionOptions,
@@ -502,7 +502,12 @@ export async function GetAutoComplete(
502502
token?.name in PROCEDURES ||
503503
(isWithinStart && token?.name === TOKEN_NAMES.CALL_PROCEDURE)
504504
) {
505-
AddCompletionProcedures(complete, formatting);
505+
BuildProcedureCompletionItems({
506+
complete,
507+
formatting,
508+
index,
509+
options: {},
510+
});
506511
} else {
507512
BuildFunctionCompletionItems({
508513
complete,

0 commit comments

Comments
 (0)