12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- " Vim syntax file
- " Language: git attributes
- " Maintainer: ObserverOfTime <chronobserver@disroot.org>
- " Filenames: .gitattributes, *.git/info/attributes
- " Last Change: 2022 Sep 09
- if exists('b:current_syntax')
- finish
- endif
- let s:cpo_save = &cpoptions
- set cpoptions&vim
- " Comment
- syn keyword gitattributesTodo contained TODO FIXME XXX
- syn match gitattributesComment /^\s*#.*/ contains=gitattributesTodo
- " Pattern
- syn match gitattributesPattern /^\s*#\@!\(".\+"\|\S\+\)/ skipwhite
- \ nextgroup=gitattributesAttrPrefixed,gitattributesAttrAssigned skipwhite
- \ contains=gitattributesGlob,gitattributesRange,gitattributesSeparator
- syn match gitattributesGlob /\\\@1<![?*]/ contained
- syn match gitattributesRange /\\\@1<!\[.\{-}\]/ contained
- syn match gitattributesSeparator '/' contained
- " Attribute
- syn match gitattributesAttrPrefixed /[!-]\?[A-Za-z0-9_.][-A-Za-z0-9_.]*/
- \ transparent contained skipwhite
- \ nextgroup=gitattributesAttrPrefixed,gitattributesAttrAssigned
- \ contains=gitattributesPrefix,gitattributesName
- syn match gitattributesAttrAssigned /[A-Za-z0-9_.][-A-Za-z0-9_.]*=\S\+/
- \ transparent contained skipwhite
- \ nextgroup=gitattributesAttrPrefixed,gitattributesAttrAssigned
- \ contains=gitattributesName,gitattributesAssign,gitattributesBoolean,gitattributesString
- syn match gitattributesName /[A-Za-z0-9_.][-A-Za-z0-9_.]*/
- \ contained nextgroup=gitattributesAssign
- syn match gitattributesPrefix /[!-]/ contained
- \ nextgroup=gitAttributesName
- syn match gitattributesAssign '=' contained
- \ nextgroup=gitattributesBoolean,gitattributesString
- syn match gitattributesString /=\@1<=\S\+/ contained
- syn keyword gitattributesBoolean true false contained
- " Macro
- syn match gitattributesMacro /^\s*\[attr\]\s*\S\+/
- \ nextgroup=gitattributesAttribute skipwhite
- hi def link gitattributesAssign Operator
- hi def link gitattributesBoolean Boolean
- hi def link gitattributesComment Comment
- hi def link gitattributesGlob Special
- hi def link gitattributesMacro Define
- hi def link gitattributesName Identifier
- hi def link gitattributesPrefix SpecialChar
- hi def link gitattributesRange Special
- hi def link gitattributesSeparator Delimiter
- hi def link gitattributesString String
- hi def link gitattributesTodo Todo
- let b:current_syntax = 'gitattributes'
- let &cpoptions = s:cpo_save
- unlet s:cpo_save
|