Skip to content

Commit ebdc848

Browse files
tidefieldMrSubidubi
authored andcommitted
Fix diff highlights (#38384)
Per #23371 (reply in thread), the issue is not new and I don't know how to solve the problem more holistically yet. All of the native themes don't have spec for `@diff.plus` and `@diff.minus` leaving addition and deletion not being highlighted. For diff file, the most valuable highlighting comes from exactly what we're missing. Hence, I think this is worth fixing. Perhaps, the ideal fix would be standardizing and documenting captures such as `@diff.plus` and `@diff.minus` on https://zed.dev/docs/extensions/languages#syntax-highlighting for theme writers to adopt. But the existing list of captures seems to be language-agnostic so I'm not sure if that's the best way forward. Per tree-sitter-grammars/tree-sitter-diff#18 (comment), `tree-sitter-diff`'s author prefers using `@keyword` and `@string` so that `tree-sitter highlight` can work out of the box. So it seems to be an ok choice for Zed. Another approach is just adding `@diff.plus` and `@diff.minus` to the native themes. Let me know if I should pursue this instead. Before <img width="668" height="328" alt="Screenshot 2025-09-18 at 11 16 14 AM" src="https://github.com/user-attachments/assets/d9a5b3b5-b9ef-4e74-883f-831630fb431e" /> After <img width="1011" height="404" alt="Screenshot 2025-09-18 at 12 11 15 PM" src="https://github.com/user-attachments/assets/9cf453c0-30df-4d17-99e9-f2297865f12a" /> <img width="915" height="448" alt="Screenshot 2025-09-18 at 12 12 14 PM" src="https://github.com/user-attachments/assets/9e7438a6-9009-4136-b841-1f8e1356bc9b" /> Closes zed-industries/extensions#490 Release Notes: - Fixed highlighting for addition and deletion for diff language --------- Co-authored-by: MrSubidubi <finn@zed.dev>
1 parent a08196b commit ebdc848

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

crates/languages/src/diff/highlights.scm

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
[
44
(addition)
55
(new_file)
6-
] @diff.plus
6+
] @string
7+
;; TODO: This should eventually be `@diff.plus` with a fallback of `@string`
78

89
[
910
(deletion)
1011
(old_file)
11-
] @diff.minus
12+
] @keyword
13+
;; TODO: This should eventually be `@diff.minus` with a fallback of `@keyword`
1214

1315
(commit) @constant
1416

@@ -18,8 +20,6 @@
1820
"diff" @function
1921
(argument) @variable.parameter)
2022

21-
(filename) @string.special.path
22-
2323
(mode) @number
2424

2525
([

0 commit comments

Comments
 (0)