mirror of
https://github.com/neovim/neovim.git
synced 2024-12-25 13:45:15 -07:00
64 lines
2.4 KiB
VimL
64 lines
2.4 KiB
VimL
|
" 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
|