From 7126b2aef3123e5ff5a8c4c0a79d0452a9286ae7 Mon Sep 17 00:00:00 2001 From: JanikNex <18660622+JanikNex@users.noreply.github.com> Date: Sat, 6 Jan 2024 20:36:51 +0100 Subject: [PATCH] implemented code action to propose additional imports that would fix missing reference resolutions --- ...-modeling-language-code-action-provider.ts | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/language/model-modeling-language-code-action-provider.ts b/src/language/model-modeling-language-code-action-provider.ts index c52ff36..af6f246 100644 --- a/src/language/model-modeling-language-code-action-provider.ts +++ b/src/language/model-modeling-language-code-action-provider.ts @@ -50,6 +50,9 @@ export class ModelModelingLanguageCodeActionProvider implements CodeActionProvid case IssueCodes.ImportAlreadyExists: accept(this.fixDuplicateImport(diagnostic, document)); break; + case IssueCodes.ImportIsMissing: + accept(this.fixMissingImport(diagnostic, document)); + break; case IssueCodes.OppositeAnnotationMissing: accept(this.fixMissingOppositeAnnotation(diagnostic, document)); break; @@ -247,6 +250,27 @@ export class ModelModelingLanguageCodeActionProvider implements CodeActionProvid return undefined; } + private fixMissingImport(diagnostic: Diagnostic, document: LangiumDocument): CodeAction[] | undefined { + const possibleImports: string[] = diagnostic.data as string[]; + if (possibleImports.length == 0) { + return undefined; + } + return possibleImports.map(pimport => { + return ({ + title: `Import ${pimport}`, + kind: CodeActionKind.QuickFix, + diagnostics: [diagnostic], + edit: { + changes: { + [document.textDocument.uri]: [{ + range: {start: {character: 0, line: 0}, end: {character: 0, line: 0}}, + newText: `import "${pimport}";\n` + }] + } + } + } as CodeAction) + }) + } }