VS Code 扩展,为 FlyThings 框架的 .fv 文件提供语法高亮、格式化、事件函数导航和自动创建。
功能
语法高亮
.fv 文件继承 VS Code HTML 语法高亮,支持:
- HTML 元素和属性
- CSS 内联样式
- 内嵌 JavaScript / TypeScript
事件函数导航
按住 Ctrl 键悬停在事件函数名上,会显示悬浮框:
- 显示该事件的类型描述和对应的 C++ 函数签名
- 若函数已实现,显示完整函数体,末尾显示可点击的文件名:行号链接
- 若函数未实现,显示
[创建函数] 链接
Ctrl + 左键点击可直接跳转到与 .fv 同目录同名 .cpp 中的函数实现。
自动创建函数 Stub
对于 .fv 中声明但尚未实现的事件,悬停后点击 [创建函数] 链接,将自动在与 .fv 同目录同名的 .cpp 文件中插入函数骨架(FV_CLASS_END 之前)。
格式化
在 .fv 文件中按 Shift+Alt+F(或右键「格式化文档」;也可开 editor.formatOnSave)即可格式化。
只重排行首缩进,不动其它任何字符——不改属性引号、不折行、不增删标签、不重排文本,所以模板文本、{{表达式}} 与 <style> / <api> 块内容都不会被改写:
- 标签按嵌套深度缩进,一层一个单位(跟随编辑器的
tabSize / insertTabs 设置)
- 结束标签与其块首对齐
- 跨行起始标签的属性续行与首个属性对齐
<style> 块内按 CSS 花括号深度缩进(规则与 <style> 标签同列)
- 多行
<!-- --> 与 /* */ 注释整体随宿主深度平移,块内相对排版原样保留
若同时装了其它格式化器(如 Prettier)并设了全局默认,需要显式指定本扩展:
// settings.json
"[fv]": { "editor.defaultFormatter": "flythings.flythings-support" }
支持的事件属性
| 事件 |
描述 |
生成签名 |
@click |
按钮点击事件 |
void onXxx() |
@change |
值变化事件 |
void onXxx(int idx) |
@page-change |
页面切换事件 |
void onXxx(int idx) |
@long-click |
长按事件 |
void onXxx() |
@obtain |
列表项获取事件 |
void onXxx(ZKListView::ZKListItem* item, int idx) |
@count |
列表项查询数量事件 |
int onXxx() |
配置
| 设置 |
默认值 |
说明 |
flythings-support.projectRoots |
[] |
手动指定项目根目录(为空时自动检测) |
项目结构约定
projectRoot/
├── fsc.json ← 项目清单(根目录探测标记之一)
└── app/
├── pages/
│ └── login/
│ ├── index.fv ← 事件声明
│ └── index.cpp ← 事件实现(同目录同名)
└── components/
└── ant/
├── Switch.fv
└── Switch.cpp
- 项目根探测:向上查找
fsc.json,或 app/pages / app/components 目录。
- 只有
app/pages/ 与 app/components/ 下的 .fv 参与事件扫描。
- 逻辑函数需定义在
FV_CLASS_BEGIN 和 FV_CLASS_END 之间。
可视化设计器
打开尚未打开的 .fv 文件时,默认进入可视化设计器。可用组件库、画布、属性面板和页面大纲编辑界面,并通过标题栏的 源码 / 编辑器 或 Alt+Q 在源码与画布之间切换。
- 资源管理器中右键文件夹,选择 新建 FV 文件…,或在命令面板执行该命令。
Ctrl+W(macOS:Cmd+W)关闭当前 FV 页面。
Ctrl+S(macOS:Cmd+S)保存当前修改。
相关设置:
| 设置 |
默认值 |
说明 |
fv.autoOpenDesigner |
true |
打开尚未打开的 .fv 时进入设计器;关闭后默认打开源码视图 |
fv.hideWorkbenchBreadcrumbs |
true |
隐藏当前工作区的 VS Code 路径栏(影响该窗口所有编辑器) |
许可
MIT