Skip to content

feat(ui): 只读 SQL / DDL 补语法高亮 (#9) - #10

Merged
SpringHgui merged 4 commits into
masterfrom
feat/issue9-ddl-syntax-highlight
Oct 29, 2026
Merged

SpringHgui merged 4 commits into
masterfrom
feat/issue9-ddl-syntax-highlight

Conversation

@SpringHgui

Copy link
Copy Markdown
Owner

Closes #9

详情面板的 DDL 页、建库 / 修改库对话框的脚本预览、结构同步的 DDL 比较与部署脚本一直是裸文本,而查询编辑器和表设计器「SQL 预览」早就有高亮——同一屏两种待遇。

改动:

  • 新增 lib/theme/sql_highlight.dart:只读区走同步 TextSpan 高亮(re_highlight 的 TextSpanRenderer),首帧即彩色,不引入编辑器那条 isolate 回帧的「慢半拍」;解析异常、或解析结果掉了字符,一律整段退回裸文本(宁可不上色,也不能让 DDL 少一截)。
  • 明暗配色表原本抄了三份(query_page / table_designer_page / routine_design_page,后者的公开名还被四个设计页 import 借用),收成一处,六个编辑器调用点统一走 sqlEditorTheme。
  • 结构同步的「消息日志」不是 SQL,保持裸文本;各处的空态提示文案也不进高亮。
  • 只读区字体统一为 Consolas + monospace 回落(详情面板 DDL 页原来是 monospace)。

Test plan

  • 新增 test/sql_highlight_test.dart(离线):文本无损、关键字 / 注释确实上色、明暗各取各表、字号由根 span 兜底、memo 命中与作废、配色表 key 一致
  • 既有 4 个用例改 findRichText: true(Text → Text.rich 后默认 finder 看不见富文本)
  • 本机 PATH 指向的 Flutter 3.47 SDK 目录已不存在,无法本地跑 analyze / test —— 本次以 CI(ubuntu + Flutter 3.47.0)为准
  • 人工回归:选中库 / 表看详情面板 DDL 页;建库与修改库的「SQL 预览」;结构同步的 DDL 比较页与部署脚本页;明暗两个主题各看一遍

hanbg added 4 commits October 29, 2026 09:49
详情面板的 DDL 页、建库 / 修改库对话框的脚本预览、结构同步的 DDL 比较与部署脚本
一直是裸文本,而查询编辑器和表设计器「SQL 预览」早就有高亮 —— 同一屏两种待遇。

- 新增 lib/theme/sql_highlight.dart:只读区走同步 TextSpan 高亮
  (re_highlight 的 TextSpanRenderer),首帧即彩色,不引入编辑器那条
  isolate 回帧的「慢半拍」;解析异常或结果掉了字符一律退回裸文本。
- 明暗配色表原本抄了三份(query_page / table_designer_page /
  routine_design_page,后者的公开名还被四个设计页 import),收成一处,
  六个编辑器调用点统一走 sqlEditorTheme。
- 结构同步的「消息日志」不是 SQL,保持裸文本。
- 相应地,断言这些区域文本的用例改 findRichText: true。
CI 的 flutter analyze 报 unnecessary_non_null_assertion:showEmpty 的定义里
已含 emptyHint != null,局部变量的流分析已经把参数提升成非空了。
「命中的子 span 不带字号」这条把兜底文本也算进去了:re_highlight 的
TextSpanRenderer 给没命中 scope 的片段直接挂 base 样式(本来就带字号),
于是断言必红。改成只看样式不等于 base 的那些 span。
Text.rich → SelectableText.rich:整段复制走右上角按钮,想只取一列名 /
一段定义时得能就地划选(建库改库的脚本预览、结构同步的脚本区本来就是这样)。
复制按钮不动。用例里按内容定位那条 SelectableText,顺带钉住 selectionEnabled。
@SpringHgui
SpringHgui force-pushed the feat/issue9-ddl-syntax-highlight branch from 7056500 to e0535f8 Compare October 29, 2026 03:43
@SpringHgui
SpringHgui merged commit 87fe8ca into master Oct 29, 2026
1 check passed
@SpringHgui
SpringHgui deleted the feat/issue9-ddl-syntax-highlight branch October 29, 2026 07:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DDL能不能加个语法高亮

1 participant