From 734d44603850be41c9966f97dce45527147fd000 Mon Sep 17 00:00:00 2001 From: LSTM-Kirigaya <1193466151@qq.com> Date: Mon, 23 Dec 2024 17:35:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E6=A0=91=E4=B8=AD=EF=BC=8C=E8=AE=BE=E7=BD=AE=E9=A1=B6=E5=B1=82?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=A4=B1=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/function/lsp-client/config.ts | 16 +++++++++------- src/function/lsp/linter/common.ts | 9 ++++++++- src/function/lsp/linter/manager.ts | 20 ++++++++++---------- 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/src/function/lsp-client/config.ts b/src/function/lsp-client/config.ts index b8c60db..c70446f 100644 --- a/src/function/lsp-client/config.ts +++ b/src/function/lsp-client/config.ts @@ -130,13 +130,15 @@ export async function registerConfigurationUpdater(client: LanguageClient, packa } // 如果诊断模式发生变化,进行一次刷新 - await vscode.window.withProgress({ - location: vscode.ProgressLocation.Window, - title: t('info.progress.doing-diagnostic') - }, async (progress: vscode.Progress, token: vscode.CancellationToken) => { - const hdlFiles = await prjManage.getPrjHardwareFiles(); - await refreshWorkspaceDiagonastics(client, hdlFiles, false, progress); - }); + if (event.affectsConfiguration(Linter.getLinterModeConfigurationName())) { + await vscode.window.withProgress({ + location: vscode.ProgressLocation.Window, + title: t('info.progress.doing-diagnostic') + }, async (progress: vscode.Progress, token: vscode.CancellationToken) => { + const hdlFiles = await prjManage.getPrjHardwareFiles(); + await refreshWorkspaceDiagonastics(client, hdlFiles, false, progress); + }); + } }); } diff --git a/src/function/lsp/linter/common.ts b/src/function/lsp/linter/common.ts index 8ed79b7..3d9f3ca 100644 --- a/src/function/lsp/linter/common.ts +++ b/src/function/lsp/linter/common.ts @@ -51,6 +51,10 @@ export function getLinterInstallConfigurationName(linterName: SupportLinterName) return `digital-ide.prj.${linterName}.install.path`; } +export function getLinterModeConfigurationName(): string { + return 'digital-ide.function.lsp.linter.linter-mode'; +} + export function getLinterInstallPath(linterName: SupportLinterName): string { const configuration = vscode.workspace.getConfiguration(); const linterInstallConfigurationName = getLinterInstallConfigurationName(linterName); @@ -117,7 +121,10 @@ export enum LinterMode { } export function getLinterMode(): LinterMode { - return vscode.workspace.getConfiguration().get('digital-ide.function.lsp.linter.linter-mode', LinterMode.Full); + console.log(vscode.workspace.getConfiguration().get('digital-ide.function.lsp.linter.linter-mode')); + console.log(vscode.workspace.getConfiguration().get('digital-ide.function.lsp.linter.linter-level')); + + return vscode.workspace.getConfiguration().get('digital-ide.function.lsp.linter.linter-mode') || LinterMode.Common; } export interface IConfigReminder { diff --git a/src/function/lsp/linter/manager.ts b/src/function/lsp/linter/manager.ts index 87786b0..7e856b9 100644 --- a/src/function/lsp/linter/manager.ts +++ b/src/function/lsp/linter/manager.ts @@ -1,14 +1,13 @@ import * as vscode from 'vscode'; import * as os from 'os'; -import { LspClient, LinterOutput, ReportType, AbsPath, IProgress } from '../../../global'; +import { LinterOutput, ReportType, AbsPath, IProgress } from '../../../global'; import { HdlLangID } from '../../../global/enum'; import { hdlFile, hdlPath } from '../../../hdlFs'; import { t } from '../../../i18n'; -import { getLinterConfigurationName, getLinterInstallConfigurationName, getLinterName, IConfigReminder, LinterItem, LinterMode, makeLinterNamePickItem, makeLinterOptions, SupportLinterName, updateLinterConfigurationName } from './common'; +import { getLinterConfigurationName, getLinterInstallConfigurationName, getLinterMode, getLinterName, IConfigReminder, LinterItem, LinterMode, makeLinterNamePickItem, makeLinterOptions, SupportLinterName, updateLinterConfigurationName } from './common'; import { UpdateConfigurationType } from '../../../global/lsp'; import { LanguageClient } from 'vscode-languageclient/node'; -import { toEscapePath } from '../../../hdlFs/path'; export class LinterManager { /** @@ -318,9 +317,10 @@ export async function refreshWorkspaceDiagonastics( progress: vscode.Progress ) { const parallelChunk = Math.min(os.cpus().length, 32); - const configuration = vscode.workspace.getConfiguration(); - const linterMode = configuration.get('digital-ide.function.lsp.linter.linter-mode', LinterMode.Common); - + const linterMode = getLinterMode(); + + console.log('[refreshWorkspaceDiagonastics]', linterMode); + if (linterMode === LinterMode.Full) { // full,对工作区所有文件进行诊断 const consumer = async (path: string) => { @@ -359,11 +359,11 @@ export async function refreshWorkspaceDiagonastics( await asyncConsumer(tabArray, consumer, parallelChunk, progress); } else { - // shutdown, 如果是初始化阶段,什么都不需要做 - const consumer = async (path: string) => { - await clearDiagnostics(client, path); - }; if (!isInitialise) { + // shutdown, 如果是初始化阶段,什么都不需要做 + const consumer = async (path: string) => { + await clearDiagnostics(client, path); + }; await asyncConsumer(lintPaths, consumer, parallelChunk, progress); } }