blob: 58573b45408d84e6392cc55afc9627c2a1062106 [file] [log] [blame]
Adrià Vilanova Martínez60b712e2024-01-30 01:49:53 +01001" jjdescription syntax file
2" Language: jjdescription file
3" Maintainer: Adrià Vilanova <me@avm99963.com>
4" Filenames: *.jjdescription
5" Source: Based on syntax/gitcommit.vim
Adrià Vilanova Martínezb94c5062024-10-26 11:27:57 +02006" Last Change: 2024 Oct 26
Adrià Vilanova Martínez60b712e2024-01-30 01:49:53 +01007
8if exists("b:current_syntax")
9 finish
10endif
11
12scriptencoding utf-8
13
14syn case match
15syn sync minlines=50
16syn sync linebreaks=1
17
18if has("spell")
19 syn spell toplevel
20endif
21
22if get(g:, 'jjdescription_summary_length') < 0
23 syn match jjdescriptionSummary "^.*$" contained containedin=jjdescriptionFirstLine nextgroup=jjdescriptionOverflow contains=@Spell
24elseif get(g:, 'jjdescription_summary_length', 1) > 0
25 exe 'syn match jjdescriptionSummary "^.*\%<' . (get(g:, 'jjdescription_summary_length', 50) + 1) . 'v." contained containedin=jjdescriptionFirstLine nextgroup=jjdescriptionOverflow contains=@Spell'
26endif
27syn match jjdescriptionOverflow ".*" contained contains=@Spell
28syn match jjdescriptionBlank "^.\+" contained contains=@Spell
29syn match jjdescriptionFirstLine "\%^.*" nextgroup=jjdescriptionBlank,jjdescriptionComment skipnl
30
31syn match jjdescriptionComment "^JJ: .*"
32
33syn match jjdescriptionHeader "\%(^JJ: \)\@<=\S.*:\%(\n^$\)\@!$" contained containedin=jjdescriptionComment
34
Adrià Vilanova Martínezb94c5062024-10-26 11:27:57 +020035" Sigils extracted from https://github.com/martinvonz/jj/blob/95283dd04f7047c48356de1addd3d59d35ec5bce/cli/src/diff_util.rs#L1542.
36syn match jjdescriptionType "\%(^JJ:\s\+\)\@<=[CRMAD]\ze " contained containedin=jjdescriptionComment nextgroup=jjdescriptionFile skipwhite
Adrià Vilanova Martínez60b712e2024-01-30 01:49:53 +010037syn match jjdescriptionFile ".*" contained
38
Adrià Vilanova Martínezb94c5062024-10-26 11:27:57 +020039syn region jjdescriptionSelected start=/^\z(^JJ: \)This commit contains the following changes:$/ end=/^\z1$\|^\z1\@!/ contains=jjdescriptionHeader,jjdescriptionSelectedType containedin=jjdescriptionComment contained transparent fold
Adrià Vilanova Martínez60b712e2024-01-30 01:49:53 +010040
Adrià Vilanova Martínezb94c5062024-10-26 11:27:57 +020041syn match jjdescriptionSelectedType "\%(^JJ:\s\+\)\@<=[CRMAD]\ze " contained nextgroup=jjdescriptionSelectedFile skipwhite
Adrià Vilanova Martínez60b712e2024-01-30 01:49:53 +010042syn match jjdescriptionSelectedFile ".*" contained
43
44hi def link jjdescriptionSummary Keyword
45hi def link jjdescriptionComment Comment
46hi def link jjdescriptionSelectedType jjdescriptionType
47hi def link jjdescriptionType Type
48hi def link jjdescriptionHeader PreProc
49hi def link jjdescriptionSelectedFile jjdescriptionFile
50hi def link jjdescriptionFile Constant
51hi def link jjdescriptionBlank Error
52
53let b:current_syntax = "jjdescription"