FishTools 是面向 Itasca PFC 数据文件的 VS Code 语言扩展。它为 fish 代码提供随编辑器主题变化的高亮、导航和基础补全,不需要联网或配置颜色。
源码、完整说明与问题反馈:GitHub — FishTools。
安装与开始使用
从 VS Code 扩展市场安装后,打开 .fis、.fish、.p2dat、.p3dat 或 .dat 文件即可自动启用。也可以在右下角语言模式中手动选择 fish。
本扩展包可作为 .vsix 离线安装;运行时只含编译后的扩展代码、语法文件、语言配置和图标,不依赖开发环境中的 node_modules。
版本选择
在设置中搜索 fishtools.docsVersion,选择目标 PFC 版本:
- PFC 6.0:正式支持,使用 PFC 6.0 的命令和 fish 内置接口词典。
- PFC 7.0:已测试预览,使用独立词典;适合试用,但仍建议在实际工程中确认结果。
切换版本后,高亮、补全和内置函数名称提示都会使用对应的本地词典。FLAC3D、3DEC 与其他 Itasca 产品暂不支持。
编辑功能
主题跟随高亮
扩展只识别语言成分的类别,不指定任何颜色,因此浅色、深色和自定义 VS Code 主题都会决定最终配色。
| 类别 |
示例 |
| PFC 命令和参数 |
model、ball、call、radius |
| fish 语句和块 |
define、local、if、loop、endloop |
| 内置接口 |
ball.mass、contact.list、math.cos |
| 用户函数和变量 |
define settle、@settle、local stress |
| 字面量和注释 |
3.5e-4、字符串、以 ; 开始的注释 |
科学计数法会作为一个完整数值处理;注释中的括号和方括号保持注释色。call "file.fis" 中的文件名被当作一个整体,不会出现常驻下划线。
导航、结构与补全
- 使用 F12 或 Cmd/Ctrl+单击跳转到当前文件或工作区中的
def / define 函数;@函数名 也可跳转。
call "file.fis" 可跳转到存在的本地数据文件;目标不存在时不会创建无效链接。
- 大纲显示自定义函数和
global 变量;引用查找会优先扫描当前文档,再受限扫描工作区。
if、loop、command 等块结构可折叠和匹配,命令面板提供跳转到配对块的命令。
- Ctrl+Space 提供命令、内置接口、控制语句、已定义函数与基础函数骨架补全。
性能与稳定性
语义高亮按文档版本缓存;切回未改动标签不会重新分析。工作区函数索引只在真正使用跳转、引用或补全时读取,且对文件数量、文件大小、行长度和令牌数均有限制。超过 5,000 行的文件自动回退到轻量语法高亮,以避免长文件或复杂主题造成卡顿。
局限性
- 仅支持 PFC 6.0 和已测试预览的 PFC 7.0;不能将其用于 FLAC3D、3DEC 或其他版本的兼容性保证。
- 不提供诊断、格式化、调试、重构、系统函数源码或完整签名查询。
- 复杂命令参数不会完整解析;少数同名词在特定位置可能按命令类别显示。
- 这不是完整语言服务器。补全与导航是面向 fish 编辑的轻量辅助,不能取代官方文档或运行时验证。
开发与发布
以下命令均在包含 package.json 的 FishTools 项目根目录运行:
npm ci # 按 package-lock.json 安装开发依赖
npm run compile # 将 TypeScript 源码编译到 out/
npm run package # 编译并在项目根目录生成 VSIX
发布前应先更新 package.json 的版本号,并在完整的本地开发副本中完成测试和人工验收。打包不会自动发布,仍需由开发者明确上传到 GitHub 或 VS Code Marketplace。