diff --git a/extensions/vscode-vue-language-features/package.json b/extensions/vscode-vue-language-features/package.json index a951c39b3..b60358089 100644 --- a/extensions/vscode-vue-language-features/package.json +++ b/extensions/vscode-vue-language-features/package.json @@ -444,6 +444,11 @@ "type": "boolean", "default": true, "description": "Enabled update imports on file move." + }, + "volar.diagnostics.delay": { + "type": "number", + "default": 200, + "description": "Delay time for diagnostics." } } }, diff --git a/packages/vue-language-server/src/projects.ts b/packages/vue-language-server/src/projects.ts index 28562b7a9..a045bfada 100644 --- a/packages/vue-language-server/src/projects.ts +++ b/packages/vue-language-server/src/projects.ts @@ -116,8 +116,6 @@ export function createProjects( } }); - updateDiagnostics(undefined); - return { workspaces, getProject, @@ -129,8 +127,6 @@ export function createProjects( await updateDiagnostics(driveFileName ? shared.fsPathToUri(driveFileName) : undefined); - await shared.sleep(100); - if (req === semanticTokensReq) { if (options.languageFeatures?.semanticTokens) { connection.languages.semanticTokens.refresh(); @@ -150,8 +146,9 @@ export function createProjects( } const req = ++documentUpdatedReq; + const delay = await lsConfigs?.getConfiguration('volar.diagnostics.delay'); - await shared.sleep(100); + await shared.sleep(delay ?? 200); if (req !== documentUpdatedReq) return; @@ -181,6 +178,8 @@ export function createProjects( for (const doc of otherDocs) { + await shared.sleep(delay ?? 200); + if (req !== documentUpdatedReq) return;