This commit is contained in:
锦恢 2025-01-14 23:33:59 +08:00
parent 8da5cca1ab
commit c7883d1b46
2 changed files with 28 additions and 3 deletions

View File

@ -4,7 +4,7 @@
## <code>Digital IDE</code> | All in one <code>vscode</code> plugin for Verilog/VHDL development ## <code>Digital IDE</code> | All in one <code>vscode</code> 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/version-0.4.0-purple)
![](https://img.shields.io/badge/Verilog-support-green) ![](https://img.shields.io/badge/Verilog-support-green)

View File

@ -1,8 +1,10 @@
import * as vscode from 'vscode'; import * as vscode from 'vscode';
import * as os from 'os'; import * as os from 'os';
import * as fs from 'fs';
import * as fspath from 'path';
import { LinterOutput, ReportType, AbsPath, IProgress } from '../../../global'; import { LinterOutput, ReportType, AbsPath, IProgress, opeParam } from '../../../global';
import { HdlLangID } from '../../../global/enum'; import { HdlLangID, LibraryState } from '../../../global/enum';
import { hdlFile, hdlPath } from '../../../hdlFs'; import { hdlFile, hdlPath } from '../../../hdlFs';
import { t } from '../../../i18n'; import { t } from '../../../i18n';
import { getLinterConfigurationName, getLinterInstallConfigurationName, getLinterMode, getLinterName, IConfigReminder, LinterItem, LinterMode, makeLinterNamePickItem, makeLinterOptions, SupportLinterName, updateLinterConfigurationName } from './common'; 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<string>();
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( export async function publishDiagnostics(
client: LanguageClient, client: LanguageClient,
path: string path: string
) { ) {
// 找到所有的库前缀,进行诊断(用于 verilator
// const searchPaths = getLibrarySearchPaths(path);
await client.sendRequest("workspace/executeCommand", { await client.sendRequest("workspace/executeCommand", {
command: 'publish-diagnostics', command: 'publish-diagnostics',
arguments: [path] arguments: [path]