diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2013-09-12 17:33:47 +0200 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2013-09-12 17:33:47 +0200 |
commit | 3bd65161236bf5344619861fbe18b30f5bfd1a23 (patch) | |
tree | 7ecdb8efb1f3ef4a290d82e4000d2ff52943308e /syntax | |
parent | 5bc380150aee647d26a5a538ed855e9e82dcc7f7 (diff) | |
download | vim-polyglot-3bd65161236bf5344619861fbe18b30f5bfd1a23.tar.gz vim-polyglot-3bd65161236bf5344619861fbe18b30f5bfd1a23.zip |
Add git support by tpope-git
Diffstat (limited to '')
-rw-r--r-- | syntax/git.vim | 78 | ||||
-rw-r--r-- | syntax/gitcommit.vim | 83 | ||||
-rw-r--r-- | syntax/gitconfig.vim | 38 | ||||
-rw-r--r-- | syntax/gitrebase.vim | 38 | ||||
-rw-r--r-- | syntax/gitsendemail.vim | 19 |
5 files changed, 256 insertions, 0 deletions
diff --git a/syntax/git.vim b/syntax/git.vim new file mode 100644 index 00000000..48264c7b --- /dev/null +++ b/syntax/git.vim @@ -0,0 +1,78 @@ +" Vim syntax file +" Language: generic git output +" Maintainer: Tim Pope <vimNOSPAM@tpope.org> +" Last Change: 2010 May 21 + +if exists("b:current_syntax") + finish +endif + +syn case match +syn sync minlines=50 + +syn include @gitDiff syntax/diff.vim + +syn region gitHead start=/\%^/ end=/^$/ +syn region gitHead start=/\%(^commit \x\{40\}\%(\s*(.*)\)\=$\)\@=/ end=/^$/ + +" For git reflog and git show ...^{tree}, avoid sync issues +syn match gitHead /^\d\{6\} \%(\w\{4} \)\=\x\{40\}\%( [0-3]\)\=\t.*/ +syn match gitHead /^\x\{40\} \x\{40}\t.*/ + +syn region gitDiff start=/^\%(diff --git \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff fold +syn region gitDiff start=/^\%(@@ -\)\@=/ end=/^\%(diff --\%(git\|cc\|combined\) \|$\)\@=/ contains=@gitDiff + +syn region gitDiffMerge start=/^\%(diff --\%(cc\|combined\) \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff +syn region gitDiffMerge start=/^\%(@@@@* -\)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff +syn match gitDiffAdded "^ \++.*" contained containedin=gitDiffMerge +syn match gitDiffRemoved "^ \+-.*" contained containedin=gitDiffMerge + +syn match gitKeyword /^\%(object\|type\|tag\|commit\|tree\|parent\|encoding\)\>/ contained containedin=gitHead nextgroup=gitHash,gitType skipwhite +syn match gitKeyword /^\%(tag\>\|ref:\)/ contained containedin=gitHead nextgroup=gitReference skipwhite +syn match gitKeyword /^Merge:/ contained containedin=gitHead nextgroup=gitHashAbbrev skipwhite +syn match gitMode /^\d\{6\}/ contained containedin=gitHead nextgroup=gitType,gitHash skipwhite +syn match gitIdentityKeyword /^\%(author\|committer\|tagger\)\>/ contained containedin=gitHead nextgroup=gitIdentity skipwhite +syn match gitIdentityHeader /^\%(Author\|Commit\|Tagger\):/ contained containedin=gitHead nextgroup=gitIdentity skipwhite +syn match gitDateHeader /^\%(AuthorDate\|CommitDate\|Date\):/ contained containedin=gitHead nextgroup=gitDate skipwhite + +syn match gitReflogHeader /^Reflog:/ contained containedin=gitHead nextgroup=gitReflogMiddle skipwhite +syn match gitReflogHeader /^Reflog message:/ contained containedin=gitHead skipwhite +syn match gitReflogMiddle /\S\+@{\d\+} (/he=e-2 nextgroup=gitIdentity + +syn match gitDate /\<\u\l\l \u\l\l \d\=\d \d\d:\d\d:\d\d \d\d\d\d [+-]\d\d\d\d/ contained +syn match gitDate /-\=\d\+ [+-]\d\d\d\d\>/ contained +syn match gitDate /\<\d\+ \l\+ ago\>/ contained +syn match gitType /\<\%(tag\|commit\|tree\|blob\)\>/ contained nextgroup=gitHash skipwhite +syn match gitStage /\<\d\t\@=/ contained +syn match gitReference /\S\+\S\@!/ contained +syn match gitHash /\<\x\{40\}\>/ contained nextgroup=gitIdentity,gitStage,gitHash skipwhite +syn match gitHash /^\<\x\{40\}\>/ containedin=gitHead contained nextgroup=gitHash skipwhite +syn match gitHashAbbrev /\<\x\{4,40\}\>/ contained nextgroup=gitHashAbbrev skipwhite +syn match gitHashAbbrev /\<\x\{4,39\}\.\.\./he=e-3 contained nextgroup=gitHashAbbrev skipwhite + +syn match gitIdentity /\S.\{-\} <[^>]*>/ contained nextgroup=gitDate skipwhite +syn region gitEmail matchgroup=gitEmailDelimiter start=/</ end=/>/ keepend oneline contained containedin=gitIdentity + +syn match gitNotesHeader /^Notes:\ze\n / + +hi def link gitDateHeader gitIdentityHeader +hi def link gitIdentityHeader gitIdentityKeyword +hi def link gitIdentityKeyword Label +hi def link gitNotesHeader gitKeyword +hi def link gitReflogHeader gitKeyword +hi def link gitKeyword Keyword +hi def link gitIdentity String +hi def link gitEmailDelimiter Delimiter +hi def link gitEmail Special +hi def link gitDate Number +hi def link gitMode Number +hi def link gitHashAbbrev gitHash +hi def link gitHash Identifier +hi def link gitReflogMiddle gitReference +hi def link gitReference Function +hi def link gitStage gitType +hi def link gitType Type +hi def link gitDiffAdded diffAdded +hi def link gitDiffRemoved diffRemoved + +let b:current_syntax = "git" diff --git a/syntax/gitcommit.vim b/syntax/gitcommit.vim new file mode 100644 index 00000000..83cd4733 --- /dev/null +++ b/syntax/gitcommit.vim @@ -0,0 +1,83 @@ +" Vim syntax file +" Language: git commit file +" Maintainer: Tim Pope <vimNOSPAM@tpope.org> +" Filenames: *.git/COMMIT_EDITMSG +" Last Change: 2012 April 7 + +if exists("b:current_syntax") + finish +endif + +syn case match +syn sync minlines=50 + +if has("spell") + syn spell toplevel +endif + +syn include @gitcommitDiff syntax/diff.vim +syn region gitcommitDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^\%(diff --\|$\|#\)\@=/ fold contains=@gitcommitDiff + +syn match gitcommitFirstLine "\%^[^#].*" nextgroup=gitcommitBlank skipnl +syn match gitcommitSummary "^.\{0,50\}" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell +syn match gitcommitOverflow ".*" contained contains=@Spell +syn match gitcommitBlank "^[^#].*" contained contains=@Spell +syn match gitcommitComment "^#.*" +syn match gitcommitHead "^\%(# .*\n\)\+#$" contained transparent +syn match gitcommitOnBranch "\%(^# \)\@<=On branch" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite +syn match gitcommitOnBranch "\%(^# \)\@<=Your branch .\{-\} '" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite +syn match gitcommitBranch "[^ ']\+" contained +syn match gitcommitNoBranch "\%(^# \)\@<=Not currently on any branch." contained containedin=gitcommitComment +syn match gitcommitHeader "\%(^# \)\@<=.*:$" contained containedin=gitcommitComment +syn region gitcommitAuthor matchgroup=gitCommitHeader start=/\%(^# \)\@<=\%(Author\|Committer\):/ end=/$/ keepend oneline contained containedin=gitcommitComment transparent +syn match gitcommitNoChanges "\%(^# \)\@<=No changes$" contained containedin=gitcommitComment + +syn region gitcommitUntracked start=/^# Untracked files:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitUntrackedFile fold +syn match gitcommitUntrackedFile "\t\@<=.*" contained + +syn region gitcommitDiscarded start=/^# Change\%(s not staged for commit\|d but not updated\):/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitDiscardedType fold +syn region gitcommitSelected start=/^# Changes to be committed:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitSelectedType fold +syn region gitcommitUnmerged start=/^# Unmerged paths:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitUnmergedType fold + +syn match gitcommitDiscardedType "\t\@<=[a-z][a-z ]*[a-z]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitDiscardedFile skipwhite +syn match gitcommitSelectedType "\t\@<=[a-z][a-z ]*[a-z]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitSelectedFile skipwhite +syn match gitcommitUnmergedType "\t\@<=[a-z][a-z ]*[a-z]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitUnmergedFile skipwhite +syn match gitcommitDiscardedFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitDiscardedArrow +syn match gitcommitSelectedFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow +syn match gitcommitUnmergedFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow +syn match gitcommitDiscardedArrow " -> " contained nextgroup=gitcommitDiscardedFile +syn match gitcommitSelectedArrow " -> " contained nextgroup=gitcommitSelectedFile +syn match gitcommitUnmergedArrow " -> " contained nextgroup=gitcommitSelectedFile + +syn match gitcommitWarning "\%^[^#].*: needs merge$" nextgroup=gitcommitWarning skipnl +syn match gitcommitWarning "^[^#].*: needs merge$" nextgroup=gitcommitWarning skipnl contained +syn match gitcommitWarning "^\%(no changes added to commit\|nothing \%(added \)\=to commit\)\>.*\%$" + +hi def link gitcommitSummary Keyword +hi def link gitcommitComment Comment +hi def link gitcommitUntracked gitcommitComment +hi def link gitcommitDiscarded gitcommitComment +hi def link gitcommitSelected gitcommitComment +hi def link gitcommitUnmerged gitcommitComment +hi def link gitcommitOnBranch Comment +hi def link gitcommitBranch Special +hi def link gitcommitNoBranch gitCommitBranch +hi def link gitcommitDiscardedType gitcommitType +hi def link gitcommitSelectedType gitcommitType +hi def link gitcommitUnmergedType gitcommitType +hi def link gitcommitType Type +hi def link gitcommitNoChanges gitcommitHeader +hi def link gitcommitHeader PreProc +hi def link gitcommitUntrackedFile gitcommitFile +hi def link gitcommitDiscardedFile gitcommitFile +hi def link gitcommitSelectedFile gitcommitFile +hi def link gitcommitUnmergedFile gitcommitFile +hi def link gitcommitFile Constant +hi def link gitcommitDiscardedArrow gitcommitArrow +hi def link gitcommitSelectedArrow gitcommitArrow +hi def link gitcommitUnmergedArrow gitcommitArrow +hi def link gitcommitArrow gitcommitComment +"hi def link gitcommitOverflow Error +hi def link gitcommitBlank Error + +let b:current_syntax = "gitcommit" diff --git a/syntax/gitconfig.vim b/syntax/gitconfig.vim new file mode 100644 index 00000000..c6c56f77 --- /dev/null +++ b/syntax/gitconfig.vim @@ -0,0 +1,38 @@ +" Vim syntax file +" Language: git config file +" Maintainer: Tim Pope <vimNOSPAM@tpope.org> +" Filenames: gitconfig, .gitconfig, *.git/config +" Last Change: 2010 May 21 + +if exists("b:current_syntax") + finish +endif + +setlocal iskeyword+=- +setlocal iskeyword-=_ +syn case ignore +syn sync minlines=10 + +syn match gitconfigComment "[#;].*" +syn match gitconfigSection "\%(^\s*\)\@<=\[[a-z0-9.-]\+\]" +syn match gitconfigSection '\%(^\s*\)\@<=\[[a-z0-9.-]\+ \+\"\%([^\\"]\|\\.\)*"\]' +syn match gitconfigVariable "\%(^\s*\)\@<=\a\k*\%(\s*\%([=#;]\|$\)\)\@=" nextgroup=gitconfigAssignment skipwhite +syn region gitconfigAssignment matchgroup=gitconfigNone start=+=\s*+ skip=+\\+ end=+\s*$+ contained contains=gitconfigBoolean,gitconfigNumber,gitConfigString,gitConfigEscape,gitConfigError,gitconfigComment keepend +syn keyword gitconfigBoolean true false yes no contained +syn match gitconfigNumber "\d\+" contained +syn region gitconfigString matchgroup=gitconfigDelim start=+"+ skip=+\\+ end=+"+ matchgroup=gitconfigError end=+[^\\"]\%#\@!$+ contained contains=gitconfigEscape,gitconfigEscapeError +syn match gitconfigError +\\.+ contained +syn match gitconfigEscape +\\[\\"ntb]+ contained +syn match gitconfigEscape +\\$+ contained + +hi def link gitconfigComment Comment +hi def link gitconfigSection Keyword +hi def link gitconfigVariable Identifier +hi def link gitconfigBoolean Boolean +hi def link gitconfigNumber Number +hi def link gitconfigString String +hi def link gitconfigDelim Delimiter +hi def link gitconfigEscape Delimiter +hi def link gitconfigError Error + +let b:current_syntax = "gitconfig" diff --git a/syntax/gitrebase.vim b/syntax/gitrebase.vim new file mode 100644 index 00000000..08464563 --- /dev/null +++ b/syntax/gitrebase.vim @@ -0,0 +1,38 @@ +" Vim syntax file +" Language: git rebase --interactive +" Maintainer: Tim Pope <vimNOSPAM@tpope.org> +" Filenames: git-rebase-todo +" Last Change: 2012 April 7 + +if exists("b:current_syntax") + finish +endif + +syn case match + +syn match gitrebaseHash "\v<\x{7,40}>" contained +syn match gitrebaseCommit "\v<\x{7,40}>" nextgroup=gitrebaseSummary skipwhite +syn match gitrebasePick "\v^p%(ick)=>" nextgroup=gitrebaseCommit skipwhite +syn match gitrebaseReword "\v^r%(eword)=>" nextgroup=gitrebaseCommit skipwhite +syn match gitrebaseEdit "\v^e%(dit)=>" nextgroup=gitrebaseCommit skipwhite +syn match gitrebaseSquash "\v^s%(quash)=>" nextgroup=gitrebaseCommit skipwhite +syn match gitrebaseFixup "\v^f%(ixup)=>" nextgroup=gitrebaseCommit skipwhite +syn match gitrebaseExec "\v^%(x|exec)>" nextgroup=gitrebaseCommand skipwhite +syn match gitrebaseSummary ".*" contains=gitrebaseHash contained +syn match gitrebaseCommand ".*" contained +syn match gitrebaseComment "^#.*" contains=gitrebaseHash +syn match gitrebaseSquashError "\v%^%(s%(quash)=>|f%(ixup)=>)" nextgroup=gitrebaseCommit skipwhite + +hi def link gitrebaseCommit gitrebaseHash +hi def link gitrebaseHash Identifier +hi def link gitrebasePick Statement +hi def link gitrebaseReword Number +hi def link gitrebaseEdit PreProc +hi def link gitrebaseSquash Type +hi def link gitrebaseFixup Special +hi def link gitrebaseExec Function +hi def link gitrebaseSummary String +hi def link gitrebaseComment Comment +hi def link gitrebaseSquashError Error + +let b:current_syntax = "gitrebase" diff --git a/syntax/gitsendemail.vim b/syntax/gitsendemail.vim new file mode 100644 index 00000000..8b938116 --- /dev/null +++ b/syntax/gitsendemail.vim @@ -0,0 +1,19 @@ +" Vim syntax file +" Language: git send-email message +" Maintainer: Tim Pope +" Filenames: *.msg.[0-9]* (first line is "From ... # This line is ignored.") +" Last Change: 2010 May 21 + +if exists("b:current_syntax") + finish +endif + +runtime! syntax/mail.vim +syn case match + +syn match gitsendemailComment "\%^From.*#.*" +syn match gitsendemailComment "^GIT:.*" + +hi def link gitsendemailComment Comment + +let b:current_syntax = "gitsendemail" |