From 6342ebfdc70a4d0411f2d956634df1203d16ea1a Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Sat, 4 Jan 2025 22:45:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=B1=95=E7=A4=BA=E4=BF=A1?= =?UTF-8?q?=E5=8F=B7=E5=9F=BA=E6=9C=AC=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/iconfont.css | 22 +++- public/iconfont.woff2 | Bin 7580 -> 7976 bytes src/api/definition.js | 81 ++++++++++++++ src/api/index.js | 2 +- src/components/about/index.vue | 9 +- src/components/treeview/index.vue | 23 +++- src/components/treeview/info.js | 104 ++++++++++++++++++ src/components/treeview/info.vue | 165 +++++++++++++++++++++++++++- src/components/treeview/modules.vue | 69 +++++++++++- src/hook/global.js | 1 + src/hook/jsdoc.js | 23 +++- src/hook/render/layout.js | 1 - src/hook/render/render-view.js | 5 + src/hook/render/yosys.js | 70 +++++++++++- src/i18n/ar.json | 15 ++- src/i18n/de.json | 15 ++- src/i18n/en.json | 15 ++- src/i18n/fr.json | 15 ++- src/i18n/ja.json | 15 ++- src/i18n/ko.json | 15 ++- src/i18n/ru.json | 15 ++- src/i18n/zh-cn.json | 15 ++- src/i18n/zh-tw.json | 15 ++- 23 files changed, 682 insertions(+), 28 deletions(-) create mode 100644 src/api/definition.js create mode 100644 src/components/treeview/info.js diff --git a/public/iconfont.css b/public/iconfont.css index bbf1148..ec852fe 100644 --- a/public/iconfont.css +++ b/public/iconfont.css @@ -1,6 +1,6 @@ @font-face { font-family: "iconfont"; /* Project id 4797805 */ - src: url('iconfont.woff2?t=1735470843861') format('woff2'); + src: url('iconfont.woff2?t=1735991360293') format('woff2'); } .iconfont { @@ -11,6 +11,22 @@ -moz-osx-font-smoothing: grayscale; } +.icon-link:before { + content: "\e6fa"; +} + +.icon-Listinterface:before { + content: "\e66b"; +} + +.icon-info-port:before { + content: "\f2e1"; +} + +.icon-sanjiao_fill-:before { + content: "\e6a0"; +} + .icon-memory-chip:before { content: "\e600"; } @@ -243,3 +259,7 @@ content: "\e693"; } +.icon-info-module:before { + content: "\f2e2"; +} + diff --git a/public/iconfont.woff2 b/public/iconfont.woff2 index eaf6e236cc14a9a93dbcd1fa27fd7fd4f97787f9..1a07a450e05541eb70d095fd37bad0bb4c63c0c8 100644 GIT binary patch literal 7976 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 literal 7580 zcmV;N9b@8mPew8T0RR9103DnF3jhEB05{+O03A*M0RR9100000000000000000000 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 diff --git a/src/api/definition.js b/src/api/definition.js new file mode 100644 index 0000000..69be38e --- /dev/null +++ b/src/api/definition.js @@ -0,0 +1,81 @@ +import axios from 'axios'; +import { globalLookup } from "@/hook/global"; +import { pinkLog } from "@/hook/utils"; +import { mode } from "."; + + +/** + * + * @param {string} definition + */ +export async function gotoDefinition(definition) { + const defs = processDefinition(definition); + if (mode === 'debug') { + const res = await axios.post('http://localhost:3000/netlist/goto-definition', { defs }); + } else { + vscode.postMessage({ + command: 'save-as-svg', + data: { svgBuffer, moduleName } + }); + } +} + + +/** + * + * @typedef FileRange + * @property {string} path + * @property {import("@/hook/jsdoc").Range} [range] + * + * @param {string | undefined} definition + * @returns {FileRange[]} + */ +function processDefinition(definition) { + if (typeof definition !== 'string') { + return []; + } + if (definition.includes('|')) { + const defs = []; + for (const def of definition.split('|')) { + defs.push(...processDefinition(def)); + } + return defs; + } + + if (definition.includes(':')) { + const [path, rangeString] = definition.split(':'); + const [startString, endString] = rangeString.split('-'); + const [startLine, startCharacter] = startString.split('.'); + const [endLine, endCharacter] = endString.split('.'); + const range = { + start: { + line: parseRangeInt(startLine), + character: parseRangeInt(startCharacter) + }, + end: { + line: parseRangeInt(endLine), + character: parseRangeInt(endCharacter) + } + }; + + return [ + { path, range } + ]; + } + + return [ + { + path: definition, + range: undefined + } + ]; +} + +function parseRangeInt(s) { + const i = parseInt(s); + if (i > 0) { + // 因为 yosys 是 one index 的,但是 vscode 内部跳转都是 zero index + return i - 1; + } + return i; +} \ No newline at end of file diff --git a/src/api/index.js b/src/api/index.js index 9edbcb6..b547af1 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -5,7 +5,7 @@ import { pinkLog } from "@/hook/utils"; import axios from 'axios'; import pako from 'pako'; -const mode = window.acquireVsCodeApi === undefined ? 'debug' : 'release'; +export const mode = window.acquireVsCodeApi === undefined ? 'debug' : 'release'; pinkLog('digital-netlist-render mode: ' + mode); let vscode = window.acquireVsCodeApi === undefined ? undefined : acquireVsCodeApi(); diff --git a/src/components/about/index.vue b/src/components/about/index.vue index 810bee8..a345e76 100644 --- a/src/components/about/index.vue +++ b/src/components/about/index.vue @@ -1,5 +1,5 @@