Mercurial > vim
annotate runtime/syntax/gitcommit.vim @ 33485:d765c6869d22
Added tag v9.0.1993 for changeset 66c2576530b3392b9a6f01ddadf6b0192b18987a
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 05 Oct 2023 22:30:05 +0200 |
parents | 3e661b0cf500 |
children | 9828ad8d79bd |
rev | line source |
---|---|
1624 | 1 " Vim syntax file |
2 " Language: git commit file | |
2034 | 3 " Maintainer: Tim Pope <vimNOSPAM@tpope.org> |
1624 | 4 " Filenames: *.git/COMMIT_EDITMSG |
27036 | 5 " Last Change: 2022 Jan 05 |
1624 | 6 |
7 if exists("b:current_syntax") | |
2202 | 8 finish |
1624 | 9 endif |
10 | |
27036 | 11 scriptencoding utf-8 |
12 | |
1624 | 13 syn case match |
14 syn sync minlines=50 | |
27036 | 15 syn sync linebreaks=1 |
1624 | 16 |
17 if has("spell") | |
2202 | 18 syn spell toplevel |
1624 | 19 endif |
20 | |
21 syn include @gitcommitDiff syntax/diff.vim | |
27036 | 22 syn region gitcommitDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^\%(diff --\|$\|@@\@!\|[^[:alnum:]\ +-]\S\@!\)\@=/ fold contains=@gitcommitDiff |
1624 | 23 |
18818 | 24 syn match gitcommitSummary "^.*\%<51v." contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell |
1624 | 25 syn match gitcommitOverflow ".*" contained contains=@Spell |
27036 | 26 syn match gitcommitBlank "^.\+" contained contains=@Spell |
27 syn match gitcommitFirstLine "\%^.*" nextgroup=gitcommitBlank,gitcommitComment skipnl | |
18818 | 28 |
27036 | 29 let s:scissors = 0 |
30 let s:l = search('^[#;@!$%^&|:] -\{24,\} >8 -\{24,\}$', 'cnW', '', 100) | |
31 if s:l == 0 | |
32 let s:l = line('$') | |
33 elseif getline(s:l)[0] !=# getline(s:l - 1)[0] | |
34 let s:scissors = 1 | |
35 endif | |
36 let s:comment = escape((matchstr(getline(s:l), '^[#;@!$%^&|:]\S\@!') . '#')[0], '^$.*[]~\"/') | |
37 | |
38 if s:scissors | |
39 let s:comment .= ' -\{24,\} >8 -\{24,\}$' | |
40 exe 'syn region gitcommitComment start="^' . s:comment . '" end="\%$" contains=gitcommitDiff' | |
18818 | 41 else |
27036 | 42 exe 'syn match gitcommitComment "^' . s:comment . '.*"' |
18818 | 43 endif |
27036 | 44 exe 'syn match gitcommitTrailers "\n\@<=\n\%([[:alnum:]-]\+\s*:.*\|(cherry picked from commit .*\)\%(\n\s.*\|\n[[:alnum:]-]\+\s*:.*\|\n(cherry picked from commit .*\)*\%(\n\n*\%(' . s:comment . '\)\|\n*\%$\)\@="' |
45 | |
46 unlet s:l s:comment s:scissors | |
18818 | 47 |
27036 | 48 syn match gitcommitTrailerToken "^[[:alnum:]-]\+\s*:" contained containedin=gitcommitTrailers |
49 | |
50 syn match gitcommitHash "\<\x\{40,}\>" contains=@NoSpell display | |
51 syn match gitcommitOnBranch "\%(^. \)\@<=On branch" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite | |
52 syn match gitcommitOnBranch "\%(^. \)\@<=Your branch .\{-\} '" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite | |
3465 | 53 syn match gitcommitBranch "[^ ']\+" contained |
27036 | 54 syn match gitcommitNoBranch "\%(^. \)\@<=Not currently on any branch." contained containedin=gitcommitComment |
55 syn match gitcommitHeader "\%(^. \)\@<=\S.*[::]\%(\n^$\)\@!$" contained containedin=gitcommitComment | |
56 syn region gitcommitAuthor matchgroup=gitCommitHeader start=/\%(^. \)\@<=\%(Author\|Committer\|Date\):/ end=/$/ keepend oneline contained containedin=gitcommitComment transparent | |
57 syn match gitcommitHeader "\%(^. \)\@<=commit\%( \x\{40,\}$\)\@=" contained containedin=gitcommitComment nextgroup=gitcommitHash skipwhite | |
58 syn match gitcommitNoChanges "\%(^. \)\@<=No changes$" contained containedin=gitcommitComment | |
1624 | 59 |
27036 | 60 syn match gitcommitType "\%(^.\t\)\@<=[^[:punct:][:space:]][^/::]*[^[:punct:][:space:]][::]\ze "he=e-1 contained containedin=gitcommitComment nextgroup=gitcommitFile skipwhite |
61 syn match gitcommitFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitArrow | |
62 syn match gitcommitArrow " -> " contained nextgroup=gitcommitFile | |
63 syn match gitcommitUntrackedFile "\%(^.\t\)\@<=[^::/]*\%(/.*\)\=$" contained containedin=gitcommitComment | |
1624 | 64 |
27036 | 65 syn region gitcommitUntracked start=/^\z(.\) Untracked files:$/ end=/^\z1\=$\|^\z1\@!/ contains=gitcommitHeader containedin=gitcommitComment containedin=gitcommitComment contained transparent fold |
66 syn region gitcommitDiscarded start=/^\z(.\) Change\%(s not staged for commit\|d but not updated\):$/ end=/^\z1\=$\|^\z1\@!/ contains=gitcommitHeader,gitcommitDiscardedType containedin=gitcommitComment containedin=gitcommitComment contained transparent fold | |
67 syn region gitcommitSelected start=/^\z(.\) Changes to be committed:$/ end=/^\z1$\|^\z1\@!/ contains=gitcommitHeader,gitcommitSelectedType containedin=gitcommitComment containedin=gitcommitComment contained transparent fold | |
68 syn region gitcommitUnmerged start=/^\z(.\) Unmerged paths:$/ end=/^\z1\=$\|^\z1\@!/ contains=gitcommitHeader,gitcommitUnmergedType containedin=gitcommitComment containedin=gitcommitComment contained transparent fold | |
1624 | 69 |
27036 | 70 syn match gitcommitUntrackedFile "\%(^.\t\)\@<=.*" contained containedin=gitcommitUntracked |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
4681
diff
changeset
|
71 |
27036 | 72 syn match gitcommitDiscardedType "\%(^.\t\)\@<=[^[:punct:][:space:]][^/::]*[^[:punct:][:space:]][::]\ze "he=e-1 contained nextgroup=gitcommitDiscardedFile skipwhite |
73 syn match gitcommitSelectedType "\%(^.\t\)\@<=[^[:punct:][:space:]][^/::]*[^[:punct:][:space:]][::]\ze "he=e-1 contained nextgroup=gitcommitSelectedFile skipwhite | |
74 syn match gitcommitUnmergedType "\%(^.\t\)\@<=[^[:punct:][:space:]][^/::]*[^[:punct:][:space:]][::]\ze "he=e-1 contained nextgroup=gitcommitUnmergedFile skipwhite | |
75 syn match gitcommitDiscardedFile "\S.\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitDiscardedArrow | |
76 syn match gitcommitSelectedFile "\S.\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow | |
77 syn match gitcommitUnmergedFile "\S.\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitUnmergedArrow | |
1624 | 78 syn match gitcommitDiscardedArrow " -> " contained nextgroup=gitcommitDiscardedFile |
79 syn match gitcommitSelectedArrow " -> " contained nextgroup=gitcommitSelectedFile | |
27036 | 80 syn match gitcommitUnmergedArrow " -> " contained nextgroup=gitcommitUnmergedFile |
1624 | 81 |
82 hi def link gitcommitSummary Keyword | |
27036 | 83 hi def link gitcommitTrailerToken Label |
1624 | 84 hi def link gitcommitComment Comment |
27036 | 85 hi def link gitcommitHash Identifier |
1624 | 86 hi def link gitcommitOnBranch Comment |
87 hi def link gitcommitBranch Special | |
2034 | 88 hi def link gitcommitNoBranch gitCommitBranch |
1624 | 89 hi def link gitcommitDiscardedType gitcommitType |
90 hi def link gitcommitSelectedType gitcommitType | |
2034 | 91 hi def link gitcommitUnmergedType gitcommitType |
1624 | 92 hi def link gitcommitType Type |
2034 | 93 hi def link gitcommitNoChanges gitcommitHeader |
1624 | 94 hi def link gitcommitHeader PreProc |
95 hi def link gitcommitUntrackedFile gitcommitFile | |
96 hi def link gitcommitDiscardedFile gitcommitFile | |
97 hi def link gitcommitSelectedFile gitcommitFile | |
2034 | 98 hi def link gitcommitUnmergedFile gitcommitFile |
1624 | 99 hi def link gitcommitFile Constant |
100 hi def link gitcommitDiscardedArrow gitcommitArrow | |
101 hi def link gitcommitSelectedArrow gitcommitArrow | |
2034 | 102 hi def link gitcommitUnmergedArrow gitcommitArrow |
1624 | 103 hi def link gitcommitArrow gitcommitComment |
104 "hi def link gitcommitOverflow Error | |
105 hi def link gitcommitBlank Error | |
106 | |
107 let b:current_syntax = "gitcommit" |