Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Aurorix GTAGSNew to Visual Studio Code? Get it now.
Aurorix GTAGS

Aurorix GTAGS

Aurorix

|
9 installs
| (0) | Free
GNU GLOBAL/GTAGS 导航与索引管理,支持 HTAGS 预览、完全离线函数调用图/函数体流程图、独立窗口、节点跳转、路径高亮、Pin 固定和图表导出,适用于 Linux/Remote Linux。仅对 C/C++ 做了优化和测试适配。
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Publisher只是插件发布身份,作者为:Sharl210。

Aurorix GTAGS

Aurorix GTAGS 是一个面向 Linux 工作区的 GNU GLOBAL 插件,用于 C/C++ 工程的定义跳转、引用查询、符号大纲、调用层次、GTAGS/GRTAGS/GPATH 索引管理,以及 htags HTML 源码浏览页面生成和预览。它既适用于本机 Linux VS Code,也适用于 VS Code Remote 连接到 Linux 主机的场景。

本插件保留了 sailsxu.gtags 中在当前工程里验证可用的核心跳转方式:

global --path-style=absolute --from-here=<line>:<file> --result=grep <symbol>

但插件身份、命令 ID、配置项、菜单项和市场发布元信息均已改为 Aurorix 独立命名空间。


主要功能

1. GNU GLOBAL 导航能力

支持:

  • 定义跳转;
  • 查找引用;
  • 当前文件符号;
  • 工作区符号;
  • 调用层次;
  • 基础补全。

常用快捷键:

F12               跳转定义
Shift + F12       查找引用
Shift + Alt + H   调用层次
Ctrl + Shift + O  当前文件符号
Ctrl + T          工作区符号

2. 资源管理器文件夹/空白处右键菜单

右键菜单有两种使用方式:

  1. 右键某个文件夹:作用范围是这个文件夹及其子目录。
  2. 右键资源管理器空白处:作用范围是当前 VS Code 打开的项目根目录,也就是整个项目。

文件上不显示这些菜单。

菜单项包括:

Aurorix GTAGS:在此文件夹初始化 GTAGS
Aurorix GTAGS:更新此文件夹的 GTAGS
Aurorix GTAGS:重建此文件夹的 GTAGS
Aurorix GTAGS:在此文件夹初始化 HTAGS HTML
Aurorix GTAGS:更新此文件夹的 HTAGS HTML
Aurorix GTAGS:重建此文件夹的 HTAGS HTML
Aurorix GTAGS:预览 HTAGS HTML
Aurorix GTAGS:停止 HTAGS 预览
Aurorix GTAGS:卸载 HTAGS 预览文件

3. GTAGS 初始化、更新、重建

Init GTAGS

如果当前文件夹或其上级目录已经存在:

GTAGS
GRTAGS
GPATH

插件不会重复生成,会提示已经存在。

如果不存在,会在右键选中的文件夹执行:

unset GTAGSLABEL
gtags -v

执行过程在 VS Code Terminal 中进行,可以看到 -v 进度信息。

Update GTAGS

插件会自动向上查找已有 GTAGS/GRTAGS/GPATH 的目录,然后执行:

unset GTAGSLABEL
global -u -v

Rebuild GTAGS

重建前会弹出二次确认。

确认后执行:

unset GTAGSLABEL
rm -f GTAGS GRTAGS GPATH
gtags -v

4. HTAGS HTML 源码浏览

htags 会根据 GTAGS/GRTAGS/GPATH 生成 HTML 源码浏览页面。

默认输出目录:

HTML/

Init HTAGS HTML

如果 HTML/index.html 已存在,插件会提示已经存在,不重复生成。

否则执行:

unset GTAGSLABEL
htags -v

Update HTAGS HTML

执行:

unset GTAGSLABEL
global -u -v
htags -v

Rebuild HTAGS HTML

重建前会二次确认。

确认后执行:

unset GTAGSLABEL
rm -rf HTML
htags -v

Preview HTAGS HTML

插件会在 workspace 端启动一个本地 HTTP server,并给出可打开链接。

默认端口:

57658

默认链接:

http://127.0.0.1:57658/index.html

可通过设置修改端口:

{
  "aurorixGtags.htagsPreviewPort": 57658
}

停止 HTAGS 预览

停止当前文件夹对应的 HTAGS HTTP 预览服务,释放端口占用和内存资源。

卸载 HTAGS 预览文件

删除选中文件夹内的:

HTML/

执行前会二次确认,并会先停止该文件夹对应的预览服务。

5. 自动写入 Git 本地排除

插件执行 GTAGS / HTAGS 初始化、更新、重建时,会自动写入:

.git/info/exclude

GTAGS 相关排除:

/GTAGS
/GRTAGS
/GPATH

HTAGS 相关排除:

/HTML/

这些规则只在本机生效,不会提交,不会 push。

6. 内置安装命令

命令面板只保留一个安装命令:

Aurorix GTAGS: Install GNU GLOBAL + Universal Ctags

该命令会先检测源码构建工具链状态,再按 Linux 架构选择安装路径:

Universal Ctags p5.9.20210829.0
GNU GLOBAL 6.6.13

默认版本的源码包已经内置在插件中,作为预构建包不可用时的离线源码回退。

安装脚本会先检测 Linux 架构:

x64
arm64
armv7l
riscv64

插件内置对应 linux-<arch> 的预编译工具包时,会在完成工具链状态检测后优先验证并解压安装。预编译包不依赖本机 C 编译器;只有没有匹配包、包无法读取或内容不完整时,才会进入内置源码包的本机编译回退。

源码回退会先验证 bash、tar、gzip、make、gcc 或 cc、autoconf、automake、libtool、pkg-config、文本与基础文件工具和 ncurses 开发头文件;自定义或缺失内置源码包时还会验证 wget 或 curl。缺少依赖时,安装器会依次识别 apt-get、dnf、yum、zypper、pacman、apk,在具备管理员权限或可用 sudo 时尝试安装所需依赖,然后重新检测;没有受支持的包管理器、无法提升权限、安装失败或依赖仍缺失时,会列出未满足项并停止,不会开始编译。

默认安装到:

$HOME/local

安装脚本会自动清理这些残留配置:

export GTAGSLABEL=ctags
export GTAGSLABEL="ctags"
GTAGSLABEL=ctags
GTAGSLABEL="ctags"

并写入:

unset GTAGSLABEL

这样可以避免 GRTAGS 引用库几乎为空,导致 global -rx 查不到引用。

7. 函数图与函数体内流程图

插件新增了类似 Visor 方向的可视化能力,但不直接照搬其发布元信息或源码结构,而是在 Aurorix GTAGS 内实现同类效果:

  • 编辑器中右键函数名,可在侧边栏显示函数图;
  • 支持独立窗口查看;
  • 支持点击图中节点跳转到对应函数或代码行;
  • 支持函数级调用图:左侧是调用当前函数的函数,中间是当前函数,右侧是当前函数调用的函数;
  • 支持函数体内轻量流程图:显示 if/for/while/switch/return/call 等关键流程节点;
  • 独立窗口快捷键:
Ctrl + Alt + G

该快捷键左手可单手操作,并避开 VS Code 常用默认主快捷键。

路径高亮与 Pin 固定

函数级调用图和函数体内流程图都支持:

  • 点击节点后,高亮从中心函数或流程起点到该节点的路径;
  • 当前选中的节点使用额外强调色;
  • 点击 PIN 后,当前路径会固定为金色背景;
  • 再点击其它节点时,新节点会成为当前选择,但被 Pin 的旧路径会继续保留;
  • 再次点击 PIN 会取消固定。

深度设置

函数体内流程图顶部提供嵌套深度设置,默认值为:

3

用于控制嵌套很多层 if/for/while/switch 时最多渲染多少层。点击“应用”后会同步写入 VS Code 设置 aurorixGtags.internalFlowMaxDepth,下次重新打开函数图仍然生效。

导出

函数图支持:

复制 Mermaid
导出 .mmd
导出 .svg
导出 .png

导出时会调用 VS Code 原生保存对话框,由用户选择保存路径。

如果用户选择的导出路径位于 Git 仓库内,插件会把该导出文件写入 .git/info/exclude,避免误提交。


配置项

aurorixGtags.htagsPreviewPort

HTAGS HTML 预览端口。

默认:

57658

aurorixGtags.globalExecutable

global 可执行文件路径。

默认优先使用:

$HOME/local/bin/global

如果不存在,则使用:

global

aurorixGtags.gtagsExecutable

gtags 可执行文件路径。

默认优先使用:

$HOME/local/bin/gtags

aurorixGtags.htagsExecutable

htags 可执行文件路径。

默认优先使用:

$HOME/local/bin/htags

aurorixGtags.showMore

是否在 GNU GLOBAL 声明结果之外补充源码扫描。设为 1 启用,设为 0 禁用源码补充扫描。

aurorixGtags.callGraphTraceSearchItems / aurorixGtags.callGraphTraceExcludeItems

调用图追踪范围和排除路径列表,由“设置追踪范围”对话框维护。列表项使用以下字段:value、regex、ignoreCase 和 kind,其中 ignoreCase 与 kind 会随追踪项持久化。旧版的 callGraphTraceScope 与 callGraphTraceExcludePath 仍保留兼容读取,当对应列表为空时使用对应的旧标量键。

aurorixGtags.definitionProviderLanguage

启用 GNU GLOBAL 导航能力的语言列表。

默认:

cpp,c,proto3,proto

安装方式

安装 VSIX:

code --install-extension /workspace/aurorix-gtags/dist/aurorix-gtags-0.6.28.vsix --force

然后执行:

Developer: Reload Window

发布信息

Publisher只是插件发布身份,作者为:Sharl210。

publisher: Aurorix
name: aurorix-gtags
displayName: Aurorix GTAGS
version: 0.6.28
extensionKind: workspace

English Summary

Aurorix GTAGS is a GNU GLOBAL based VS Code extension for Linux workspaces, including local Linux VS Code and VS Code Remote sessions connected to Linux hosts. It provides C/C++ navigation, GTAGS index management from Explorer folder context menus, HTAGS HTML generation/preview, and a user-level installer for Universal Ctags + GNU GLOBAL.

It keeps the practical global --from-here definition query behavior while using independent Aurorix marketplace metadata and command namespace.

Main features:

  • Definition / references / document symbols / workspace symbols / call hierarchy.
  • Explorer folder context menu for GTAGS init/update/rebuild.
  • Explorer folder context menu for HTAGS HTML init/update/rebuild/preview.
  • Automatic .git/info/exclude updates for GTAGS, GRTAGS, GPATH, and HTML/.
  • Built-in install command for user-level GNU GLOBAL + Universal Ctags.
  • Default HTAGS preview port: 57658.

图标

插件内置 128x128 PNG 图标:

icon.png

两个独立侧边栏视图

插件现在提供两个不同图标的侧边栏视图:

函数级调用图:右键函数名后显示函数之间的调用关系图。
函数体流程图:侧边栏打开时,光标位于函数体内部会自动生成函数体内部流程图。

两类图都使用 Mermaid 渲染为一整张可缩放、可拖拽的图画布,不再使用列表式展示。控制按钮悬浮在画布内部,不挤占画布空间。


完全离线图表资源

函数级调用图和函数体流程图使用本地打包资源,不再依赖 CDN:

media/vendor/mermaid.min.js
media/vendor/svg-pan-zoom.min.js

当前 VSIX 内置 C/C++ Tree-sitter WASM 资源:

media/vendor/web-tree-sitter/web-tree-sitter.cjs
media/vendor/web-tree-sitter/web-tree-sitter.wasm
media/wasm/tree-sitter-c.wasm
media/wasm/tree-sitter-cpp.wasm

Webview 使用 webview.asWebviewUri(...) 加载插件内资源。


函数级图与函数体图的控制项区别

函数级调用图不会显示嵌套深度,因为函数调用关系没有嵌套深度概念。

函数体流程图才显示嵌套深度,并且点击“应用”后会持久化到 aurorixGtags.internalFlowMaxDepth。

独立窗口按钮会打开或聚焦同一个 Webview Panel,并用当前图刷新内容。


函数级调用图刷新规则

函数级调用图只通过编辑器右键手动触发生成,不会自动跟随光标更新。

函数级调用图里的“刷新”只重新渲染当前图,不重新读取当前光标位置,避免大工程里反复查询造成性能浪费。

函数体流程图仍然是被动自动能力:对应侧边栏打开时,光标位于函数体内部才自动生成。


独立窗口和自动生成规则

Ctrl + Alt + G 会打开或聚焦图表独立窗口,并尝试调用 VS Code 的 workbench.action.moveEditorToNewWindow,效果对齐 Visor 的独立窗口逻辑。

函数体流程图只在以下条件下自动生成:

函数体流程图侧边栏可见;或
独立窗口当前显示的是函数体流程图并且可见。

函数级调用图只通过右键手动触发,不自动跟随光标。


函数体流程图自动刷新规则

函数体流程图在重新显示时会强制重生成当前光标所在函数,即使仍然是同一个函数,也会重新生成,以反映源码修改。

触发条件:

函数体流程图侧边栏变为可见;
独立窗口当前显示函数体流程图并回到前台;
当前活动文档发生修改且函数体流程图正在显示;
光标变化且函数体流程图正在显示。

函数级调用图不参与这些自动刷新,仍然只通过右键手动触发。


按 Visor 图表相关实现补强

图表相关部分按 Visor 的稳定设计补强:

节点 ID 使用 sanitizeId,不再来源于源码文本;
节点显示文本使用 escapeString,按字符转义双引号、反斜杠、换行、尖括号和反引号;
Webview Panel 使用 create/reveal 复用逻辑,并尝试 moveEditorToNewWindow;
Ctrl + Alt + G 不再要求编辑器焦点,可直接打开或聚焦图表独立窗口;
Webview 按钮使用 addEventListener 绑定,不依赖内联点击;
Mermaid 渲染失败时显示可诊断的 Mermaid 源文本。

0.6.28 Remote Linux CJK Webview 字体兜底

为没有系统中文字体的 Remote Linux Webview 内置 Noto Sans SC,并将其应用到工具栏标题、按钮、输入框、Mermaid SVG 文本、HTML label 以及 Mermaid 超时/失败后的轻量降级视图。字体以 webview.asWebviewUri(...) 加载,发布包同时包含 SIL Open Font License 1.1 和上游来源、提交、SHA-256 记录;避免中文标题、按钮和“是/否”分支标签显示为方框。

0.6.27 定义处链接、流程可达高亮和标题布局修复

函数定义处的原生 DefinitionProvider 结果会过滤当前光标范围,避免 VS Code 把唯一当前位置结果转交默认引用命令;同一位置由插件注册的 DocumentLinkProvider 提供蓝色定义链接,点击后走 aurorixGtags.goToDefinitionAtLocation,仍由插件定义查询和定位。F12、声明和引用语义保持不变。

函数体流程图选择节点时,反向可达计算保留汇合点前所有真实分支,只排除 continue/结构性循环回边以及 return/break 终止边,避免漏亮可达分支或把下一轮循环扩散到当前路径。

调用图 Webview 使用宿主传入的完整标题,因此追踪路径会保留在标题中;两个画布的深度输入框弹性占用剩余宽度;Activity Bar 容器标题改为“代码关系”和“代码流程”,不再与视图标题重复显示品牌前缀。

验证:33 项 Node 回归测试、npm run check、VSIX 打包和安装均通过。为不预装中文字体的 Remote Linux Webview 内置了 Noto Sans SC(SIL Open Font License 1.1),并把它显式应用到 Mermaid SVG 文本、HTML label 和轻量降级视图,避免“函数调用图”及“是/否”分支标签显示为方框;字体的上游来源、提交和 SHA-256 见 media/fonts/NOTICE.md。Remote VS Code 仍需 Reload Window 后验证编辑器中的蓝色定义链接。


0.6.26 恢复 Mermaid 原生布局与定义处 Ctrl+单击

流程图和调用图不再让自定义端口/弧线路由覆盖 Mermaid 生成的 SVG 路径,恢复 Mermaid 原生的布局、无占位标签连线、箭头和 curve: basis 策略;同时递增图表缓存版本,旧的自定义路径不会继续被恢复。该版本曾保留当前位置定义结果;后续 0.6.27 改由 DocumentLinkProvider 承担定义处蓝色链接,避免宿主 fallback 到引用查询。


0.6.25 调用图视角、弧线路由与标签避让

调用图两个“回到开始点”入口统一复用首次进入时的聚焦流程,取消重复事件和相机动画竞争,确保恢复相同的中心节点与可读缩放。边路由收紧为仅水平线或严格竖直向下线允许直线,竖直向上、斜线、重复边和循环回边全部使用可见弧线。自绘边标签新增屏幕矩形占位与路径法线候选,continue、是/否、return、break 等标签不再互相遮挡。


0.6.24 大型工作区 compact 索引

GTAGS 初始化、重建以及 HTAGS 需要新建数据库时统一使用 gtags -c -v。在超大型工作区中,默认格式的 GTAGS 可能超过 Berkeley DB 1.85 可稳定处理的记录边界并在收尾时报 unexpected end of record;compact格式可显著降低GTAGS体积,同时不改变定义和引用查询语义。


0.6.23 调用图快速阶段作用域修复

修复调用图从快速首屏进入完整后台构建时 hostBuildRequestId 未在当前函数作用域声明、导致向前追踪/向后追踪抛出 ReferenceError 并停止的问题。新增真实快速图到完整图路径回归,确认 hostBuildPhase 与 hostBuildDone 使用同一个渲染请求 ID。


0.6.22 Webview 实际渲染与定义当前位置修复

修复调用图和函数体流程图 Webview 缺少 cleanMermaidLabel() 运行时 helper、导致两种图都直接降级到轻量视图的问题。Definition Provider 在唯一结果就是当前光标所在定义时不再把该位置交给 VS Code 原生导航,避免 VS Code 1.128 按默认 alternativeDefinitionCommand 自动改走“查找引用”;Aurorix 自定义 F12 仍保留当前位置定义语义。补充真实 Chromium 渲染取证与失败优先回归。


0.6.21 定义导航、图渲染和生命周期补强

定义查询固定使用 GNU GLOBAL -dxa 并过滤宏包裹引用;F12 命令不再委托引用 provider。调用图和函数体流程图使用有界首屏渲染,渲染取消、超时、隐藏释放和停用清理会结算等待器;Webview 渲染消息按请求 ID 隔离,追踪范围变化会同步重建侧栏和独立 Panel。普通 HTAGS 抢占仅停止自身终端,并等待真实关闭事件后确认完成;显式 Force Stop All 继续保留全局兜底清理。补充 Node 内建回归测试与 VSIX 发布边界检查。


0.6.20 导航与调用图首屏修复

修正重复导航菜单、Ctrl 悬停误触发可见查询、调用图大图全量渲染和取消状态残留问题;保留函数图分阶段首屏与本地离线资源。


0.6.19 搜索取消和路径范围修复

补强搜索任务取消、部分结果保留、搜索/排除路径段匹配、导航任务互斥和调用图分阶段渲染。该版本后续由 0.6.20 取代。


0.6.18 导航与搜索任务管理

导航展示类任务支持跨类型互斥取消,搜索任务支持取消并保留已有结果,路径范围按目录段语义匹配。


0.6.17 定义命令和分阶段渲染

收紧定义命令语义,移除无效的完整渲染入口,恢复调用图分阶段渲染并修正调用图取消传播。


0.6.16 流程图和导航基础修复

修复 do/while 流程图嵌套、路径跳转工作区基准、Mermaid 文本上限以及定义/引用命令隔离问题。


0.6.10 调用图全文显示与追踪范围浏览修复

恢复 设置追踪范围 浏览选择链路,重新补回文件夹选择对话框。调用图节点文本不再按固定长度截断,工具栏标题改成只显示“函数调用图”,追踪范围输入与工具区允许换行并增大高度。调用图分阶段渲染也从“一步视口后立刻全量”改成多圈渐进扩展后再进入全量,进一步贴近首屏先显示可视部分的目标。


0.6.9 宏包裹调用不再误判为声明

收紧函数声明文本判定:当目标符号前面的头部自身以 ) 结束时,视作更接近“宏/函数调用包裹后的使用语句”,不再把它归到声明结果里。这样像 list_for_each_entry_safe(...) uloop_process_delete(p); 这类宏包裹调用会回到引用结果,而真正的函数声明仍走声明链路。


0.6.8 路径输入框 Tab 补全

所有路径类输入框新增命令行式补全:按一次 Tab 尝试补全公共前缀,连续按两次 Tab 会弹出候选列表,候选可点击上屏。该补全已接入通用对话框中的路径字段,以及追踪范围列表对话框中的搜索路径/排除路径行。


0.6.7 修正文档版本顺序

修复说明文档中 0.6.x 版本段插入后未再次全量重排的问题。现在 README 和插件说明里的完整更新日志都会按真实版本号从新到旧排序,不再出现 0.6.1 跑到 0.6.6 之上的错误顺序。


0.6.6 回退宏声明一刀切过滤

撤回对宏定义位置的粗暴统一排除,不再把所有宏一刀切踢出声明链路。后续仍以函数声明判定逻辑为主,只针对具体误判场景继续收敛,而不是把宏这种合法符号整体排除掉。


0.6.5 宏不再混入声明结果

声明查询结果新增显式宏过滤:#define / 宏定义位置不会再被归入声明结果,避免把函数式宏误当成函数声明。函数调用图的目标解析仍然只接受真实函数定义,而普通引用链路仍可保留这类宏位置,防止把宏误并入声明但又不至于完全丢失检索结果。


0.6.4 历史下拉触发方式与对话框交互优化

历史记录下拉改成显式点击输入框右侧三角按钮才展开,三角会旋转为倒三角提供视觉反馈;不再自动弹出,避免遮挡下方按钮。普通对话框与追踪范围对话框的输入宽度扩大,并把“确定/取消”顺序调整为“确定在左、取消在右”。对话框创建改成更积极获取焦点并启用 retainContextWhenHidden,减少反复打开时的体感迟滞。


0.6.3 历史记录下拉与路径跳转反馈

所有新增功能对话框的输入记忆改为统一的自定义历史下拉,而不是浏览器原生白色 datalist。历史记录跨会话持久化保存,列表最多展开显示 6 条,更多内容进入滚动区,底部提供“清空历史记录”。路径跳转增加工作区合法性校验与成功/失败通知;搜索结果点击跳转后也会给出跳转成功/失败反馈。


0.6.2 追踪范围列表化与文件右键补齐

函数调用图标题和侧栏追踪范围显示现在会在未显式设置时自动回退到当前 GTAGS 根目录,不再显示“未设置”。追踪范围/排除路径升级为列表模式,支持逐项添加、逐项浏览、逐项正则匹配,并在提交与浏览阶段都执行 GTAGS 根目录合法性校验。资源管理器文件类型右键菜单补上“文件名查找”和“路径跳转”;而“在此文件夹下文件名查找”仍只保留在文件夹右键菜单。


0.6.1 去除重复转到声明菜单

移除插件额外贡献的重复“转到声明”右键菜单项,只保留 VS Code 原生的声明入口;声明 provider 仍然保留,因此原生“转到声明”继续走插件提供的声明解析结果。


0.6.0 更新日志倒序与搜索历史持久化

完整更新日志正文改为从新到旧倒序排列,不再在文档顶部额外放摘要块。自定义搜索/路径/追踪范围对话框新增持久化记忆:最近输入、搜索路径、排除路径和路径跳转目标会跨会话保存,并在下次打开对话框时自动回填为默认值,同时提供历史候选。


0.5.99 搜索结果面板与范围合法性校验

符号查找/文件名查找结果改为自定义结果面板:点击跳转后列表会自动收起,并保留可动画展开的入口;支持清空结果,清空后入口与列表一起消失。追踪范围对话框增加 GTAGS 根目录约束校验:搜索路径和排除路径都必须落在当前 GTAGS 绑定目录内,浏览和提交都会校验,不合法时对话框高亮报错并弹通知。资源管理器右键菜单增加“文件名查找”和“路径跳转”,同时移除编辑器右键里的文件名查找。声明查询改用 global -rx 路径并保留声明过滤规则;定义/声明/引用/搜索未命中时会显示至少 2.5 秒的通知。


0.5.98 缓存装载通知与代码块选中

流程图节点现在会尽量携带代码块范围:文本解析流和 AST 解析流都补充了 startLine/startColumn/endLine/endColumn,点击节点时代码侧会优先整块选中而不是只落单点。调用图/流程图侧栏重新变为可见时,若使用的是已缓存图,则会显示“装载缓存中”通知,并等待 Webview 完成缓存画面可见后关闭。调用图视口阶段继续保持先 fit/center/zoom 再计入完成,节点避让 padding 再提高一档,减少连线贴边/穿节点。


0.5.97 自定义搜索对话框与双路径追踪范围

追踪范围对话框升级为自定义样式,并扩展为搜索路径 + 排除路径双字段。编辑器右键新增符号查找,资源管理器右键新增文件名查找/在此文件夹下文件名查找,自定义对话框支持忽略大小写、正则、搜索路径和排除路径。


0.5.96 追踪范围生效与 Pin 生命周期修复

修复追踪范围选择后界面仍显示“未设置”的问题:宿主保存范围后会立即同步当前 Webview 输入框,并重建当前调用图。Pin 状态改成仅在当前图生命周期内生效,不再跨函数/跨图持久化;切换函数、清空图或进入另一张图后自动失效。Pin 高亮边改为按当前 pinnedPath 实时重算,不再依赖旧 edge index,解决路径高亮丢失。调用图视口阶段改成更小初始半径并在 waitPaint 前同步执行 fit/center/zoom,避免视口渲染和全量渲染挤成同一尺度。提高节点避让 padding 和 nodeHits 代价,减少连线贴边/穿过节点。菜单上的“查找声明”替换为“转到声明”。插件说明同步改为“仅对 C/C++ 做了优化和测试适配”。


0.5.95 侧栏标题残留修正

修复包内静态视图标题仍残留“函数级调用图”的问题。现在动态标题、NLS 标题和 package.json 贡献视图标题统一为“函数调用图”;当存在追踪范围时,运行时标题继续追加 (追踪范围<path>)。


0.5.94 追踪范围与声明/宏跳转

新增仅作用于三种追踪的“追踪范围”设置:右键菜单新增“设置追踪范围”,调用图侧栏工具栏增加“追踪范围 + 浏览”,两边共用持久化设置 aurorixGtags.callGraphTraceScope。调用图构建时会按该目录过滤 incoming/outgoing 结果与目标解析,不影响普通 Ctrl+单击定义跳转。定义提供器新增宏定义支持,global -x 能找到的 #define 现在也能通过插件定义跳转命中。新增“查找声明”命令与右键菜单,使用 GTAGS/源码扫描定位函数声明。调用图收集同时过滤函数声明位置,避免把声明当成调用节点混入图里。调用图标题改为“函数调用图”,并在有范围时追加 (追踪范围<path>)。


0.5.93 视口子图可见性修复

修复调用图视口阶段结束前看不到任何内容的问题。callGraphViewport() 现在会把 incoming/outgoing 同步裁剪到当前视口子图,避免用全量列表给子图补边导致空图、孤立线段或假占位失效;同时保证中心节点始终保留。Webview 的 renderOne() 在 stage==='viewport' 时不再恢复旧的全图平移/缩放状态,而是先对当前视口子图执行 fit/center,再进入全量阶段,避免视口图被旧视角移到屏幕外造成“视口完成但看不到任何数据”的假完成。


0.5.92 阶段通知时机与标签再放大

修复两阶段通知假启动:删除“视口完成后先切到全量渲染中再等待 30ms”的逻辑,改为只有真正开始执行全量 renderOne('full') 前才切换通知文案。边标签字号从 22 再提升到 33,遮罩同步扩大。连线端点内压从 12/14 进一步加到 16/18,并提高端口选择的中心对齐惩罚,减少残余未贴合的断线,尤其是 End 等圆角节点附近。


0.5.91 端点贴合、本地化和空图占位

修复边起点仍被推出节点外导致的浮空问题:所有路由起点和终点都向节点内部压入,视觉上由节点覆盖到边界,保证两端贴节点。黑色终段只对真实 data-aurorix-edge-idx 边绘制,并校验路径起点/终点靠近对应节点,避免孤立黑色短段。流程图底部按钮改为中文“重置/清空”,并调整为“重置”在左、“清空”在右;调用图清空按钮靠右且保留安全边距。边标签字号从 11 提升到 22,遮罩同步放大。右键菜单本地化补齐 forceStopAll,中文 VS Code 使用中文菜单。空调用图增加“未找到调用关系”占位节点,避免空白误判为未渲染。


0.5.90 黑色终段排线与 Pin 稳定

黑色终段交叉判断改成角度敏感:明显穿插交叉才缩短/跳过;同向、同终点的前端重叠允许,但会按同束数量缩短后续黑色段,让尖端可收束、前端可重叠、尾部仍有区分,避免多条完全合并成一根黑线。调用图节点 ID 从数组下标改为基于函数 key 的稳定 ID,保证视口渲染和全量渲染阶段切换后 Pin/选中路径仍能映射。清空按钮继续向右靠但保留安全边距。弯折惩罚从 28°/1500 收紧到 22°/2600,减少极端尖角。


0.5.89 视口阶段绘制确认与端点贴合

视口渲染阶段现在会等待 Webview DOM 更新后经过两次 requestAnimationFrame,确认浏览器已完成绘制帧,再发送“全量渲染中”阶段通知,避免视口还没填充就提前切换阶段。连线目标端点向目标节点内部推进 12px,保证视觉上压到节点边框/填充区域,不再停在节点外。底部 清空 与 Reset 按钮整体向内移动并设置 box-sizing:border-box,避免右侧边框被 Webview 裁切。


0.5.88 通知可见性与连线/标签修复

修复生成阶段通知不可见的问题:调用图进度启动时立即显示“视口渲染中”,Webview renderPhase 会更新为“全量渲染中”;流程图强制生成时也包裹通知并等待渲染完成。清空按钮从左下移到右下 Reset 左侧,避免与调用图“回到开始点”控制区冲突。边标签改为追加到原 path 的父容器,继承相同 transform,避免提示文本卡在错误位置。路由末端取消强制 L 直入段,曲线直接连到节点边界;黑色终段恢复沿原 path 截取,可随弧线弯曲,但仍只截取末端短段并做交叉近似检测。


0.5.87 两阶段视口/全量渲染与清空按钮

新增两阶段完整子图重渲染状态机:超大图先按中心完整环生成“视口渲染”,视口完成后进入“全量渲染”,全量完成后才关闭通知。全量阶段如果用户缩小/平移导致需要更多内容,会回退到更大视口环重新渲染,再继续全量。视口阶段取消会回到默认提示;全量阶段取消保留已提交视口图。侧边栏和独立窗口底部新增红色“清空”按钮,二次确认后释放当前图状态/缓存。


0.5.86 自适应质量与调用图预算

将 0.5.85 的硬降级改为自适应质量预算:中小图保留完整标签与全局路由评分,大图才逐步降低非关键增强。调用图构建新增签名缓存、函数体调用缓存和 global -xaT 目标解析缓存,避免重复解析文件和重复查询;调用图递归收集新增提前预算,按 callGraphMaxNodes 的约 1.35 倍提前限流,避免先收集超大图再裁剪造成 CPU/内存浪费。渲染阈值放宽:标签保留到 160 条边,全局路由评分保留到 220 条边,四边端口评分保留到 160 条边,尽量在保证效果的同时提速并压低内存峰值。


0.5.85 渲染性能系统优化

按性能工程方式优化渲染路径:保持单阶段稳定渲染,不再使用逐层增强。初始聚焦缩放从 0.45~1.25 调整为 0.85~1.8,提升节点文字可读性。调用图侧边栏生成通知现在覆盖数据生成与 Webview 实际渲染,Webview 渲染完成后发送 rendered 消息再结束通知(带 2.5s 兜底超时)。渲染热路径增加节点盒缓存,边 DOM 缓存继续保留;大图跳过非关键边标签,大图路由超过 120 条边时跳过全局迭代评分,保留快速候选选择。清理导出样式白名单中的 stroke-dasharray,黑色终段逻辑仍不使用 dash 截取。


0.5.84 黑色终段禁止折角和互相交叉

黑色套色段不再克隆整条路径用 dash 截取,改为只绘制 path 最末端的单一直线段,避免黑色部分跨越弧线/折点形成折线转角。边路由的直入目标节点中心段长度同步扩大到 36~68,保证黑色段基本落在最后直入段上。黑色终段之间会检测交叉,发生交叉时自动缩短当前黑色段,多次仍冲突则跳过该黑色段;主体连线仍允许交叉。


0.5.83 黑色终段长度翻倍

将靠近目标节点的黑色套色段长度翻倍:从 18~34 / len*0.2 调整为 36~68 / len*0.4。不恢复箭头,不改变连线终点贴合节点边界和终段延长线指向节点中心的逻辑。


0.5.82 移除箭头并强制终段连到节点

按交互要求彻底移除箭头三角形,不再使用 marker,只保留靠近终点的黑色套色段。修复 outsidePoint(..., 0) 被 gap || 18 错误转成 18 导致节点边界前留空的问题。所有边的终点保持在目标节点边界上,并在终点前追加一段朝向目标节点中心的直入段,保证黑色套色段延长线指向节点中心,连线中间不再像被磁铁排斥一样留下空隙。


0.5.81 恢复稳定单阶段渲染

撤销 0.5.80 的逐层增强渲染,恢复一次性稳定渲染流水线,避免节点、线、套色段、箭头在不同阶段发生视觉分离。撤销自绘箭头层,改回 SVG marker,并使用 markerUnits="strokeWidth",三角形尖端 refX 精确贴住路径终点,底边约 1.6 倍线宽。性能优化保留边 DOM 缓存和大图快速端口选择,不再通过拆层延迟来提升首屏速度。


0.5.80 首屏渲染性能优化

首屏渲染改为先显示 Mermaid 原始图和基础交互,再在下一帧分批执行重路由、命中层重建、箭头/黑色套色段和标签绘制,减少打开窗口时的长时间空白。边 DOM 查询加入缓存,大图端口选择采用快速方向选择,箭头头部与尾段在一次遍历中生成,减少重复 getTotalLength() 与 DOM 查询开销。


0.5.79 修复自绘箭头坐标系漂移

修复顶层自绘箭头追加到根 SVG 导致坐标系与 Mermaid 边 path 所在分组 transform 不一致的问题。现在箭头三角形追加到原始边 path 的同一父节点,继承同一坐标系;边枚举同时过滤 .aurorix-edge-hit、.aurorix-arrow-tail、.aurorix-arrow-head 等伪路径,避免后续重绘把命中层或套色层当成真实边处理。


0.5.78 顶层箭头和圆角节点边框

改为在最终路由 path 之后自绘顶层箭头三角形:箭头尖端精确放在 path 终点,也就是目标节点边界点;三角形中线沿 path 终点切线方向,端口选择增加入射方向朝向目标节点中心的评分,避免看起来擦边而过。原 Mermaid marker 被移除,防止被节点背景裁盖。Start/End 等圆角节点新增 roundNode 显式灰蓝边框和深色填充,保证箭头和节点边界关系清晰。


0.5.77 箭头几何和非互斥路径高亮

箭头 marker 重建为固定尖端坐标的三角形,refX 精确对齐三角形顶点,底边宽度扩大到约 1.6 倍线宽视觉比例,确保箭头尖端贴住边终点且底边比线宽更宽。函数体流程图高亮从单一路径改为“主路径 + 受控反向可达”:非互斥路径如果也能到达当前节点,会一起高亮;但循环回边、continue、return/break 终止边和明显互斥分支不会向后扩散,避免循环结构过度高亮。


0.5.76 任务级取消和箭头套色段修复

取消/停止改为任务级语义:普通通知里的取消只停止当前通知对应的任务,不再默认全局停止其它并行功能;全局 Aurorix GTAGS: Force Stop All Tasks 作为极端兜底并隐藏在命令面板中,正常用户不应依赖。箭头前黑色尾段在最终边样式应用后重建,并用 style.setProperty(..., important) 按当前真实线宽加粗覆盖,形成完整“套色段/烟嘴段”效果,而不是叠一根细黑线。


0.5.75 高优先级停止和箭头外露端口

新增全局停止标记 stopGeneration,停止动作会立即递增标记;调用图递归/循环建图会检查标记并主动让出事件循环,取消异常不再被吞掉。新增命令 Aurorix GTAGS: Force Stop All Tasks 用于直接强制停止所有插件任务、终端任务、预览服务和工具进程。路由端口不再限制上下边,改为四边自由评分选择,并将起点/终点从节点边界外推,确保箭头裸露在节点卡片外。


0.5.74 收紧路由大绕圈和尖角

移除导致巨大 X 形绕圈的超远图外兜底大弧和角落控制点,改为基于阻挡节点的局部绕行弧候选,控制点限制在中心附近合理范围内。弧线角度惩罚从 42° 收紧到 28° 并提高惩罚倍率,控制点外扩惩罚显著提高,防止极限小角度/尖角。Mermaid 布局间距同步增大,降低必须硬绕行的概率。


0.5.73 修复点击居中漂移

修复流程图/调用图点击节点后视角越点越偏、最终移到空白区域的问题。根因是旧逻辑缓存了节点的屏幕坐标,pan/zoom 后缓存失效仍被复用;现在每次居中都读取当前节点 getBoundingClientRect(),不再复用会随视口变化失效的屏幕坐标。添加排除清单 保持为资源管理器右键菜单专用项,并在命令面板中隐藏。


0.5.72 添加排除清单手动命令

新增文件夹右键命令 添加排除清单(aurorixGtags.addExcludeList)。用户可在资源管理器中选中文件夹后手动执行,插件只对该文件夹在当前 Git 工作树中的本地 .git/info/exclude 写入当前文件夹范围的 GTAGS/GRTAGS/GPATH/HTML/ 排除规则,不递归对子目录逐个处理。空白区右键时使用当前工作区根目录。


0.5.71 线点击缩放自适应容差

两个画布的线点击新增透明命中层,不再要求像素级点中细线。命中层只用于点击,不改变可见线宽,stroke-width 根据当前 svg-pan-zoom 比例尺动态换算,保持约 14px 屏幕容差;缩放、重置、恢复视图和初始聚焦后都会刷新命中宽度,避免放大后命中区域也被视觉放大导致误点。


0.5.70 本地 Git exclude 自动创建修复

修复 .git/info/exclude 不存在时插件没有成功落地本地排除规则的问题。gitExcludeInfo() 现在会在 Git 工作树内主动解析 .git 目录或 worktree/submodule 的 .git 文件,创建 .git/info/ 和 exclude 文件,再写入 GTAGS/GRTAGS/GPATH 与 HTML/ 的本地排除规则。


0.5.69 箭头前路径末段着色

修复箭头前黑色尾段使用额外直线导致“窄线/竖线感”的问题。现在不再创建 line,而是克隆原始边 path,用 stroke-dasharray/stroke-dashoffset 只显示靠近箭头的一小段,让黑色尾段沿原曲线/原弧线着色,并根据原线宽设置覆盖段宽度。


0.5.68 即时停止和内部状态校验

取消/停止现在会立即进入停止态:立刻取消当前通知任务、释放任务 done、清空插件内部任务引用、终止子进程、取消终端任务并强杀 global/gtags/htags。新增 getAurorixRunningState() / verifyAurorixStopped(),停止后不只检查外部进程,还检查插件内部通知任务、子进程集合、HTAGS 终端集合、终端进度集合和预览服务状态;检测通过后弹出确认通知,仍有残留则短轮询重试并最终给出具体残留项。


0.5.67 硬禁止连线穿节点

连线避让从“高惩罚”升级为硬规则:每条边会优先并只选择 nodeHits === 0 的候选路线。普通弧线候选无法避开节点时,会自动追加图外大弧绕行候选,逐步扩大到图外远端,直到找到不穿过任何非端点节点卡片的路线。全局路由选择也只在 clean 候选中比较交叉/重叠;自环也会尝试更大外扩弧线。继续保持禁止折线:水平/竖直可用直线,其它路线使用弧线。


0.5.66 调用图初始聚焦中心节点

修复调用图首次打开时比例尺过大且没有定位到中心函数节点的问题。空内容页仍然重置并居中提示;有内容且没有历史 viewport 时,渲染后会先 fit/center,再限制到合适 zoom,并用摄影机式居中聚焦当前选中节点(调用图默认 center,函数体流程图为当前 activeLine 对应节点)。


0.5.65 边点击和节点遮挡强约束

两个画布的边现在可点击,点击边会高亮该边及其两端节点。路由进一步把节点遮挡作为强约束:候选中只要存在不穿节点的路线就丢弃所有穿节点候选,并扩大节点避让 padding,减少卡片盖住连线的问题。视角居中使用节点中心缓存,减少跟随动画中的布局读写,降低掉帧。


0.5.64 节点点击居中、禁用折线和停止校验

图中点击节点时也会执行与代码光标跟随一致的摄影机式居中动画。路由移除正交折线候选:只有水平/垂直边允许直线,其它情况全部使用二次弧线候选。取消/停止任务后会延迟检查 global/gtags/htags 残留进程,确认无残留后弹出“已停止”通知;若仍有残留会再次强杀并弹出警告。


0.5.63 过度高亮和线重叠防护

进一步压制函数体流程图过度高亮:选中节点的高亮节点集合严格使用 Start -> 当前节点 的主路径,不再从高亮边集合反推节点,避免 return/break/end 或循环边把额外节点染亮。路由新增同轨重叠检测惩罚,端口间距扩大,并增加偏移正交轨道候选;线可以交叉,但会尽量避免长距离完全重叠或从节点卡片下穿过。


0.5.62 相机动画、避让节点和循环高亮修复

视角跟随动画调整为约 260ms smootherstep 曲线,两端更慢、中段更快,形成更自然的摄影机变速感。边路由新增正交折线候选,并显著提高节点穿越惩罚和避让 padding,减少边从节点卡片下穿过导致“连接/路过”无法区分的问题。函数体流程图选中高亮改为只高亮 Start 到当前节点的主路径;循环体内选择某一行时不再因为循环结构把后续循环路径或整个循环体都高亮。


0.5.61 跨函数自动切换函数体流程图

修复光标移动到同一文件的其它函数时函数体流程图仍停留在旧函数的问题。内部流程图现在在 center 中记录函数结束行,选区同步从“同文件即可增量同步”改为“同文件且 activeLine 仍在当前函数范围内才增量同步”;跨函数或当前图为空/文件不一致时立即重建流程图。跨函数重建不再复用旧函数 viewport,避免视角停留到旧图位置。


0.5.60 函数体侧边栏控件和自动生成修复

修复函数体流程图侧边栏误显示调用图专用 回到开始点/Near/路径 控件的问题:callControls 默认隐藏,仅调用图显示。Reset 按钮改为仅函数体流程图显示,调用图不再显示。修复 findFunctionExtent() fallback 分支函数头识别不足导致已在函数体内仍停留在提示页的问题;内部流程图视图打开/切回时若当前图为空或文件不一致,会立即强制构建刷新。


0.5.59 Pin 持久化、Reset 按钮和闪屏修复

两个画布的 Pin 状态写入 Webview state,按图类型和中心文件恢复,切换侧边栏/回来后不再丢失。两个画布右下角新增 Reset 按钮,用于重置比例尺并居中。流程图点击 Start 时增加短暂手动选择保护,activeLine 同步跳过 start/end,避免点击 Start 后视角被同步抢到 End。视角跟随改为约 150ms ease-out 平移动画,平滑但不拖沓。渲染时不再先清空 Mermaid 容器,并尽量启用 retainContextWhenHidden,减少侧边栏切换白屏/闪屏。


0.5.59 Pin 持久化、Reset 按钮和抢占修复

两个画布的 Pin 状态写入 Webview state,按图类型和中心文件恢复,切换侧边栏/回来后不再丢失。两个画布右下角新增 Reset 按钮,用于重置比例尺并居中。流程图点击 Start 时增加短暂手动选择保护,activeLine 同步跳过 start/end,避免点击 Start 后视角被同步抢到 End。视角跟随改为约 180ms smoothstep 摄影机式先加速后减速动画,并取消重叠动画。新任务会直接抢占旧任务并强杀工具进程,不再弹“继续旧任务/取消旧任务”选择框阻塞后续追踪。渲染时不再先清空 Mermaid 容器,并尽量启用 retainContextWhenHidden,减少侧边栏切换白屏/闪屏。


0.5.58 空内容侧边栏居中重置

侧边栏无内容提示页现在会强制重置比例尺并居中显示提示节点。该逻辑只在 graph.mode === "empty" 时启用,正常调用图和函数体流程图仍然沿用已有的 pan/zoom 保持逻辑。


0.5.57 HTAGS HTML 快速卸载

优化“卸载 HTAGS 预览文件”的删除速度。删除 HTML/ 大目录时不再优先使用阻塞扩展主线程的 fs.rmSync,而是先启动系统快速删除命令:Linux/macOS 使用 rm -rf -- HTML,Windows 使用 cmd /c rmdir /s /q HTML。外部删除失败时再回退 fs.rmSync,保证可靠性。


0.5.56 修复 GTAGS 异步 token 递归

修复 0.5.54 异步化后 neverCancelledToken() 被误替换成递归调用自己的问题。该问题会导致核心 GTAGS 定义跳转、引用查找、补全、符号、Call Hierarchy 等异步查询直接失败。现在 helper 恢复为正常的永不取消 token 对象。


0.5.55 流程图光标同步闪屏修复

修复在代码窗口点击/切换行时流程图剧烈闪屏再恢复比例的问题。activeLine 增量同步不再复用会 capture/restore panZoom 的 selectNode(),改为 selectNodeStateOnly() 只更新高亮状态;同步消息通过 requestAnimationFrame 合并,视角平移只更新本地 viewport,不向扩展端反复 post,避免比例尺恢复抖动和消息风暴。


0.5.54 UI 路径 Global 查询异步化

修复停止/新旧任务对话框和流程图跳转被同步 spawnSync 阻塞的问题。定义跳转、引用查找、补全、Document/Workspace Symbols、Call Hierarchy Incoming 等 UI 路径中的 runGlobal() 查询改为 runGlobalAsync(),避免扩展主线程被 GNU Global 查询卡住,使停止、新任务选择、流程图同步能及时响应。


0.5.54 UI 路径 Global 查询异步化和任务不互锁

补齐 UI 路径中的同步阻塞点:定义跳转、引用查找、补全、Document Symbols、Workspace Symbols、Call Hierarchy Incoming/Outgoing、Global 版本查询改为 runGlobalAsync(),避免 spawnSync 阻塞扩展主线程。全局任务通知锁改为非阻塞:已有任务运行时,新任务立即开始,弹窗只提供后台“停止旧任务/并行执行”选择,不再用 modal 等待旧任务或阻塞其它插件功能。


0.5.53 弯折收紧和工具进程强杀

继续收紧流程图/调用图弯线:二次弧控制点最大偏移从边长约 55% 压到约 32%,绝对上限从 260 压到 170,并把切线夹角惩罚阈值从 58° 降到 42°,惩罚权重提高,避免短边被拉成极限尖弯。停止逻辑继续加固:除了杀插件记录的子进程组,还会额外 pkill -KILL -x global/gtags/htags 或 Windows taskkill /IM ... /T /F,覆盖已经脱离记录的工具进程。


0.5.52 光标同步定位无闪屏修复

修复流程图在鼠标/光标切到代码位置时不自动定位对应节点的问题。选区变化和 active editor 切换现在只发送 syncActiveLine 增量消息,不再重建 Webview,避免闪屏;Webview 收到后保持当前 zoom,直接平移到对应节点中心。Panel/Sidebar 可见性切换也改为增量同步,不再触发强制重建。


0.5.51 预览停止也检查 HTML 排除

补齐 HTAGS 预览相关入口的 Git exclude 检查:previewHtags() 启动预览前继续检查并加入 HTML/;stopHtagsPreview() 停止预览前也会调用 addLocalGitExcludes(folder, true);预览弹窗里点击“停止预览”同样先检查 HTML/ 排除再停止服务。


0.5.50 远程本地导出和高清 PNG 修复

导出文件写入改为 vscode.workspace.fs.writeFile(targetUri, bytes),不再使用 Node fs.writeFileSync(target.fsPath),因此远程 VS Code 中通过保存对话框选择本地位置时,会按 VS Code 返回的 URI 写入目标位置。PNG 导出改为高清倍率渲染,默认至少 3x、最高 4x,并按最大边 12000px 限制内存,导出文件名带倍率后缀。继续确认 HTAGS 初始化/更新/重建时会对 HTML/ 调用 addLocalGitExcludes(folder, true) 加入 Git exclude。


0.5.49 弯折角度和内存优化

路由器新增弯折角度惩罚和控制点偏移上限,控制点偏移按边长比例限制,避免短边被远控制点拉成极端尖角。大图路由进一步降内存:边数较多时候选不再保存采样数组,交叉评分自动降级;候选落地后立即释放数组引用。WYSIWYG 导出内联样式改为栈遍历,不再一次性构建全量 SVG 节点数组,减少导出时内存峰值。


0.5.48 流程图增量同步和大图性能优化

光标移动/跳下一行不再重建函数体流程图,而是向 Webview 发送 syncActiveLine 消息,仅增量更新选中节点并在原 zoom 下平移到节点附近,避免比例尺重置。代码内容变化才触发延迟重建,防抖从 120ms 提升为普通 650ms/强制 160ms。大图路由根据边数降低采样点、候选数量和全局重评轮数,避免稍大函数因全局避交叉计算卡死。


0.5.47 自动同步视口和强制停止修复

函数体流程图在编辑代码、光标移动或跳转到下一行触发自动同步时,会继承旧 viewport,按 activeLine 选中对应节点,并只在节点偏离当前视野时用原 zoom 平移到节点附近,不再 fit/center 到全图。停止逻辑改为更强制:global 子进程以独立进程组启动,取消时直接 SIGKILL 进程组并立即释放停止提示,不再等待外部命令自然执行完成。


0.5.46 流程图点击视口保持修复

修复函数体流程图点击节点后仍回弹全局比例的问题。Webview 点击节点时会把当前 pan/zoom viewport 同步发回扩展端保存到 graph.viewport;函数体流程图因跳源码/选区变化触发自动重建时,会继承旧 viewport 并注入新 HTML,避免 webview.html 全量替换导致视口状态丢失。


0.5.45 线内标签遮罩修复

修复 continue、return、break、是/否 等线内标签被线穿过的问题。边标签现在先绘制一个与画布背景色一致的遮罩矩形,再绘制文字,文字区域会擦除底下的线;SVG/PNG 导出也会保留该遮罩效果。


0.5.44 WYSIWYG 彩色导出修复

修复 SVG/PNG 导出在外部查看器中变成黑白的问题。导出当前渲染 SVG 前,会把当前 Webview 中每个 SVG 元素的 computedStyle 写成内联样式,包括节点填充、边颜色、高亮颜色、文字描边、透明度、filter 等,使导出文件脱离 VS Code CSS 变量和 class 后仍保持所见即所得的彩色效果。


0.5.43 导出裁剪和文件管理器显示

修复导出图片巨大空白问题:SVG/PNG 导出会按当前渲染 SVG 的实际内容 getBBox() 计算裁剪 viewBox,并只保留约 48px 边距,保存当前真实渲染结果。导出完成后的动作增加 在文件管理器中显示,调用 VS Code revealFileInOS 直接定位保存文件,而不是只能在 VS Code 内打开。


0.5.42 调用图自环和流程图点击缩放修复

调用图自递归/自环边改为同侧双端口的稳定弧圈,使用 SVG A 椭圆弧渲染,避免尖锐折返线。节点避让不再完全跳过源/目标节点,只忽略端点附近一小段,防止连线被自己的节点卡片覆盖。两个画布的 pan/zoom 状态现在写入 Webview state,点击节点、跳源码或流程图自动同步后会恢复当前视口,不再回弹到全局比例。


0.5.41 Pin 当前高亮修复

修复 Pin 按钮失效/钉不出的问题。Pin 不再点击时重新计算另一套路径,而是直接复制当前正在显示的高亮边:调用图 路径 模式钉住源节点到选中节点路径,Near 模式钉住当前选中节点的一跳 near 高亮;函数体流程图钉住当前选中路径/可达边。


0.5.40 导出保存对话框、标签方向和点击缩放修复

导出 SVG/PNG/MMD 改为调用 VS Code showSaveDialog 自选路径。SVG/PNG 保存当前真实渲染后的 SVG 图像,包含当前高亮、箭头、线内标签和路由结果。边标签只显示文字本身,例如 continue,方向固定水平面向读者,不再显示 / 或跟随线旋转。两个画布点击节点只更新高亮/跳源码,会保存并恢复当前 pan/zoom,不再自动缩回全图比例。


0.5.39 全局候选避交叉路由

两个画布路由从逐条贪心改为全局候选规划。每条边先生成直线、左右单弧、远距离单弧等候选,然后多轮重选;评分将线线交叉作为最高惩罚,节点覆盖次之,宁可选择更远的单弧路线也避免交叉。弧线候选左右成对生成,并加入同节点左右弯曲平衡惩罚,减少全部偏向一侧的视觉问题。


0.5.38 线内标签和黑色箭头修复

边标签不再交给 Mermaid 放在线旁边,而是渲染后按路径中点自绘 / label /,让 continue、return、break、是/否 等标签压在线里面。箭头改为统一自定义黑色 marker aurorix-arrowhead,所有边渲染后强制补 marker-end,红色高亮线也能看到箭头。直线规则收紧:只有水平或竖直线才使用 L,存在斜向偏移时进入单段 Q 弧线候选。


0.5.37 箭头尖端贴边修复

修复箭头尖端与节点边界的贴合:箭头 marker 改为 viewBox=0 0 10 10、refX=10,并统一三角形 path 为 M 0 0 L 10 5 L 0 10 z,使箭头尖端正好对应路径终点。菱形节点端口改为按菱形真实边界公式计算,避免端口落在菱形内部导致箭头穿刺。箭头前黑色短尾段也向前缩短,避免覆盖箭头尖。


0.5.36 箭头增强和边中点端口优化

两个画布继续强化连线:节点端口分槽改为以边中点为第一槽,后续槽位按中点两侧展开;路由顺序优先短直线/主干线,回边和自环后路由以减少交叉。箭头 marker 固定尺寸从 7.5 提升到 9.5,并在渲染后为缺失 marker 的边补齐 marker-end。每条边靠近箭头末端增加约 13px 黑色短尾段,增强箭头方向感但不大面积涂黑。


0.5.35 两画布连线交叉避让

两个画布的路由器增加线-线交叉检测。每条边会采样为折线段并与已经确定的边做相交判断:直线只有在不穿节点且不与已有线交叉时才使用;否则进入单段 Q 弧线候选,候选评分会对节点覆盖和线线交叉施加高额惩罚,从两侧/多档偏移里选择交叉最少且偏移最小的一条。


0.5.34 直线优先单弧候选避让

两个画布继续统一路由规范:先尝试直线,只有直线会穿过节点、重复边、反向边、continue/自环时才使用单段 Q 弧线。弧线不再按固定方向硬绕,而是从两侧、多档偏移候选中选择“不穿其它节点且偏移最小”的控制点,避免打结、两次变向和覆盖节点卡片。


0.5.33 节点端口分槽防重叠

两个画布的连线端口增加分槽算法:同一节点同一边上连接多条线时,会根据线数量把出入口分配到不同槽位,线少时明显分开,线多时自动压缩间距。直线优先规则保留:不穿节点、不重复、不反向的边仍使用直线;只有必要时才使用单段 Q 弧线。


0.5.32 直线优先和节点避让路由

两个画布路由改为直线优先:每条边先尝试 M ... L ... 直线,只有直线会穿过其它节点、自环、反向/continue 或同一对节点存在多条边时,才退化为单段 Q 弧线避让。路由会对直线和弧线采样检测节点包围盒,避免节点卡片压线/盖线。Mermaid 间距加大到 nodeSpacing=180、rankSpacing=220、diagramPadding=44,进一步降低节点重叠。


0.5.31 自递归边高亮错位修复

修复调用图自递归/自环场景下高亮边错位的问题。渲染后边 DOM 编号不再同时统计 .edgePath 和其内部 .flowchart-link,避免同一条边被父子元素重复计数;精确边索引优先使用非重复的实际边元素。自环边增加单弧 loop 路由,仍保持一条边只使用一个 Q 弧形控制点。


0.5.30 两个画布单弧避让路由

调用图和函数体流程图统一执行渲染后单弧路由:每条边只生成一个 Q 二次 Bézier 控制点,不再使用多段折线或多次转向曲线。路由按边序号分配约 30px 间距,相当于至少三条粗线级别的基础间隔;如果采样检测到弧线穿过其它节点包围盒,会逐步增大弧线偏移绕开。Mermaid 节点间距同步加大到 nodeSpacing=150、rankSpacing=180,减少节点重叠和节点压线。


0.5.29 调用图路径高亮断线修复

调用图恢复 Mermaid 原始连线后,路径高亮改为渲染后按 Mermaid 实际边顺序给边 DOM 标记 data-aurorix-edge-idx,高亮优先使用精确边序号匹配,避免模糊 id 匹配错边导致路径断线。


0.5.28 调用图刷新固定开始节点

调用图刷新逻辑拆分为“从光标新建图”和“从已有开始节点刷新图”。侧边栏和独立 Panel 的刷新按钮现在固定使用当前图的 center 作为开始节点,不再读取当前光标或选中节点;只有从右键菜单重新打开双向/向前/向后追踪时才会更换开始节点。


0.5.27 调用图高亮模式开关和停止通知

向后追踪默认深度改为 2。调用图画布左下角恢复“回到开始点”按钮,并新增互斥高亮模式开关:Near 显示选中节点一跳近邻高亮,路径 显示源节点到选中节点路径高亮;两者互斥。通知任务点击取消/停止时会额外显示“正在停止任务...”通知,直到实际停止完成才消失。


0.5.26 流程图平滑曲线回边路由

函数体流程图连线从正交圆角折线改回平滑 Bezier 曲线风格。普通向下边使用平滑下行曲线;continue/反向回边会先绕到侧边 lane,再从目标节点上方连入,保持“多绕点路再连上面”的视觉,不再使用生硬的正交折线路由。调用图仍保持 Mermaid 原始连线布局。


0.5.25 通知取消等待真实停止

通知型任务取消逻辑调整:点击通知取消/停止后只发送停止信号,不再立即关闭“任务进行中”通知;通知必须等终端关闭或子进程实际结束后才完成。启动新通知任务并选择“进行新任务”时,会先取消旧任务并等待旧任务完成清理,再启动新任务。HTAGS 终端任务中断也改为发送 Ctrl+C/关闭终端,由终端关闭事件结束通知。


0.5.24 函数体流程图回边绕行优化

函数体流程图的 continue/反向回边改为更接近原先视觉风格的圆角折线路由:从源节点下方出来后先走到侧向 lane,再向上绕到目标节点上方,最后从目标菱形上半边进入。lane 距离加大,减少贴边短切和穿节点。调用图连线仍保持 Mermaid 原始布局。


0.5.23 调用图连线回退原始布局

调用图不再应用输入/输出端口重写,恢复 Mermaid 原始连线布局。函数体流程图继续保留节点端口规则和圆角正交路由。


0.5.22 调用图菜单改名和顺序调整

右键菜单中的单向追踪入口改名:追踪引用 改为 向前追踪,追踪调用 改为 向后追踪。菜单顺序调整为:双向追踪、向前追踪、向后追踪。命令 ID 保持兼容:traceReferences 对应向前追踪,traceCalls 对应向后追踪。


0.5.21 平滑圆角正交连线路由

流程图/调用图的 SVG 边后处理从大曲率贝塞尔曲线改为圆角正交路由。普通向下边使用中点圆角折线,回边/反向边使用短距离侧向 lane 绕行后从目标上方进入,减少大幅 S 形摆动,视觉更平滑克制。


0.5.20 流程图误报语法错误修复

移除函数体流程图中的行级“语法错误”猜测提示。C/C++ 宏和条件编译可能把 if (...) 表达式拆在 #if/#else/#endif 中,按原始行判断会误报未闭合。AST 解析失败现在只写日志并自动回退启发式流程图,不再在画布顶部显示误导性 syntax warning,也不会阻止流程图继续生成。


0.5.19 continue 输入端口和箭头微调

箭头固定尺寸从 6.5 微调为 7.5,仍使用 userSpaceOnUse,不会随高亮线宽放大。修复部分 Mermaid .flowchart-link path 本体未被重写的问题,确保 continue 回到 for/while 等菱形节点时作为输入线从菱形上半边进入。菱形端口进一步收紧为上/下边区域。


0.5.18 调用图三种追踪模式

编辑器右键调用图入口拆分为三个无前缀菜单:双向追踪、向前追踪、向后追踪。双向追踪同时向前/向后,默认深度 2;向前追踪只查调用者/引用路径,默认深度 2;向后追踪只查被调函数/调用路径,默认深度 4。三个模式使用独立配置项:aurorixGtags.callGraphTraceDepthBoth、aurorixGtags.callGraphTraceDepthIncoming、aurorixGtags.callGraphTraceDepthOutgoing。


0.5.17 移除查找声明

移除“查找声明”命令、右键菜单项和 DeclarationProvider 注册。该功能在无完整语言服务/编译数据库时只能依赖大范围文本扫描,速度慢且对宏、条件编译、typedef、extern 等 C/C++ 写法不稳定。后续推荐使用“跳转定义”“查找引用”“调用图”作为稳定入口。


0.5.16 固定箭头尺寸和菱形端口强约束

箭头 marker 改为 userSpaceOnUse 固定尺寸,不再随高亮线宽放大。菱形节点端口改为强约束:输入只进入上左/上右边,输出只从下左/下右边出来;回边和反向边会绕到目标上方再进入,避免吸附到底部或侧边。


0.5.15 通用声明候选扫描

查找声明 从函数原型扫描扩展为通用声明候选扫描,覆盖函数声明、变量/extern 声明、宏 #define、typedef、struct/enum/class 等常见声明形式。扫描范围扩大到当前 GTAGS root、工作区 root 和进程目录,并在找不到结果时把扫描 root 和命中数量写入 Aurorix GTAGS 输出窗口,便于定位。


0.5.14 return/break 边标签和箭头对齐修复

return 和 break 不再渲染为独立节点,而是作为到 End 的语义边标签显示在线中间。控制语句直接 return/break 时,从控制节点连到 End 并标注 return/break;普通语句后跟 return/break 时,从上一可执行节点连到 End 并标注语义。箭头不再重写为自定义三角形,保留 Mermaid 原生 marker,只调整 marker 容器比例,避免箭头和线不居中。


0.5.13 箭头比例和菱形端口路由修复

修复上一版箭头 marker 过大的问题,箭头尺寸按线宽使用更协调的比例。SVG 边路径后处理改为按节点形状计算端口:普通节点输出从底部中心,输入从顶部中心;菱形节点使用上半区作为输入、下半区作为输出,并在反向/回绕边上增加绕路控制点,避免线直接吸到侧边或穿节点。


0.5.12 查找声明强扫描修复

查找声明 命令和 DeclarationProvider 改为共用独立强扫描函数 findDeclarationsForSymbol(),优先在当前 GTAGS root、当前工作区和进程目录中本地语句级扫描声明,不再对扫描结果做会吞掉结果的二次 provider 过滤。未命中时再尝试 GLOBAL grep 补充。


0.5.11 统一下出上入连线端口

调用图和函数体流程图在 Mermaid SVG 渲染后统一重写边路径:所有输出线从源节点底部中心发出,输入线从目标节点顶部中心进入。箭头端保持放大后的 marker,避免连线吸附到节点侧边造成方向判断混乱。


0.5.10 画布箭头端放大

调用图和函数体流程图的 Mermaid SVG 渲染后统一放大箭头 marker,避免连线箭头端过小不易辨认。


0.5.9 break 终止边修复

函数体流程图中 break 改为可点击终止节点,并通过带 break 标识的语义边直接连到 End,不再连到普通后续语句。选择 break; 时,会高亮从 Start 到 break 的所有可达路径,并继续高亮 break -> End,End 节点也同步高亮。


0.5.8 return 终止节点和 return 边标识

函数体流程图中 return 作为可点击终止节点显示,只连到最终 End,边标签显示 return,并使用独立高亮样式。选择 return 0; 等 return 节点时,会高亮从 Start 到该 return 的所有可达路径,并继续高亮 return -> End,End 节点也同步高亮。


0.5.7 通知任务守卫与真实取消

所有通知型任务启动前增加任务守卫:已有任务运行时会弹框选择“进行新任务”或“继续旧任务”。选择新任务会取消旧任务。

调用图生成使用 CancellationTokenSource 统一取消,取消会终止当前 global 子进程。Terminal 型 GTAGS/HTAGS/安装任务的通知改为可取消,取消时发送 Ctrl+C 并关闭终端。


0.5.6 流程图多可达路径高亮

函数体流程图选中节点时,不再只高亮单条 BFS 路径。现在会反向收集所有能到达该节点的前驱边并高亮,覆盖 if 无 else 时 true 分支执行后继续到达后续节点、false 分支直接到达后续节点的汇合场景,避免用户误判互斥关系。路径上的中间节点也会同步高亮。


0.5.5 调用图方向色对调

调用图方向色调整为:向前/incoming/引用当前函数的边使用绿色;向后/outgoing/当前函数调用出去的边使用红色。near 前后一级高亮同步使用相同方向色。


0.5.4 调用图高亮断线和虚空索敌修复

调用图边高亮改为优先按真实端点 ID 匹配,只有找不到时才用 Mermaid 渲染序号兜底,避免索引错位造成无关线被高亮。

中心到选择节点的路径取消无向兜底搜索;如果节点不在中心的调用/引用方向链上,不再强行跨图找路径,避免“虚空索敌”。路径边集合只包含相邻路径节点之间的真实边,不再扩展到路径节点集合内的所有边。


0.5.3 流程节点跳转和路径高亮修复

修复流程图节点点击不跳转源码的根因:节点 payload 自带的 type 字段会覆盖 Webview 消息类型 open,现在消息类型强制最后写入。

路径高亮改为只高亮当前选择路径相关边,取消无关语义边常亮;Mermaid 边序号匹配改为优先 .edgePath,避免混入 .flowchart-link 导致错线/漏线。AST 不再因 Tree-sitter 宽泛 hasError 对正确代码误报 syntax errors。


0.5.2 调用图复制堆栈

调用图工具栏新增“堆栈”按钮,可复制当前选中节点对应的调用/引用路径堆栈。输出格式为 调用堆栈: 后按路径列出 [文件路径] -> 函数签名:行号;。选择开始节点右侧调用路径时,开始节点排在最下面;引用路径按当前路径截止到选中节点输出。


0.5.1 调用图路径节点高亮与声明扫描修复

调用图路径节点高亮改为优先使用 SVG 渲染顺序绑定的 data-aurorix-id 查找节点,避免 Mermaid DOM id 不稳定导致路径上的节点没亮。路径节点描边加粗并填充深色,头尾和中间节点都会高亮。

查找声明改为本地语句级扫描优先,定位多行声明中的真实符号行,再补 GLOBAL/grep 结果,提升头文件和源文件声明查找稳定性。


0.5.0 AST 优先函数体流程图

函数体流程图接入离线 web-tree-sitter 运行时,C/C++ 优先使用 Tree-sitter AST 生成控制流节点。AST 成功时识别函数体内的 if/loop/switch/宏预处理/顺序语句块,并把 return/break/continue 作为控制语义处理而不是单独节点。AST 失败或不支持的语言会回退旧启发式,并在图中给出具体函数和位置提示。


0.4.19 刷新图标垂直对齐

Webview 工具栏刷新按钮从字体字符 ⟳ 改为固定尺寸 SVG,并添加 .btn-icon 样式,解决刷新图标相对其他按钮垂直位置偏高的问题。


0.4.18 流程图生成异常与索引提示显示修复

修复函数体流程图生成时 warnings 未定义导致自动更新中断的问题,避免一直停留在“将光标放到函数体内部”的空提示。调用图的“新增或删除函数需增量更新索引才能识别到”提示现在只在调用图显示,流程图和空图都不显示。


0.4.17 泛化无大括号控制语句与语法提示

无大括号控制语句识别从 if 扩展到 if/else if/elsif/#if/#elif/for/while/do/switch 等控制节点。控制语句同一行或下一条有效语句为 return/break/continue 时,不生成这些跳转语句节点,而是在控制节点上生成对应语义边。

函数体流程图生成时新增语法/结构提示:检测函数体括号不平衡、控制语句括号疑似不完整、宏 #if/#endif 不平衡,并在图中提示具体函数和文件行号。


0.4.16 无大括号 return 分支识别

函数体流程图继续不把 return 生成为节点。新增无大括号分支识别:if (...) return; 和 if (...) 下一行缩进 return; 会在 if 节点上标记退出分支,是 边直接连到 End,后续语句作为 否 分支继续。


0.4.15 Pin 图标替换

工具栏 Pin 按钮图标替换为更明确的图钉/pushpin 形状,保留“钉住路径”悬浮提示和原有 Pin 行为。


0.4.14 工具栏图标与悬浮提示

Webview 工具栏刷新按钮改为图标 ⟳。工具栏按钮补充鼠标悬浮提示,包括打开独立窗口、刷新、回到开始节点、钉住路径、应用深度、复制 Mermaid、导出 MMD/SVG/PNG。


0.4.13 调用图 near 方向色修正

调用图点击节点时的前后一级连线不再使用白色 near 叠加。现在拆分为方向色:进入当前节点的前一级边为红色 nearUp,当前节点调用出去的后一级边为绿色 nearDown,并在普通路径高亮之后应用以实现覆盖。


0.4.12 流程图节点类型收敛

函数体流程图不再把 continue、break、else、#else/#endif、return 单独生成为节点。独立控制节点收敛为 if/else if/elsif、#if/#ifdef/#ifndef/#elif、switch、for/while/do while/do;普通顺序代码继续合并为 sequence 块。

路径普通线保持节点高亮色,并通过连续路径边补全逻辑避免高亮中间断线。


0.4.11 流程图节点跳转与控制流语义上色

流程图节点点击改为按 Mermaid SVG 节点渲染顺序绑定 data-aurorix-id,不再依赖不稳定的 Mermaid DOM id,点击节点会强制发送源码跳转消息。

循环结构补强:循环体末尾/continue 会生成回到循环判断节点的闭合边。switch/case、break、continue 边增加语义类并直接上色:case 紫色、break 红色、continue 绿色。


0.4.10 调用图前后一级连线强高亮

点击调用图任意节点时,该节点的前一级和后一级直接连线会使用 near 强高亮,优先级高于中心路径高亮。中心路径仍保留红/绿方向色,直接相邻边用更粗更亮的白色线覆盖显示。


0.4.9 调用图路径高亮补线与高对比颜色

调用图路径高亮改为按 Mermaid 渲染边序号兜底定位,避免路径中某些线没有高亮。开始节点前的调用链使用红色线,开始节点后的被调链使用绿色线。

所有画布的高亮颜色加深、线条加粗、阴影增强;调用图初始中心节点高亮与常驻开始节点高亮保持一致。


0.4.8 完整调用图取消与流程图补线

调用图 incoming 递归直接使用 global -xra <函数名>,不再绕编辑器位置;调用图定义解析使用异步 GLOBAL 调用,取消通知可以终止当前 GLOBAL 子进程。

移除 Webview 视图标题栏的“打开独立窗口”按钮;工具栏保留图标按钮,回到开始节点改为工具栏 ↩ 图标。

流程图增加节点点击事件委托、顺序块、循环/switch/case/break/continue/宏条件结构,并增加补线 pass,减少缺输入/缺输出和孤岛。


0.4.7 流程图结构与调用图交互修复

函数体流程图增强:节点点击增加事件委托,点击节点会跳转源码;顺序代码会合并为代码段节点;循环、switch、case、break、continue、宏条件分支会进入流程图;#else/#endif 不再单独作为节点;return/break/continue 按控制流连线,普通节点补充到 End,减少孤岛。

调用图增强:开始节点始终高亮;点击节点后高亮开始节点到当前节点之间路径;顶部提示“新增或删除函数需增量更新索引才能识别到”;独立窗口工具按钮只保留图标,不显示文字。

调用图生成通知提前显示,可取消;引用 fallback 已删除,追踪仍按 GNU GLOBAL 结果递归向前/向后执行。


0.4.6 独立窗口标题精简

命令标题去掉快捷键前缀,不再显示 Ctrl+Alt+G:打开独立窗口,改为 打开独立窗口。快捷键 Ctrl+Alt+G 本身继续保留。


0.4.5 流程路径上色、刷新重建与调用图取消

函数体流程图中“是/否”连线只在被选中路径内上色:是为绿色,否为红色;未选中路径不再预先上色。return 节点不再继续连出下一条普通流程线。

函数级调用图追踪深度默认改为 2。两个画布点击刷新都会重新构建图数据;调用图生成期间显示可取消进度通知。

引用查询删除 grep fallback,只保留 GNU GLOBAL 的引用判断结果,避免缺失文件或同名函数导致 fallback 误匹配。

函数体流程图新增宏条件分支识别:#if/#ifdef/#ifndef/#elif/#else/#endif 会作为宏条件流程节点进入图中。


0.4.4 自动导出落盘与声明查找增强

图表导出不再只依赖保存对话框,MMD/SVG/PNG 会自动写入当前图中心文件所在目录下的 aurorix-gtags-exports/,并在通知中显示完整文件路径,提供“打开文件/打开文件夹”按钮。

“查找声明”改为语句级识别:围绕命中行拼接完整声明语句,要求 ; 存在且出现在 { 前,支持源文件和头文件中的多行声明/原型声明,同时继续排除函数定义。


0.4.3 光标同步流程节点与移除底部提示

函数体流程图会根据当前编辑器光标行自动同步高亮对应流程节点。该同步只作用于函数体流程图,不会让函数级调用图自动跟随光标。

两个画布底部的“滚轮缩放,拖拽移动……”提示文本已删除;缩放和拖拽功能保留。


0.4.2 Pin 路径固定与回到开始视角重置

函数调用图中的 Pin 现在表示“钉住当前选中节点到开始函数节点之间的整条路径”。固定路径使用更明显的金色粗线、金色节点描边和暗金填充。

“回到开始节点”按钮现在不仅会重新选中中心函数节点,还会重置缩放并居中视角,相当于回到初始视图。


0.4.1 调用图回到开始节点按钮

函数级调用图底部状态提示改为可点击按钮“回到开始节点”,点击后自动选中中心函数节点。函数体流程图不再显示这个底部提示/按钮,避免干扰流程图阅读。


0.4.0 双画布路径高亮与流程图交互修复

函数体流程图去掉节点前缀类型文字(不再显示 call、branch 等),分支边只显示“是/否”,不再显示“否/继续”。“是”边默认绿色,“否”边默认红色;点击节点后按真实边路径高亮,当前点击节点叠加强红色高亮,不被路径高亮覆盖。

函数体流程图节点点击继续通过 Webview 消息打开源码位置;路径计算改为基于真实边的 BFS,避免有“是/否”分支时永远选不到否路径。

函数调用图点击节点时会高亮相邻连线:调用该节点的上游边为绿色,该节点调用出去的下游边为红色。调用图布局增加节点/层级间距,减少节点遮挡箭头的问题。


0.3.9 调用图递归追踪与定位一致性

函数级调用图的“追踪深度”改为真实递归深度,默认 3:向前递归追踪调用者 N 层,向后递归追踪被调函数 N 层。递归调用边会保留;引用结果会过滤函数定义/声明位置,避免非递归场景把自己的定义算作引用。

函数体流程图改用当前光标所在函数的大括号边界,避免把后续函数混入当前流程图。函数调用图节点标签改为 [文件名:行数] 函数名(参数xx)。

Ctrl+Alt+G 标题改为短标题“打开独立窗口”,函数级调用图和函数体流程图使用各自独立窗口。


0.3.8 双画布节点交互统一

函数级调用图和函数体流程图两个画布统一使用相同节点交互规则:

点击节点会跳转到对应源码行;
当前点击节点使用红色强高亮和深色填充;
路径高亮使用橙色,不再使用浅蓝色;
Pin 固定路径使用金色高亮;
两个画布都支持节点点击、路径高亮和 Pin 固定。

函数体流程图进一步补充分支边:分支节点会尽量生成“是”和“否/继续”两条边,不再简单全部串成一条直线。


0.3.7 声明查找与调用层次 fallback

“查找声明”支持在头文件和源代码文件中查找函数声明/原型,但会排除带函数体的定义。判定规则是:文件作用域、匹配 symbol(,并且在 { 之前先出现 ;。

调用层次 incoming 现在在 global -xra 无结果时,会使用 grep fallback 和本地源码扫描补充,避免引用查询可找到但调用层次为空。

定义查询继续保持严格定义,不再把 fallback grep 结果混入定义列表。


0.3.6 查找声明与 Webview 修复

新增“查找声明”命令和编辑器右键入口,用于定位函数声明/头文件原型位置。定义查询不再把 fallback grep 结果当作定义;fallback grep 结果改由引用查询补充。

修复函数图 Webview 内联脚本转义问题,避免 \n、\s、\w 在模板字符串中被错误展开,导致两个图表报错和按钮点击无效。

停止/卸载 HTAGS 任务时会主动关闭终端进度通知,避免停止后通知仍显示正在处理。


0.3.5 函数级调用图追踪深度

函数级调用图新增“追踪深度”控制,默认值为 10,表示当前图中最多显示的关联函数数量。

可以在函数级调用图右侧小浮层中填写“追踪深度”并点击“应用”,该值会持久化到 VS Code 设置:

"aurorixGtags.callGraphTraceDepth": 10

函数体流程图仍使用独立的“深度/嵌套深度”配置:

"aurorixGtags.internalFlowMaxDepth": 3

0.3.4 进度通知与强制停止预览

GTAGS/HTAGS 初始化、更新、重建、预览、停止、卸载和工具链安装都会显示 VS Code 进度通知,提示当前正在处理的操作。终端型任务的通知会持续到对应终端关闭。

停止 HTAGS 预览会强制关闭匹配端口/目录的 HTTP server,并调用 closeAllConnections() 后再 close(),避免网页仍可访问。卸载 HTAGS 预览文件会先停止预览服务,再删除 HTML/ 和对应 Git exclude 项。


0.3.3 菜单顺序恢复

HTAGS 右键菜单显示顺序恢复为:初始化、更新、重建、预览、停止预览、卸载预览文件。运行时抢占逻辑保留:执行停止或卸载时会立即中断正在运行的 HTAGS 初始化/更新/重建任务。


0.3.2 HTAGS 停止/卸载优先

资源管理器 HTAGS 右键菜单中,“停止 HTAGS 预览”和“卸载 HTAGS 预览文件”已提升到初始化、更新、重建和预览之前,方便优先拦截旧预览服务。

初始化、更新、重建和启动预览前都会先停止同端口/同目录旧预览服务,避免旧 HTTP server 占用端口、串台或继续服务错误的 HTML/ 根目录。


0.3.1 HTAGS 子目录预览修复

HTAGS 预览严格使用当前选中文件夹下的 HTML/,不会上升到项目根或祖先目录。启动预览前会先停止同端口/同目录的旧预览服务,避免串台。

生成、更新、重建和预览 HTAGS 时会把当前选中文件夹对应的 HTML/ 写入 Git 仓库的 .git/info/exclude。例如对子目录 a/b 操作时写入 /a/b/HTML/。

卸载 HTAGS 预览文件时会删除当前选中文件夹的 HTML/,并同步移除对应 Git 排除项;即使 HTML/ 已经被手动删除,也会尝试清理对应排除项。


0.3.0 Mermaid 主渲染与右侧小浮层

图表显示恢复 Mermaid 主渲染,不再用纯 SVG 绕开。生成逻辑继续使用 sanitizeId + escapeString 分离节点 ID 与显示文本,参考 Visor 的处理方式。

右侧工具入口改为小按钮/小浮层:默认仅显示一个小的 ☰ 按钮,点击后展开小型纵向工具面板,再次点击收起。按钮事件在图表渲染前绑定,Mermaid 渲染失败也不影响工具按钮展开。


0.2.9 短描述更新

插件扩展列表中显示在插件名下方的 description 已更新,包含完全离线函数级调用图、函数体流程图、独立窗口、节点跳转、路径高亮、Pin 固定和图表导出等新功能。

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft