Skip to content

fix(windows): 修复差异视图中 pom.xml 因重叠高亮导致文字错乱 - #473

Merged
1lck merged 2 commits into
1lck:previewfrom
Rangsh:fix/428-windows-pom-xml-diff-format
Sep 4, 2026
Merged

fix(windows): 修复差异视图中 pom.xml 因重叠高亮导致文字错乱#473
1lck merged 2 commits into
1lck:previewfrom
Rangsh:fix/428-windows-pom-xml-diff-format

Conversation

@Rangsh

@Rangsh Rangsh commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Summary

  • 修复 Windows 差异视图中 pom.xml(及其他嵌套 XML)因语法高亮 token 重叠而被重复切片渲染,导致文字错乱/重影的问题。
  • 对齐 HTML / macOS 的标签向高亮策略:不再捕获会跨子元素的 XML content 节点。
  • diff 行渲染优先保留更窄的 token,并将跨行 token 裁剪到当前行,避免切片拼接重复字符。

Fixes #428

改动说明

  1. windows/tauri/public/tree-sitter/parsers/xml/highlights.scm
    移除 (content) @string。该捕获在 Maven pom.xml 这类嵌套结构中会生成跨多行、覆盖子标签的宽范围 token。

  2. git-diff-line.tsx
    渲染高亮内容前解析重叠 token:优先保留更窄、更具体的捕获,再按列顺序拼接,保证可见文本与源行一致。

  3. use-git-diff-highlight.ts
    将跨行 token 映射到 diff 行时按当前行边界裁剪,避免把首尾行的 column 误用到中间行。

Test plan

  • bun test src/features/git/components/diff/git-diff-line.test.tsx src/features/git/hooks/use-git-diff-highlight.test.ts
  • ./.agents/skills/write-stable-tests/scripts/verify-test-stability.ps1

XML 高亮不再捕获跨子元素的 content 节点,diff 渲染优先保留更窄的 token,并将跨行 token 裁剪到当前行,避免切片拼接重复字符。Fixes 1lck#428

Co-authored-by: Cursor <cursoragent@cursor.com>
@Rangsh
Rangsh requested a review from 1lck as a code owner September 4, 2026 12:05
测试中改用全局正则替换解码 HTML 实体,避免当前 TS lib 不支持 String.replaceAll。

Co-authored-by: Cursor <cursoragent@cursor.com>
@1lck
1lck merged commit 60f97e5 into 1lck:preview Sep 4, 2026
15 checks passed
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.

2 participants