From c7883d1b46bafe5de31260cf277061564aa41a26 Mon Sep 17 00:00:00 2001 From: LSTM-Kirigaya <1193466151@qq.com> Date: Tue, 14 Jan 2025 23:33:59 +0800 Subject: [PATCH] update --- README.md | 2 +- src/function/lsp/linter/manager.ts | 29 +++++++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 160ecdc..7d0de3a 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ## Digital IDE | All in one vscode plugin for Verilog/VHDL development -[Document (New)](https://sterben.nitcloud.cn/) | [中文文档 (New)](https://sterben.nitcloud.cn/zh/) | [Bilibili Video](https://www.bilibili.com/video/BV1t14y1179V/?spm_id_from=333.999.0.0) +[Document (New)](https://nc-ai.cn/) | [中文文档 (New)](https://nc-ai.cn/zh/) | [Bilibili Video](https://www.bilibili.com/video/BV1t14y1179V/?spm_id_from=333.999.0.0) ![](https://img.shields.io/badge/version-0.4.0-purple) ![](https://img.shields.io/badge/Verilog-support-green) diff --git a/src/function/lsp/linter/manager.ts b/src/function/lsp/linter/manager.ts index 809d641..78383dd 100644 --- a/src/function/lsp/linter/manager.ts +++ b/src/function/lsp/linter/manager.ts @@ -1,8 +1,10 @@ import * as vscode from 'vscode'; import * as os from 'os'; +import * as fs from 'fs'; +import * as fspath from 'path'; -import { LinterOutput, ReportType, AbsPath, IProgress } from '../../../global'; -import { HdlLangID } from '../../../global/enum'; +import { LinterOutput, ReportType, AbsPath, IProgress, opeParam } from '../../../global'; +import { HdlLangID, LibraryState } from '../../../global/enum'; import { hdlFile, hdlPath } from '../../../hdlFs'; import { t } from '../../../i18n'; import { getLinterConfigurationName, getLinterInstallConfigurationName, getLinterMode, getLinterName, IConfigReminder, LinterItem, LinterMode, makeLinterNamePickItem, makeLinterOptions, SupportLinterName, updateLinterConfigurationName } from './common'; @@ -244,10 +246,33 @@ export class LinterManager { } } +function getLibrarySearchPaths(path: string): string[] { + const paths = new Set(); + const langID = hdlFile.getLanguageId(path); + const linterName = getLinterName(langID); + if (linterName === 'iverilog' || linterName === 'verilator') { + const userCommonLibs = opeParam.prjInfo.getLibraryCommonPaths(true, LibraryState.Remote); + for (const path of userCommonLibs) { + const state = fs.statSync(path); + if (state.isDirectory()) { + paths.add(path); + } else { + const parent = fspath.dirname(path); + paths.add(parent); + } + } + } + + return [...paths]; +} + export async function publishDiagnostics( client: LanguageClient, path: string ) { + // 找到所有的库前缀,进行诊断(用于 verilator) + // const searchPaths = getLibrarySearchPaths(path); + await client.sendRequest("workspace/executeCommand", { command: 'publish-diagnostics', arguments: [path]