悬停提示
886 字约 3 分钟
2025-01-08
什么是悬停提示
悬停提示在光标附近显示符号的说明。把鼠标停在模块名、实例、端口、变量或数字上,稍等即可看到提示;用键盘时执行 Show Hover。不用离开当前文件,就能确认:
- 变量、端口的声明类型和方向;
- 模块的声明、参数和文件头注释;
- 数字字面量的位宽和各种进制下的值;
- 写在声明注释里的图片、表格、公式和各类图表。
Verilog、SystemVerilog 和 VHDL 都支持。
演示
数字字面量
悬停数字字面量时,提示列出位宽、有符号与无符号十进制值,以及二进制、八进制、十六进制和浮点解释。例如 'h3536d238e7 的位宽为 40,十进制值为 228553013479。
数值按字面量的写法解释:32'h0000_000A 的前导零只是写法,值为十进制 10;有符号数还需要结合声明位宽理解。含 X/Z 的字面量不是普通整数。
图文注释
把说明紧挨着写在模块或实体的声明前,悬停它时就会显示。注释支持下列内容:
| 内容 | 注释中的写法 |
|---|---|
| 图片 | ;相对声明文件解析,跨文件悬停也适用 |
| 表格 | 标准 Markdown 管道表格,包含表头分隔行 |
| 列表 | - 条目、1. 条目,子列表使用缩进 |
| 公式 | 行内 $x^2$、独立 $$ 行包围的块公式,或 math / latex / tex 代码块 |
| WaveDrom | wavedrom 代码块,内容为 JSON 或 JSON5 |
| 流程图 | flowchart / flow 代码块,接受 Mermaid 流程图语法或基本 flowchart.js 节点、连线语法 |
| 时序图 | sequence 代码块,支持 A->B: 消息、B-->A: 返回、参与者和 Note;也接受 Mermaid sequenceDiagram |
| Mermaid | mermaid 代码块,支持流程图、时序图、状态图、类图和 ER 图 |
Verilog/SystemVerilog 使用 //,VHDL 使用 --,也支持带 * 前缀的块注释。下面是一个加法器的注释片段:
// **Formula**: $s = (a+b) \bmod 2^{W}$.
// ```mermaid
// flowchart LR
// A[input_a] --> ADD[Add]
// B[input_b] --> ADD
// ADD --> S[sum]
// ```渲染规则:
- 注释的换行和空行会保留;普通
------分隔线不会把前文变成大号标题。模块、实体的提示不收集实现内部的注释。 - 不启用原始 HTML 和命令链接。
- 公式和图表在本地生成 SVG,无需安装浏览器或访问在线服务,并按当前亮色、深色或高对比度主题配色;切换主题后再次悬停即可看到新配色。注释引用的图片保留原有颜色。
- 小型本地图片会内嵌,Remote SSH 下也能显示;较大图片保留正常资源地址,文件缺失时保留原链接。
- Mermaid 只支持表中列出的图类型,不包含甘特图、饼图等扩展。不支持、格式错误或过大的图表会保留源码并提示无法预览。WaveDrom 不执行 JavaScript 表达式。
- 过长的提示按段落拆分,避免 VS Code 截断图像数据。
Digital IDE 仓库的 tests/project/temp 工程中,user/src/lang/svlog/lang_sv_leaf.sv 和 vhdl/lang_vhdl_stage.vhd 的注释覆盖了表中全部内容。打开 lang_sv_core.sv 悬停实例类型 lang_sv_leaf,或打开 lang_vhdl_top.vhd 悬停 u_vhdl_stage 对应的 lang_vhdl_stage,即可查看效果。
没有提示时
确认鼠标指向有效的标识符或数字,再检查文件诊断、依赖和语言标准。普通注释、空白或尚未解析的标识符不会产生提示。