diff --git a/frontend/webEditor/src/assignment/AssignmentEditUi.ts b/frontend/webEditor/src/assignment/AssignmentEditUi.ts index a0c5570c..4a6dcbfc 100644 --- a/frontend/webEditor/src/assignment/AssignmentEditUi.ts +++ b/frontend/webEditor/src/assignment/AssignmentEditUi.ts @@ -22,6 +22,7 @@ export class AssignmentEditUi extends AbstractUIExtension { private port?: DfdOutputPortImpl; private tree?: LanguageTreeNode[]; + private completionProvider?: DfdCompletionItemProvider; private editorContainer: HTMLDivElement = document.createElement("div") as HTMLDivElement; private validationLabel: HTMLDivElement = document.createElement("div") as HTMLDivElement; private unavailableInputsLabel: HTMLDivElement = document.createElement("div") as HTMLDivElement; @@ -137,10 +138,13 @@ export class AssignmentEditUi extends AbstractUIExtension { containerElement.style.top = `${bounds.y}px`; this.tree = AssignmentLanguageTreeBuilder.buildTree(port, this.labelTypeRegistry); - monaco.languages.registerCompletionItemProvider( - ASSIGNMENT_LANGUAGE_ID, - new DfdCompletionItemProvider(this.tree), - ); + if (this.completionProvider) { + this.completionProvider.setTree(this.tree); + } else { + this.completionProvider = new DfdCompletionItemProvider(this.tree); + monaco.languages.registerCompletionItemProvider(ASSIGNMENT_LANGUAGE_ID, this.completionProvider); + } + if (!this.editor) { throw new Error("Expected editor to be initialized"); } diff --git a/frontend/webEditor/src/languages/autocomplete.ts b/frontend/webEditor/src/languages/autocomplete.ts index 9bb3fbf2..22400732 100644 --- a/frontend/webEditor/src/languages/autocomplete.ts +++ b/frontend/webEditor/src/languages/autocomplete.ts @@ -105,4 +105,8 @@ export class DfdCompletionItemProvider implements monaco.languages.CompletionIte suggestions: r, }; } + + public setTree(tree: CompletionLanguageTreeNode[]) { + this.tree = tree; + } }