logos.vim 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. " Vim syntax file
  2. " Language: Logos (Objective-C++)
  3. " Maintainer: Dustin Howett
  4. " Latest Revision: April 2, 2011
  5. if exists("b:current_syntax")
  6. finish
  7. endif
  8. runtime! syntax/objc.vim
  9. syn match logosDirective '%\(hook\|group\|subclass\|ctor\)' display
  10. syn match logosDirective '%end' display
  11. syn match logosDirective '%class' display skipwhite nextgroup=logosClassName
  12. syn match logosDirective '%log' display contained containedin=logosHook,logosSubclass,logosGroup
  13. syn match logosDirective '%orig' display contained containedin=logosHook,logosSubclass,logosGroup
  14. syn match logosDirective '%init' display
  15. syn match logosDirective '%new' display
  16. syn region logosInit matchgroup=logosDirective start='%init(' end=')' contains=cParen
  17. syn region logosNew oneline matchgroup=logosNew start='%new(' end=')' contains=logosTypeEncoding,logosTypeEncodingUnion
  18. syn match logosTypeEncoding '[*@#:\[\]^?{}A-Za-z0-9$=]' display contained
  19. syn region logosTypeEncodingUnion oneline matchgroup=logosTypeEncoding start='(' end=')' contained transparent
  20. syn region logosInfixClass oneline matchgroup=logosInfixClass start='%c(' end=')' contains=logosClassName containedin=objcMessage
  21. syn match logosClassName '[A-Za-z$_][A-Za-z0-9_$]*' display contained
  22. syn region logosHook start="%hook" end="%end" fold transparent keepend extend
  23. syn region logosGroup start="%group" end="%end" fold transparent keepend extend
  24. syn region logosSubclass start="%subclass" end="%end" fold transparent keepend extend
  25. syn match logosError '\(@interface\|@implementation\)' contained containedin=logosHook,logosSubclass,logosGroup
  26. syn match logosError '\(%hook\|%group\|%subclass\)' contained containedin=objcImp,objcHeader
  27. syn match logosDirectiveArgument '\(%\(hook\|subclass\|group\)\)\@<=\s\+\k\+' display contained containedin=logosHook,logosSubclass,logosGroup
  28. syn match logosSubclassSuperclassName '\(%subclass\s\+\k\+\s*:\)\@<=\s*\k\+' display contained containedin=logosHook,logosSubclass,logosGroup
  29. syn cluster cParenGroup add=logosNew,logosInfixClass,logosInit
  30. syn cluster cParenGroup add=logosTypeEncoding,logosTypeEncodingUnion
  31. syn cluster cParenGroup add=logosClassName
  32. syn cluster cParenGroup add=logosDirectiveArgument,logosSubclassSuperclassName
  33. syn cluster cParenGroup add=logosError
  34. syn cluster cParenGroup add=logosHook,logosGroup,logosSubclass
  35. syn cluster cPreProcGroup add=logosClassName,logosDirective,logosTypeEncoding,logosTypeEncodingUnion
  36. syn cluster cMultiGroup add=logosTypeEncoding,logosTypeEncodingUnion,logosClassName
  37. syn sync match logosHookSync grouphere logosHook "%hook"
  38. syn sync match logosGroupSync grouphere logosGroup "%group"
  39. syn sync match logosSubclassSync grouphere logosSubclass "%subclass"
  40. syn sync match logosEndSync grouphere NONE "%end"
  41. let b:current_syntax = "logos"
  42. hi def link logosDirective PreProc
  43. hi def link logosDirectiveArgument String
  44. hi def link logosError Error
  45. hi def link logosTypeEncoding logosDirectiveArgument
  46. hi def link logosGroupName logosDirectiveArgument
  47. hi def link logosClassName logosDirectiveArgument
  48. hi def link logosSubclassSuperclassName logosClassName
  49. hi def link logosNew logosDirective
  50. hi def link logosInfixClass logosDirective