12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- " Vim syntax file
- " Language: Logos (Objective-C++)
- " Maintainer: Dustin Howett
- " Latest Revision: April 2, 2011
- if exists("b:current_syntax")
- finish
- endif
- runtime! syntax/objc.vim
- syn match logosDirective '%\(hook\|group\|subclass\|ctor\)' display
- syn match logosDirective '%end' display
- syn match logosDirective '%class' display skipwhite nextgroup=logosClassName
- syn match logosDirective '%log' display contained containedin=logosHook,logosSubclass,logosGroup
- syn match logosDirective '%orig' display contained containedin=logosHook,logosSubclass,logosGroup
- syn match logosDirective '%init' display
- syn match logosDirective '%new' display
- syn region logosInit matchgroup=logosDirective start='%init(' end=')' contains=cParen
- syn region logosNew oneline matchgroup=logosNew start='%new(' end=')' contains=logosTypeEncoding,logosTypeEncodingUnion
- syn match logosTypeEncoding '[*@#:\[\]^?{}A-Za-z0-9$=]' display contained
- syn region logosTypeEncodingUnion oneline matchgroup=logosTypeEncoding start='(' end=')' contained transparent
- syn region logosInfixClass oneline matchgroup=logosInfixClass start='%c(' end=')' contains=logosClassName containedin=objcMessage
- syn match logosClassName '[A-Za-z$_][A-Za-z0-9_$]*' display contained
- syn region logosHook start="%hook" end="%end" fold transparent keepend extend
- syn region logosGroup start="%group" end="%end" fold transparent keepend extend
- syn region logosSubclass start="%subclass" end="%end" fold transparent keepend extend
- syn match logosError '\(@interface\|@implementation\)' contained containedin=logosHook,logosSubclass,logosGroup
- syn match logosError '\(%hook\|%group\|%subclass\)' contained containedin=objcImp,objcHeader
- syn match logosDirectiveArgument '\(%\(hook\|subclass\|group\)\)\@<=\s\+\k\+' display contained containedin=logosHook,logosSubclass,logosGroup
- syn match logosSubclassSuperclassName '\(%subclass\s\+\k\+\s*:\)\@<=\s*\k\+' display contained containedin=logosHook,logosSubclass,logosGroup
- syn cluster cParenGroup add=logosNew,logosInfixClass,logosInit
- syn cluster cParenGroup add=logosTypeEncoding,logosTypeEncodingUnion
- syn cluster cParenGroup add=logosClassName
- syn cluster cParenGroup add=logosDirectiveArgument,logosSubclassSuperclassName
- syn cluster cParenGroup add=logosError
- syn cluster cParenGroup add=logosHook,logosGroup,logosSubclass
- syn cluster cPreProcGroup add=logosClassName,logosDirective,logosTypeEncoding,logosTypeEncodingUnion
- syn cluster cMultiGroup add=logosTypeEncoding,logosTypeEncodingUnion,logosClassName
- syn sync match logosHookSync grouphere logosHook "%hook"
- syn sync match logosGroupSync grouphere logosGroup "%group"
- syn sync match logosSubclassSync grouphere logosSubclass "%subclass"
- syn sync match logosEndSync grouphere NONE "%end"
- let b:current_syntax = "logos"
- hi def link logosDirective PreProc
- hi def link logosDirectiveArgument String
- hi def link logosError Error
- hi def link logosTypeEncoding logosDirectiveArgument
- hi def link logosGroupName logosDirectiveArgument
- hi def link logosClassName logosDirectiveArgument
- hi def link logosSubclassSuperclassName logosClassName
- hi def link logosNew logosDirective
- hi def link logosInfixClass logosDirective
|