59 lines
2.9 KiB
VimL
59 lines
2.9 KiB
VimL
" Author: Michael Sanders (msanders42 [at] gmail [dot] com)
|
||
" Description: Better syntax highlighting for Objective-C files (part of the
|
||
" cocoa.vim plugin).
|
||
" Last Updated: June 23, 2009
|
||
|
||
" NOTE: This next file (cocoa_keywords.vim) is rather large and may slow
|
||
" things down. Loading it seems to take less than 0.5 microseconds
|
||
" on my machine, but I'm not sure of the consequences; if it is slow
|
||
" for you, just comment out the next line.
|
||
ru after/syntax/cocoa_keywords.vim
|
||
|
||
syn match objcDirective '@synthesize\|@property\|@optional\|@required' display
|
||
syn keyword objcType IBOutlet IBAction Method
|
||
syn keyword objcConstant YES NO TRUE FALSE
|
||
|
||
syn region objcImp start='@implementation' end='@end' transparent
|
||
syn region objcHeader start='@interface' end='@end' transparent
|
||
|
||
" I make this typo sometimes so it's nice to have it highlighted.
|
||
syn match objcError '\v(NSLogv=\(\s*)@<=[^@]=["'].*'me=e-1
|
||
|
||
syn match objcSubclass '\(@implementation\|@interface\)\@<=\s*\k\+' display contained containedin=objcImp,objcHeader
|
||
syn match objcSuperclass '\(@\(implementation\|interface\)\s*\k\+\s*:\)\@<=\s*\k*' display contained containedin=objcImp,objcHeader
|
||
|
||
" Matches "- (void) foo: (int) bar and: (float) foobar"
|
||
syn match objcMethod '^\s*[-+]\s*\_.\{-}[\{;]'me=e-1 transparent contains=cParen,objcInstMethod,objcFactMethod
|
||
" Matches "bar & foobar" in above
|
||
syn match objcMethodArg ')\@<=\s*\k\+' contained containedin=objcMethod
|
||
" Matches "foo:" & "and:" in above
|
||
syn match objcMethodName '\(^\s*[-+]\s*(\_[^)]*)\)\@<=\_\s*\_\k\+' contained containedin=objcMethod
|
||
syn match objcMethodColon '\k\+\s*:' contained containedin=objcMethod
|
||
" Don't match these groups in cParen "(...)"
|
||
syn cluster cParenGroup add=objcMethodName,objcMethodArg,objcMethodColon
|
||
" This fixes a bug with completion inside parens (e.g. if ([NSString ]))
|
||
syn cluster cParenGroup remove=objcMethodCall
|
||
|
||
" Matches "bar" in "[NSObject bar]" or "bar" in "[[NSObject foo: baz] bar]",
|
||
" but NOT "bar" in "[NSObject foo: bar]".
|
||
syn match objcMessageName '\(\[\s*\k\+\s\+\|\]\s*\)\@<=\k*\s*\]'me=e-1 display contained containedin=objcMethodCall
|
||
" Matches "foo:" in "[NSObject foo: bar]" or "[[NSObject new] foo: bar]"
|
||
syn match objcMessageColon '\(\_\S\+\_\s\+\)\@<=\k\+\s*:' display contained containedin=objcMethodCall
|
||
|
||
" Don't match these in this strange group for edge cases...
|
||
syn cluster cMultiGroup add=objcMessageColon,objcMessageName,objcMethodName,objcMethodArg,objcMethodColon
|
||
|
||
" You may want to customize this one. I couldn't find a default group to suit
|
||
" it, but you can modify your colorscheme to make this a different color.
|
||
hi link objcMethodName Special
|
||
hi link objcMethodColon objcMethodName
|
||
|
||
hi link objcMethodArg Identifier
|
||
|
||
hi link objcMessageName objcMethodArg
|
||
hi link objcMessageColon objcMessageName
|
||
|
||
hi link objcSubclass objcMethodName
|
||
hi link objcSuperclass String
|
||
|
||
hi link objcError Error
|