From cd301e22d9f8aa54c1f3a370bfce3adb0a2ecfe0 Mon Sep 17 00:00:00 2001 From: N1ebieski Date: Sat, 20 Dec 2025 09:28:35 +0000 Subject: [PATCH] Fixes N1ebieski/vs-code-extension#72 Fix for QuickFix for vscode.Diagnostic.code --- src/codeAction/codeActionProvider.ts | 19 ++++++++++++++----- src/features/env.ts | 3 ++- src/features/inertia.ts | 3 ++- src/features/view.ts | 3 ++- src/index.d.ts | 1 + 5 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/codeAction/codeActionProvider.ts b/src/codeAction/codeActionProvider.ts index 29616b10..7114f421 100644 --- a/src/codeAction/codeActionProvider.ts +++ b/src/codeAction/codeActionProvider.ts @@ -23,11 +23,20 @@ export class CodeActionProvider implements vscode.CodeActionProvider { ): vscode.ProviderResult { return Promise.all( context.diagnostics - .map((diagnostic) => - providers.map((provider) => - provider(diagnostic, document, range, token), - ), - ) + .map((diagnostic) => { + const code = + typeof diagnostic.code === "object" + ? diagnostic.code?.value + : diagnostic.code; + + if (typeof code !== "string") { + return []; + } + + return providers.map((provider) => + provider(code, diagnostic, document, range, token), + ); + }) .flat(), ).then((actions) => actions.flat()); } diff --git a/src/features/env.ts b/src/features/env.ts index b045f241..d023f356 100644 --- a/src/features/env.ts +++ b/src/features/env.ts @@ -192,12 +192,13 @@ export const viteEnvCodeActionProvider: vscode.CodeActionProvider = { }; export const codeActionProvider: CodeActionProviderFunction = async ( + code: string, diagnostic: vscode.Diagnostic, document: vscode.TextDocument, range: vscode.Range | vscode.Selection, token: vscode.CancellationToken, ): Promise => { - if (diagnostic.code !== "env") { + if (code !== "env") { return []; } diff --git a/src/features/inertia.ts b/src/features/inertia.ts index 92fcc66d..51cd8c46 100644 --- a/src/features/inertia.ts +++ b/src/features/inertia.ts @@ -141,12 +141,13 @@ export const diagnosticProvider = ( }; export const codeActionProvider: CodeActionProviderFunction = async ( + code: string, diagnostic: vscode.Diagnostic, document: vscode.TextDocument, range: vscode.Range | vscode.Selection, token: vscode.CancellationToken, ): Promise => { - if (diagnostic.code !== "inertia") { + if (code !== "inertia") { return []; } diff --git a/src/features/view.ts b/src/features/view.ts index 014b8528..bfaa9c59 100644 --- a/src/features/view.ts +++ b/src/features/view.ts @@ -171,12 +171,13 @@ export const diagnosticProvider = ( }; export const codeActionProvider: CodeActionProviderFunction = async ( + code: string, diagnostic: vscode.Diagnostic, document: vscode.TextDocument, range: vscode.Range | vscode.Selection, token: vscode.CancellationToken, ): Promise => { - if (diagnostic.code !== "view") { + if (code !== "view") { return []; } diff --git a/src/index.d.ts b/src/index.d.ts index dbc537e8..486d3114 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -2,6 +2,7 @@ import * as vscode from "vscode"; import AutocompleteResult from "./parser/AutocompleteResult"; type CodeActionProviderFunction = ( + code: string, diagnostic: vscode.Diagnostic, document: vscode.TextDocument, range: vscode.Range | vscode.Selection,