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)


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]