Add tree-sitter-git-diff (#1373)
* add submodule on tree-sitter-git-diff * add git-diff highlights * inject git-diff into git-commit * update tree-sitter-git-commit with fix for bad diff case * add git-diff to language support docs * include-children in diff injections This ensures that children nodes of $.message are included in the injection, such as $.user or issue/pr numbers. Without this change, diffs containing '#' or '@' characters can trip up the injection and be parsed separately. See https://github.com/helix-editor/helix/pull/1373#issuecomment-1001215629 * set diff language's scope as source.diff
This commit is contained in:
parent
49444f9c05
commit
bcf3808e97
8 changed files with 26 additions and 14 deletions
4
.gitmodules
vendored
4
.gitmodules
vendored
|
@ -174,3 +174,7 @@
|
|||
path = helix-syntax/languages/tree-sitter-git-commit
|
||||
url = https://github.com/the-mikedavis/tree-sitter-git-commit.git
|
||||
shallow = true
|
||||
[submodule "helix-syntax/languages/tree-sitter-git-diff"]
|
||||
path = helix-syntax/languages/tree-sitter-git-diff
|
||||
url = https://github.com/the-mikedavis/tree-sitter-git-diff.git
|
||||
shallow = true
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
| elixir | ✓ | | | `elixir-ls` |
|
||||
| fish | ✓ | ✓ | ✓ | |
|
||||
| git-commit | ✓ | | | |
|
||||
| git-diff | ✓ | | | |
|
||||
| glsl | ✓ | | ✓ | |
|
||||
| go | ✓ | ✓ | ✓ | `gopls` |
|
||||
| html | ✓ | | | |
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 5cd4776c86c82d9d6afdc8c73a47a08057aef618
|
||||
Subproject commit 066e395e1107df17183cf3ae4230f1a1406cc972
|
1
helix-syntax/languages/tree-sitter-git-diff
Submodule
1
helix-syntax/languages/tree-sitter-git-diff
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit c12e6ecb54485f764250556ffd7ccb18f8e2942b
|
|
@ -481,3 +481,12 @@ roots = []
|
|||
file-types = ["COMMIT_EDITMSG"]
|
||||
comment-token = "#"
|
||||
indent = { tab-width = 2, unit = " " }
|
||||
|
||||
[[language]]
|
||||
name = "git-diff"
|
||||
scope = "source.diff"
|
||||
roots = []
|
||||
file-types = ["diff"]
|
||||
injection-regex = "diff"
|
||||
comment-token = "#"
|
||||
indent = { tab-width = 2, unit = " " }
|
||||
|
|
|
@ -13,7 +13,3 @@
|
|||
|
||||
[":" "->"] @punctuation.delimeter
|
||||
(comment) @comment
|
||||
|
||||
; once we have diff injections, @comment should become @none
|
||||
((comment (scissors))
|
||||
(message)+ @comment)
|
||||
|
|
|
@ -1,12 +1,7 @@
|
|||
; once a diff grammar is available, we can inject diff highlighting into the
|
||||
; trailer after scissors (git commit --verbose)
|
||||
; see https://github.com/helix-editor/helix/pull/1338#issuecomment-1000013539
|
||||
;
|
||||
; ((comment (scissors))
|
||||
; (message) @injection.content
|
||||
; (#set! injection.language "diff"))
|
||||
|
||||
; ---
|
||||
((comment (scissors))
|
||||
(message) @injection.content
|
||||
(#set! injection.include-children)
|
||||
(#set! injection.language "diff"))
|
||||
|
||||
; once a rebase grammar is available, we can inject rebase highlighting into
|
||||
; interactive rebase summary sections like so:
|
||||
|
|
6
runtime/queries/git-diff/highlights.scm
Normal file
6
runtime/queries/git-diff/highlights.scm
Normal file
|
@ -0,0 +1,6 @@
|
|||
[(addition) (new_file)] @diff.plus
|
||||
[(deletion) (old_file)] @diff.minus
|
||||
|
||||
(commit) @constant
|
||||
(location) @attribute
|
||||
(command) @markup.bold
|
Loading…
Add table
Reference in a new issue