diff options
Diffstat (limited to 'runtime/syntax/objc.vim')
-rw-r--r-- | runtime/syntax/objc.vim | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/runtime/syntax/objc.vim b/runtime/syntax/objc.vim new file mode 100644 index 000000000..5a965a0f1 --- /dev/null +++ b/runtime/syntax/objc.vim @@ -0,0 +1,107 @@ +" Vim syntax file +" Language: Objective C +" Maintainer: Kazunobu Kuriyama <kazunobu.kuriyama@nifty.com> +" Ex-maintainer: Anthony Hodsdon <ahodsdon@fastmail.fm> +" First Author: Valentino Kyriakides <1kyriaki@informatik.uni-hamburg.de> +" Last Change: 2004 May 20 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +if &filetype != 'objcpp' + " Read the C syntax to start with + if version < 600 + source <sfile>:p:h/c.vim + else + runtime! syntax/c.vim + endif +endif + +" Objective C extentions follow below +" +" NOTE: Objective C is abbreviated to ObjC/objc +" and uses *.h, *.m as file extensions! + + +" ObjC keywords, types, type qualifiers etc. +syn keyword objcStatement self super _cmd +syn keyword objcType id Class SEL IMP BOOL nil Nil +syn keyword objcTypeModifier bycopy in out inout oneway + +" Match the ObjC #import directive (like C's #include) +syn region objcImported display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ +syn match objcImported display contained "<[_0-9a-zA-Z.\/]*>" +syn match objcImport display "^\s*\(%:\|#\)\s*import\>\s*["<]" contains=objcImported + +" Match the important ObjC directives +syn match objcScopeDecl "@public\|@private\|@protected" +syn match objcDirective "@interface\|@implementation" +syn match objcDirective "@class\|@end\|@defs" +syn match objcDirective "@encode\|@protocol\|@selector" + +" Match the ObjC method types +" +" NOTE: here I match only the indicators, this looks +" much nicer and reduces cluttering color highlightings. +" However, if you prefer full method declaration matching +" append .* at the end of the next two patterns! +" +syn match objcInstMethod "^\s*-\s*" +syn match objcFactMethod "^\s*+\s*" + +" To distinguish from a header inclusion from a protocol list. +syn match objcProtocol display "<[_a-zA-Z][_a-zA-Z0-9]*>" contains=objcType,cType,Type + + +" To distinguish labels from the keyword for a method's parameter. +syn region objcKeyForMethodParam display + \ start="^\s*[_a-zA-Z][_a-zA-Z0-9]*\s*:\s*(" + \ end=")\s*[_a-zA-Z][_a-zA-Z0-9]*" + \ contains=objcType,objcTypeModifier,cType,cStructure,cStorageClass,Type + +" Objective-C Constant Strings +syn match objcSpecial display "%@" contained +syn region objcString start=+\(@"\|"\)+ skip=+\\\\\|\\"+ end=+"+ contains=cFormat,cSpecial,objcSpecial + +" Objective-C Message Expressions +syn region objcMessage display start="\[" end="\]" contains=objcMessage,objcStatement,objcType,objcTypeModifier,objcString,objcConstant,objcDirective,cType,cStructure,cStorageClass,cString,cCharacter,cSpecialCharacter,cNumbers,cConstant,cOperator,cComment,cCommentL,Type + +syn cluster cParenGroup add=objcMessage +syn cluster cPreProcGroup add=objcMessage + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_objc_syntax_inits") + if version < 508 + let did_objc_syntax_inits = 1 + command -nargs=+ HiLink hi link <args> + else + command -nargs=+ HiLink hi def link <args> + endif + + HiLink objcImport Include + HiLink objcImported cString + HiLink objcTypeModifier objcType + HiLink objcType Type + HiLink objcScopeDecl Statement + HiLink objcInstMethod Function + HiLink objcFactMethod Function + HiLink objcStatement Statement + HiLink objcDirective Statement + HiLink objcKeyForMethodParam None + HiLink objcString cString + HiLink objcSpecial Special + HiLink objcProtocol None + + delcommand HiLink +endif + +let b:current_syntax = "objc" + +" vim: ts=8 |