Bram Moolenaar | 8c8de83 | 2008-06-24 22:58:06 +0000 | [diff] [blame] | 1 | " Vim syntax file |
| 2 | " Language: git commit file |
| 3 | " Maintainer: Tim Pope <vimNOSPAM@tpope.info> |
| 4 | " Filenames: *.git/COMMIT_EDITMSG |
| 5 | " Last Change: 2008 Apr 09 |
| 6 | |
| 7 | if exists("b:current_syntax") |
| 8 | finish |
| 9 | endif |
| 10 | |
| 11 | syn case match |
| 12 | syn sync minlines=50 |
| 13 | |
| 14 | if has("spell") |
| 15 | syn spell toplevel |
| 16 | endif |
| 17 | |
| 18 | syn include @gitcommitDiff syntax/diff.vim |
| 19 | syn region gitcommitDiff start=/\%(^diff --git \)\@=/ end=/^$\|^#\@=/ contains=@gitcommitDiff |
| 20 | |
| 21 | syn match gitcommitFirstLine "\%^[^#].*" nextgroup=gitcommitBlank skipnl |
| 22 | syn match gitcommitSummary "^.\{0,50\}" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell |
| 23 | syn match gitcommitOverflow ".*" contained contains=@Spell |
| 24 | syn match gitcommitBlank "^[^#].*" contained contains=@Spell |
| 25 | syn match gitcommitComment "^#.*" |
| 26 | syn region gitcommitHead start=/^# / end=/^#$/ contained transparent |
| 27 | syn match gitcommitOnBranch "\%(^# \)\@<=On branch" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite |
| 28 | syn match gitcommitBranch "\S\+" contained |
| 29 | syn match gitcommitHeader "\%(^# \)\@<=.*:$" contained containedin=gitcommitComment |
| 30 | |
| 31 | syn region gitcommitUntracked start=/^# Untracked files:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitUntrackedFile fold |
| 32 | syn match gitcommitUntrackedFile "\t\@<=.*" contained |
| 33 | |
| 34 | syn region gitcommitDiscarded start=/^# Changed but not updated:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitDiscardedType fold |
| 35 | syn region gitcommitSelected start=/^# Changes to be committed:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitSelectedType fold |
| 36 | |
| 37 | syn match gitcommitDiscardedType "\t\@<=[a-z][a-z ]*[a-z]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitDiscardedFile skipwhite |
| 38 | syn match gitcommitSelectedType "\t\@<=[a-z][a-z ]*[a-z]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitSelectedFile skipwhite |
| 39 | syn match gitcommitDiscardedFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitDiscardedArrow |
| 40 | syn match gitcommitSelectedFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow |
| 41 | syn match gitcommitDiscardedArrow " -> " contained nextgroup=gitcommitDiscardedFile |
| 42 | syn match gitcommitSelectedArrow " -> " contained nextgroup=gitcommitSelectedFile |
| 43 | |
| 44 | hi def link gitcommitSummary Keyword |
| 45 | hi def link gitcommitComment Comment |
| 46 | hi def link gitcommitUntracked gitcommitComment |
| 47 | hi def link gitcommitDiscarded gitcommitComment |
| 48 | hi def link gitcommitSelected gitcommitComment |
| 49 | hi def link gitcommitOnBranch Comment |
| 50 | hi def link gitcommitBranch Special |
| 51 | hi def link gitcommitDiscardedType gitcommitType |
| 52 | hi def link gitcommitSelectedType gitcommitType |
| 53 | hi def link gitcommitType Type |
| 54 | hi def link gitcommitHeader PreProc |
| 55 | hi def link gitcommitUntrackedFile gitcommitFile |
| 56 | hi def link gitcommitDiscardedFile gitcommitFile |
| 57 | hi def link gitcommitSelectedFile gitcommitFile |
| 58 | hi def link gitcommitFile Constant |
| 59 | hi def link gitcommitDiscardedArrow gitcommitArrow |
| 60 | hi def link gitcommitSelectedArrow gitcommitArrow |
| 61 | hi def link gitcommitArrow gitcommitComment |
| 62 | "hi def link gitcommitOverflow Error |
| 63 | hi def link gitcommitBlank Error |
| 64 | |
| 65 | let b:current_syntax = "gitcommit" |