neovim/runtime/syntax/shada.vim
2015-11-01 21:27:28 +03:00

126 lines
5.5 KiB
VimL

if exists("b:current_syntax")
finish
endif
syntax match ShaDaEntryHeader
\ '^\u.\{-} with timestamp \d\{4}-\d\d-\d\dT\d\d:\d\d:\d\d:$'
syntax match ShaDaEntryName '^\u.\{-}\ze with' contained
\ containedin=ShaDaEntryHeader
syntax match ShaDaEntryTimestamp 'timestamp \zs\d\{4}-\d\d-\d\dT\d\d:\d\d:\d\d'
\ contained containedin=ShaDaEntryHeader
syntax match ShaDaEntryTimestampNumber '\d\+' contained
\ containedin=ShaDaEntryTimestamp
syntax match ShaDaComment '^\s*#.*$'
syntax region ShaDaEntryMapLong start='^ % Key_* Description_* Value$'
\ end='^ %\|^\S'me=s-1 contains=ShaDaComment,ShaDaEntryMapLongEntryStart
syntax region ShaDaEntryMapShort start='^ % Key_* Value$'
\ end='^ %\|^\S'me=s-1 contains=ShaDaComment,ShaDaEntryMapShortEntryStart
syntax match ShaDaEntryMapHeader '^ % Key_* \(Description_* \)\?Value$'
\ contained containedin=ShaDaEntryMapLong,ShaDaEntryMapShort
syntax match ShaDaEntryMapLongEntryStart '^ + 'hs=e-2,he=e-1
\ nextgroup=ShaDaEntryMapLongKey
syntax match ShaDaEntryMapLongKey '\S\+ \+\ze\S'he=e-2 contained
\ nextgroup=ShaDaEntryMapLongDescription
syntax match ShaDaEntryMapLongDescription '.\{-} \ze\S'he=e-2 contained
\ nextgroup=@ShaDaEntryMsgpackValue
syntax match ShaDaEntryMapShortEntryStart '^ + 'hs=e-2,he=e-1 contained
\ nextgroup=ShaDaEntryMapShortKey
syntax match ShaDaEntryMapShortKey '\S\+ \+\ze\S'he=e-2 contained
\ nextgroup=@ShaDaEntryMsgpackValue
syntax match ShaDaEntryMapBinArrayStart '^ | - 'hs=e-4,he=e-1 contained
\ containedin=ShaDaEntryMapLong,ShaDaEntryMapShort
\ nextgroup=@ShaDaEntryMsgpackValue
syntax region ShaDaEntryArray start='^ @ Description_* Value$'
\ end='^\S'me=s-1 keepend
\ contains=ShaDaComment,ShaDaEntryArrayEntryStart,ShaDaEntryArrayHeader
syntax match ShaDaEntryArrayHeader '^ @ Description_* Value$' contained
syntax match ShaDaEntryArrayEntryStart '^ - 'hs=e-2,he=e-1
\ nextgroup=ShaDaEntryArrayDescription
syntax match ShaDaEntryArrayDescription '.\{-} \ze\S'he=e-2 contained
\ nextgroup=@ShaDaEntryMsgpackValue
syntax match ShaDaEntryRawMsgpack '^ = ' nextgroup=@ShaDaEntryMsgpackValue
syntax cluster ShaDaEntryMsgpackValue
\ add=ShaDaMsgpackKeyword,ShaDaMsgpackShaDaKeyword
\ add=ShaDaMsgpackInteger,ShaDaMsgpackCharacter,ShaDaMsgpackFloat
\ add=ShaDaMsgpackBinaryString,ShaDaMsgpackString,ShaDaMsgpackExt
\ add=ShaDaMsgpackArray,ShaDaMsgpackMap
\ add=ShaDaMsgpackMultilineArray
syntax keyword ShaDaMsgpackKeyword contained NIL TRUE FALSE
syntax keyword ShaDaMsgpackShaDaKeyword contained
\ CMD SEARCH EXPR INPUT DEBUG
\ CHARACTERWISE LINEWISE BLOCKWISE
syntax region ShaDaMsgpackBinaryString matchgroup=ShaDaMsgpackStringQuotes
\ start='"' skip='\\"' end='"' contained keepend
syntax match ShaDaMsgpackBinaryStringEscape '\\[\\0n"]'
\ contained containedin=ShaDaMsgpackBinaryString
syntax match ShaDaMsgpackString '=' contained nextgroup=ShaDaMsgpackBinaryString
syntax match ShaDaMsgpackExt '+(-\?\d\+)' contained
\ nextgroup=ShaDaMsgpackBinaryString
syntax match ShaDaMsgpackExtType '-\?\d\+' contained containedin=ShaDaMsgpackExt
syntax match ShaDaMsgpackCharacter /'.'/ contained
syntax match ShaDaMsgpackInteger '-\?\%(0x\x\{,16}\|\d\+\)' contained
syntax match ShaDaMsgpackFloat '-\?\d\+\.\d\+\%(e[+-]\?\d\+\)\?' contained
syntax region ShaDaMsgpackArray matchgroup=ShaDaMsgpackArrayBraces
\ start='\[' end='\]' contained
\ contains=@ShaDaEntryMsgpackValue,ShaDaMsgpackComma
syntax region ShaDaMsgpackMap matchgroup=ShaDaMsgpackMapBraces
\ start='{' end='}' contained
\ contains=@ShaDaEntryMsgpackValue,ShaDaMsgpackComma,ShaDaMsgpackColon
syntax match ShaDaMsgpackComma ',' contained
syntax match ShaDaMsgpackColon ':' contained
syntax match ShaDaMsgpackMultilineArray '@' contained
hi def link ShaDaComment Comment
hi def link ShaDaEntryNumber Number
hi def link ShaDaEntryTimestamp Operator
hi def link ShaDaEntryName Keyword
hi def link ShaDaEntryMapHeader PreProc
hi def link ShaDaEntryMapEntryStart Label
hi def link ShaDaEntryMapLongEntryStart ShaDaEntryMapEntryStart
hi def link ShaDaEntryMapShortEntryStart ShaDaEntryMapEntryStart
hi def link ShaDaEntryMapBinArrayStart ShaDaEntryMapEntryStart
hi def link ShaDaEntryArrayEntryStart ShaDaEntryMapEntryStart
hi def link ShaDaEntryMapKey String
hi def link ShaDaEntryMapLongKey ShaDaEntryMapKey
hi def link ShaDaEntryMapShortKey ShaDaEntryMapKey
hi def link ShaDaEntryMapDescription Comment
hi def link ShaDaEntryMapLongDescription ShaDaEntryMapDescription
hi def link ShaDaEntryMapShortDescription ShaDaEntryMapDescription
hi def link ShaDaEntryArrayHeader PreProc
hi def link ShaDaEntryArrayDescription ShaDaEntryMapDescription
hi def link ShaDaMsgpackKeyword Keyword
hi def link ShaDaMsgpackShaDaKeyword ShaDaMsgpackKeyword
hi def link ShaDaMsgpackCharacter Character
hi def link ShaDaMsgpackInteger Number
hi def link ShaDaMsgpackFloat Float
hi def link ShaDaMsgpackBinaryString String
hi def link ShaDaMsgpackBinaryStringEscape SpecialChar
hi def link ShaDaMsgpackExtType Typedef
hi def link ShaDaMsgpackStringQuotes Operator
hi def link ShaDaMsgpackString ShaDaMsgpackStringQuotes
hi def link ShaDaMsgpackExt ShaDaMsgpackStringQuotes
hi def link ShaDaMsgpackMapBraces Operator
hi def link ShaDaMsgpackArrayBraces ShaDaMsgpackMapBraces
hi def link ShaDaMsgpackComma Operator
hi def link ShaDaMsgpackColon ShaDaMsgpackComma
hi def link ShaDaMsgpackMultilineArray Operator
let b:current_syntax = "shada"