1" Vim syntax file 2" Language: Ruby 3" Maintainer: Doug Kearns <[email protected]> 4" Info: $Id$ 5" URL: http://vim-ruby.rubyforge.org 6" Anon CVS: See above site 7" Release Coordinator: Doug Kearns <[email protected]> 8" ---------------------------------------------------------------------------- 9" 10" Previous Maintainer: Mirko Nasato 11" Thanks to perl.vim authors, and to Reimer Behrends. :-) (MN) 12" ---------------------------------------------------------------------------- 13 14" For version 5.x: Clear all syntax items 15" For version 6.x: Quit when a syntax file was already loaded 16if version < 600 17 syntax clear 18elseif exists("b:current_syntax") 19 finish 20endif 21 22if has("folding") && exists("ruby_fold") 23 setlocal foldmethod=syntax 24endif 25 26if exists("ruby_space_errors") 27 if !exists("ruby_no_trail_space_error") 28 syn match rubySpaceError display excludenl "\s\+$" 29 endif 30 if !exists("ruby_no_tab_space_error") 31 syn match rubySpaceError display " \+\t"me=e-1 32 endif 33endif 34 35" Operators 36if exists("ruby_operators") 37 syn match rubyOperator "\%(\^\|\~\|\%(class\s*\)\@<!<<\|<=>\|<=\|\%(<\|\<class\s\+\u\w*\s*\)\@<!<[^<]\@=\|===\|==\|=\~\|>>\|>=\|>\||\|-\|/\|\*\*\|\*\|&\|%\|+\)" 38 syn match rubyPseudoOperator "\%(-=\|/=\|\*\*=\|\*=\|&&\|&=\|&&=\|||\||=\|||=\|%=\|+=\|!\~\|!=\)" 39 syn region rubyBracketOperator matchgroup=rubyOperator start="\%([_[:lower:]]\w*[?!=]\=\|}\)\@<=\[\s*" end="\s*]" 40endif 41 42" Expression Substitution and Backslash Notation 43syn match rubyEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display 44syn match rubyEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display 45 46syn region rubyInterpolation matchgroup=rubyInterpolationDelimiter start="#{" end="}" contained contains=TOP 47syn match rubyInterpolation "#\%(\$\|@@\=\)\w\+" display contained contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable,rubyPredefinedVariable 48syn match rubyInterpolationDelimiter "#\ze\%(\$\|@@\=\)\w\+" display contained 49syn region rubyNoInterpolation start="\\#{" end="}" contained 50syn match rubyNoInterpolation "\\#{" display contained 51syn match rubyNoInterpolation "\\#\%(\$\|@@\=\)\w\+" display contained 52 53syn match rubyDelimEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE 54 55syn region rubyNestedParentheses start="(" end=")" skip="\\\\\|\\)" transparent contained contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimEscape 56syn region rubyNestedCurlyBraces start="{" end="}" skip="\\\\\|\\}" transparent contained contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimEscape 57syn region rubyNestedAngleBrackets start="<" end=">" skip="\\\\\|\\>" transparent contained contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimEscape 58syn region rubyNestedSquareBrackets start="\[" end="\]" skip="\\\\\|\\\]" transparent contained contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimEscape 59 60syn cluster rubyStringSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyEscape 61syn cluster rubyExtendedStringSpecial contains=@rubyStringSpecial,rubyNestedParentheses,rubyNestedCurlyBraces,rubyNestedAngleBrackets,rubyNestedSquareBrackets 62 63" Numbers and ASCII Codes 64syn match rubyASCIICode "\w\@<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)" 65syn match rubyInteger "\<0[xX]\x\+\%(_\x\+\)*\>" display 66syn match rubyInteger "\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)\>" display 67syn match rubyInteger "\<0[oO]\=\o\+\%(_\o\+\)*\>" display 68syn match rubyInteger "\<0[bB][01]\+\%(_[01]\+\)*\>" display 69syn match rubyFloat "\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*\>" display 70syn match rubyFloat "\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)\>" display 71 72" Identifiers 73syn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent 74syn match rubyBlockArgument "&[_[:lower:]][_[:alnum:]]" contains=NONE display transparent 75 76syn match rubyConstant "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=\%(\s*(\)\@!" 77syn match rubyClassVariable "@@\h\w*" display 78syn match rubyInstanceVariable "@\h\w*" display 79syn match rubyGlobalVariable "$\%(\h\w*\|-.\)" 80syn match rubySymbol ":\@<!:\%(\^\|\~\|<<\|<=>\|<=\|<\|===\|==\|=\~\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)" 81syn match rubySymbol ":\@<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)" 82syn match rubySymbol ":\@<!:\%(\$\|@@\=\)\=\h\w*[?!=]\=" 83syn region rubySymbol start=":\@<!:\"" end="\"" skip="\\\\\|\\\"" 84syn region rubySymbol start=":\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold 85if exists("ruby_operators") 86 syn match rubyBlockParameter "\%(\%(\%(\<do\>\|{\)\s*\)|\s*\)\@<=[( ,a-zA-Z0-9_*)]\+\%(\s*|\)\@=" display 87else 88 syn match rubyBlockParameter "\%(\%(\<do\>\|{\)\s*\)\@<=|\s*\zs[( ,a-zA-Z0-9_*)]\+\ze\s*|" display 89endif 90 91syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~1-9]# 92syn match rubyPredefinedVariable "$_\>" display 93syn match rubyPredefinedVariable "$-[0FIKadilpvw]\>" display 94syn match rubyPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>" display 95syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|KCODE\|LOADED_FEATURES\|LOAD_PATH\|PROGRAM_NAME\|SAFE\|VERBOSE\)\>" display 96syn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(MatchingData\|ARGF\|ARGV\|ENV\)\>\%(\s*(\)\@!" 97syn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(DATA\|FALSE\|NIL\|RUBY_PLATFORM\|RUBY_RELEASE_DATE\)\>\%(\s*(\)\@!" 98syn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(RUBY_VERSION\|STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\|TRUE\)\>\%(\s*(\)\@!" 99"Obsolete Global Constants 100"syn match rubyPredefinedConstant "\%(::\)\=\zs\%(PLATFORM\|RELEASE_DATE\|VERSION\)\>" 101"syn match rubyPredefinedConstant "\%(::\)\=\zs\%(NotImplementError\)\>" 102 103" Normal Regular Expression 104syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\)\|[;\~=!|&(,[>]\)\s*\)\@<=/" end="/[iomx]*" skip="\\\\\|\\/" contains=@rubyStringSpecial fold 105syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\<\%(split\|scan\|gsub\|sub\)\s*\)\@<=/" end="/[iomx]*" skip="\\\\\|\\/" contains=@rubyStringSpecial fold 106 107" Normal String and Shell Command Output 108syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold 109syn region rubyString matchgroup=rubyStringDelimiter start="'" end="'" skip="\\\\\|\\'" fold 110syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial fold 111 112" Generalized Regular Expression 113syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomx]*" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold 114syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomx]*" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimEscape fold 115syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomx]*" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold 116syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomx]*" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimEscape fold 117syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomx]*" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimEscape fold 118 119" Generalized Single Quoted String, Symbol and Array of Strings 120syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold 121syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw]{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimEscape 122syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw]<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimEscape 123syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimEscape 124syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimEscape 125 126" Generalized Double Quoted String and Array of Strings and Shell Command Output 127" Note: %= is not matched here as the beginning of a double quoted string 128syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold 129syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold 130syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimEscape fold 131syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold 132syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimEscape fold 133syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimEscape fold 134 135" Here Document 136syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-\=\zs\%(\h\w*\)+ end=+$+ oneline contains=TOP 137syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=TOP 138syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-\=\zs'\%([^']*\)'+ end=+$+ oneline contains=TOP 139syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=TOP 140 141syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<\z(\h\w*\)\ze+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend 142syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<"\z([^"]*\)"\ze+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend 143syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<'\z([^']*\)'\ze+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart fold keepend 144syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<`\z([^`]*\)`\ze+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend 145 146syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-\z(\h\w*\)\ze+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend 147syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-"\z([^"]*\)"\ze+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend 148syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-'\z([^']*\)'\ze+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart fold keepend 149syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-`\z([^`]*\)`\ze+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend 150 151if exists('main_syntax') && main_syntax == 'eruby' 152 let b:ruby_no_expensive = 1 153end 154 155syn match rubyAliasDeclaration "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable nextgroup=rubyAliasDeclaration2 skipwhite 156syn match rubyAliasDeclaration2 "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable 157syn match rubyMethodDeclaration "[^[:space:];#(]\+" contained contains=rubyConstant,rubyBoolean,rubyPseudoVariable,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable 158syn match rubyClassDeclaration "[^[:space:];#<]\+" contained contains=rubyConstant 159syn match rubyModuleDeclaration "[^[:space:];#]\+" contained contains=rubyConstant 160syn match rubyFunction "\<[_[:alpha:]][_[:alnum:]]*[?!=]\=[[:alnum:].:?!=]\@!" contained containedin=rubyMethodDeclaration 161syn match rubyFunction "\%(\s\|^\)\@<=[_[:alpha:]][_[:alnum:]]*[?!=]\=\%(\s\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2 162syn match rubyFunction "\%([[:space:].]\|^\)\@<=\%(\[\]=\=\|\*\*\|[+-]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|==\|=\~\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration 163" Expensive Mode - colorize *end* according to opening statement 164if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive") 165 syn match rubyDefine "\<alias\>" nextgroup=rubyAliasDeclaration skipwhite skipnl 166 syn match rubyDefine "\<def\>" nextgroup=rubyMethodDeclaration skipwhite skipnl 167 syn match rubyClass "\<class\>" nextgroup=rubyClassDeclaration skipwhite skipnl 168 syn match rubyModule "\<module\>" nextgroup=rubyModuleDeclaration skipwhite skipnl 169 syn region rubyBlock start="\<def\>" matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=TOP fold 170 syn region rubyBlock start="\<class\>" matchgroup=rubyClass end="\<end\>" contains=TOP fold 171 syn region rubyBlock start="\<module\>" matchgroup=rubyModule end="\<end\>" contains=TOP fold 172 173 " modifiers 174 syn match rubyConditional "\<\%(if\|unless\)\>" display 175 syn match rubyRepeat "\<\%(while\|until\)\>" display 176 177 " *do* requiring *end* 178 syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=TOP fold 179 180 " *{* requiring *}* 181 syn region rubyCurlyBlock start="{" end="}" contains=TOP fold 182 183 " statements without *do* 184 syn region rubyNoDoBlock matchgroup=rubyControl start="\<begin\>" end="\<end\>" contains=TOP fold 185 syn region rubyCaseBlock matchgroup=rubyConditional start="\<case\>" end="\<end\>" contains=TOP fold 186 syn region rubyConditionalBlock matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\%(if\|unless\)\>" end="\<end\>" contains=TOP fold 187 syn keyword rubyConditional then else when contained containedin=rubyCaseBlock 188 syn keyword rubyConditional then else elsif contained containedin=rubyConditionalBlock 189 190 " statement with optional *do* 191 syn region rubyOptDoLine matchgroup=rubyRepeat start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" end="\%(\<do\>\|:\)" end="\ze\%(;\|$\)" oneline contains=TOP 192 syn region rubyOptDoBlock start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=TOP nextgroup=rubyOptDoLine fold 193 194 if !exists("ruby_minlines") 195 let ruby_minlines = 50 196 endif 197 exec "syn sync minlines=" . ruby_minlines 198 199else 200 syn match rubyControl "\<def\>" nextgroup=rubyMethodDeclaration skipwhite skipnl 201 syn match rubyControl "\<class\>" nextgroup=rubyClassDeclaration skipwhite skipnl 202 syn match rubyControl "\<module\>" nextgroup=rubyModuleDeclaration skipwhite skipnl 203 syn keyword rubyControl case begin do for if unless while until else elsif then when end 204 syn keyword rubyKeyword alias 205endif 206 207" Keywords 208" Note: the following keywords have already been defined: 209" begin case class def do end for if module unless until while 210syn keyword rubyControl and break ensure in next not or redo rescue retry return 211syn match rubyOperator "\<defined?" display 212syn keyword rubyKeyword super undef yield 213syn keyword rubyBoolean true false 214syn keyword rubyPseudoVariable nil self __FILE__ __LINE__ 215syn keyword rubyBeginEnd BEGIN END 216 217" Special Methods 218if !exists("ruby_no_special_methods") 219 syn keyword rubyAccess public protected private 220 syn keyword rubyAttribute attr attr_accessor attr_reader attr_writer 221 syn match rubyControl "\<\%(exit!\|\%(abort\|at_exit\|exit\|fork\|loop\|trap\)\>\)" 222 syn keyword rubyEval eval class_eval instance_eval module_eval 223 syn keyword rubyException raise fail catch throw 224 syn keyword rubyInclude autoload extend include load require 225 syn keyword rubyKeyword callcc caller lambda proc 226endif 227 228" Comments and Documentation 229syn match rubySharpBang "\%^#!.*" display 230syn keyword rubyTodo FIXME NOTE TODO XXX contained 231syn match rubyComment "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell 232if !exists("ruby_no_comment_fold") 233 syn region rubyMultilineComment start="\%(\%(^\s*#.*\n\)\@<!\%(^\s*#.*\n\)\)\%(\(^\s*#.*\n\)\{1,}\)\@=" end="\%(^\s*#.*\n\)\@<=\%(^\s*#.*\n\)\%(^\s*#\)\@!" contains=rubyComment transparent fold keepend 234 syn region rubyDocumentation start="^=begin\s*$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell fold 235else 236 syn region rubyDocumentation start="^=begin\s*$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell 237endif 238 239" Note: this is a hack to prevent 'keywords' being highlighted as such when called as methods with an explicit receiver 240syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(alias\|and\|begin\|break\|case\|class\|def\|defined\|do\|else\)\>" transparent contains=NONE 241syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(elsif\|end\|ensure\|false\|for\|if\|in\|module\|next\|nil\)\>" transparent contains=NONE 242syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(not\|or\|redo\|rescue\|retry\|return\|self\|super\|then\|true\)\>" transparent contains=NONE 243syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(undef\|unless\|until\|when\|while\|yield\|BEGIN\|END\|__FILE__\|__LINE__\)\>" transparent contains=NONE 244 245syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(abort\|at_exit\|attr\|attr_accessor\|attr_reader\)\>" transparent contains=NONE 246syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(attr_writer\|autoload\|callcc\|catch\|caller\)\>" transparent contains=NONE 247syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(eval\|class_eval\|instance_eval\|module_eval\|exit\)\>" transparent contains=NONE 248syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(extend\|fail\|fork\|include\|lambda\)\>" transparent contains=NONE 249syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(load\|loop\|private\|proc\|protected\)\>" transparent contains=NONE 250syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(public\|require\|raise\|throw\|trap\)\>" transparent contains=NONE 251 252" __END__ Directive 253syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold 254 255" Define the default highlighting. 256" For version 5.7 and earlier: only when not done already 257" For version 5.8 and later: only when an item doesn't have highlighting yet 258if version >= 508 || !exists("did_ruby_syntax_inits") 259 if version < 508 260 let did_ruby_syntax_inits = 1 261 command -nargs=+ HiLink hi link <args> 262 else 263 command -nargs=+ HiLink hi def link <args> 264 endif 265 266 HiLink rubyClass rubyDefine 267 HiLink rubyModule rubyDefine 268 HiLink rubyDefine Define 269 HiLink rubyFunction Function 270 HiLink rubyConditional Conditional 271 HiLink rubyRepeat Repeat 272 HiLink rubyControl Statement 273 HiLink rubyInclude Include 274 HiLink rubyInteger Number 275 HiLink rubyASCIICode Character 276 HiLink rubyFloat Float 277 HiLink rubyBoolean Boolean 278 HiLink rubyException Exception 279 if !exists("ruby_no_identifiers") 280 HiLink rubyIdentifier Identifier 281 else 282 HiLink rubyIdentifier NONE 283 endif 284 HiLink rubyClassVariable rubyIdentifier 285 HiLink rubyConstant Type 286 HiLink rubyGlobalVariable rubyIdentifier 287 HiLink rubyBlockParameter rubyIdentifier 288 HiLink rubyInstanceVariable rubyIdentifier 289 HiLink rubyPredefinedIdentifier rubyIdentifier 290 HiLink rubyPredefinedConstant rubyPredefinedIdentifier 291 HiLink rubyPredefinedVariable rubyPredefinedIdentifier 292 HiLink rubySymbol Constant 293 HiLink rubyKeyword Keyword 294 HiLink rubyOperator Operator 295 HiLink rubyPseudoOperator rubyOperator 296 HiLink rubyBeginEnd Statement 297 HiLink rubyAccess Statement 298 HiLink rubyAttribute Statement 299 HiLink rubyEval Statement 300 HiLink rubyPseudoVariable Constant 301 302 HiLink rubyComment Comment 303 HiLink rubyData Comment 304 HiLink rubyDataDirective Delimiter 305 HiLink rubyDocumentation Comment 306 HiLink rubyEscape Special 307 HiLink rubyInterpolationDelimiter Delimiter 308 HiLink rubyNoInterpolation rubyString 309 HiLink rubySharpBang PreProc 310 HiLink rubyRegexpDelimiter rubyStringDelimiter 311 HiLink rubyStringDelimiter Delimiter 312 HiLink rubyRegexp rubyString 313 HiLink rubyString String 314 HiLink rubyTodo Todo 315 316 HiLink rubyError Error 317 HiLink rubySpaceError rubyError 318 319 delcommand HiLink 320endif 321 322let b:current_syntax = "ruby" 323 324" vim: nowrap sw=2 sts=2 ts=8 noet ff=unix: 325