Skip to content

Release v0.1.0

Latest

Choose a tag to compare

@SWHL SWHL released this 16 Oct 02:36
· 1 commit to main since this release
995eef0

变更

  • 新增 CLI:抽取无编辑器依赖的 formatMarkdownText 纯文本入口,并提供支持单文件、目录和 glob 的 markdown-auto-space CLI。CLI 支持 --write、--check、--diff、JSON 配置文件、规则 / 排除项 / 单位配置;VS Code 与 CLI 共用格式化和保护逻辑。
  • 最低编辑器版本:最低支持版本提高至 VS Code v1.74.0(桌面版和 Web 版),与 package.json 的 engines.vscode: ^1.74.0 一致。
  • 可配置 Markdown 文件后缀:新增 markdownAutoSpace.fileExtensions,默认仍为 [".md"];可显式启用 .txt、.mdx、.qmd、.rmd 等后缀。保存事务、命令、诊断和 provider 共用配置;配置变化后即时重新注册 provider、刷新菜单及诊断。扩展改为启动完成后激活,以支持自定义文件后缀。
  • 收敛安装包内容:排除本地 .vscode 配置和 dist 下的手动测试文档。
  • 新增格式化预览:新增 Markdown Auto Space: Preview Changes 命令,通过 VS Code diff 展示最小范围编辑、总修改数和 MAS 规则命中数,确认后才应用变更。
  • 增强 Markdown 语法兼容性:支持引用块、嵌套列表、表格单元格、引用式链接和自动链接;新增跨行 HTML/HTML 注释、JSX/MDX、模板表达式及转义字符保护,并对未闭合行内代码、链接、引号和模板采用保守处理。实现继续使用轻量状态扫描,不引入 AST 运行时依赖。
  • MAS007 数字与单位扩展:支持负数、千分位、数字范围、复合单位、温度以及更多 SI/ 中文常用单位;同时明确版本号、产品型号和路径的保护边界。
  • 优化命令入口与反馈:移除使用场景有限的 Format Selection 命令,标题栏、右键菜单和命令面板统一只保留英文 Format Document,并为标题栏使用 VS Code 内置图标。右键菜单将命令放在修改 / 格式化区域,靠近 VS Code 内置的 Format Document。命令、设置描述和运行时提示统一使用英文。
  • 减少打扰性通知:无变化和格式化完成反馈改为状态栏短提示并记录输出日志;完成提示显示实际规则修改数量,而不是 TextEdit[] 数量。
  • 重构保存格式化流程:手动保存时通过 onWillSaveTextDocument 的 waitUntil 返回格式化编辑,由 VS Code 保存事务统一应用;保存事件不再额外调用 workspace.applyEdit,减少与其他 Markdown 格式化插件的竞争和重复编辑。
  • 格式化改用最小范围编辑:保存格式化和命令格式化只返回实际变化的 TextEdit[],不再用单条全文替换覆盖整个文档。编辑按原文位置排序、互不重叠,并限制在单行变化范围内,以减少光标、选区和撤销历史受到的影响。
  • 保留原始换行格式:格式化处理支持 LF, CRLF 及混合换行,不会因为空格规则改写换行符。

测试

  • 增加 MDX 手动保存、语言 ID 别名、菜单可见性、provider 注册范围与释放、空语言列表禁用测试。
  • 增加引用式链接、自动链接、表格 / 嵌套列表、多行 HTML, JSX/ 模板、转义字符和未闭合结构的格式化与诊断回归测试。
  • 增加多行、多处变化、无变化、CRLF、混合换行、行尾空白和制表符删除场景的编辑应用测试,验证返回的最小编辑重新应用后与格式化规则输出一致。
  • 增加诊断配置变更事件测试,覆盖相关配置触发刷新、关闭诊断清空集合及无关配置不触发刷新。

修复

  • MDX 代码保护:普通及跨行 {...} 表达式、嵌套花括号、字符串、注释、正则和 import / export 块不再被格式化或诊断;正文、最小编辑、规则统计和诊断共用保护范围,保留原始换行与诊断偏移。
  • 配置变化后立即刷新诊断:监听诊断开关、规则预设、规则、单位、语言列表和排除配置的变化,立即刷新已打开的已启用语言文档;移出语言列表或命中排除配置的文档会清除诊断。关闭诊断时取消待处理的刷新并清空诊断集合,使问题面板和编辑器波浪线立即消失。其他配置变化不会触发全量诊断刷新。
  • MAS007 自定义单位:支持通过 markdownAutoSpace.units.additional / include 追加单位,以及通过 exclude 排除默认单位;配置同时作用于正文和超链接文本的格式化与诊断,非法或重复值会被忽略。
  • 修复 YAML front matter 识别:仅将文档第一行的 --- 视为 front matter 起点;正文中的水平分隔线不再导致后续正文被跳过。未闭合的 front matter 采用保守策略,不修改或诊断其后的内容。
  • 完善围栏代码块识别:支持 ~~~ 和 3 个及以上反引号 / 波浪线围栏、语言标识、最多 3 个空格缩进及不同围栏长度;只有相同字符且长度不短于起始围栏的结束标记才会闭合代码块。未闭合围栏后的内容采用保守策略,不修改或诊断。