1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: Ruby 3c6249bb2SBram Moolenaar" Maintainer: Doug Kearns <[email protected]> 4*1d68952aSBram Moolenaar" Last Change: 2009 Dec 2 5a5792f58SBram Moolenaar" URL: http://vim-ruby.rubyforge.org 66b730e11SBram Moolenaar" Anon CVS: See above site 7c6249bb2SBram Moolenaar" Release Coordinator: Doug Kearns <[email protected]> 86b730e11SBram Moolenaar" ---------------------------------------------------------------------------- 96b730e11SBram Moolenaar" 10071d4279SBram Moolenaar" Previous Maintainer: Mirko Nasato 11071d4279SBram Moolenaar" Thanks to perl.vim authors, and to Reimer Behrends. :-) (MN) 126b730e11SBram Moolenaar" ---------------------------------------------------------------------------- 13071d4279SBram Moolenaar 14c1762ccbSBram Moolenaarif exists("b:current_syntax") 15071d4279SBram Moolenaar finish 16071d4279SBram Moolenaarendif 17071d4279SBram Moolenaar 186b730e11SBram Moolenaarif has("folding") && exists("ruby_fold") 196b730e11SBram Moolenaar setlocal foldmethod=syntax 206b730e11SBram Moolenaarendif 216b730e11SBram Moolenaar 22*1d68952aSBram Moolenaarsyn cluster rubyNotTop contains=@rubyExtendedStringSpecial,@rubyRegexpSpecial,@rubyDeclaration,rubyConditional,rubyExceptional,rubyMethodExceptional,rubyTodo 23c236c16dSBram Moolenaar 246b730e11SBram Moolenaarif exists("ruby_space_errors") 256b730e11SBram Moolenaar if !exists("ruby_no_trail_space_error") 266b730e11SBram Moolenaar syn match rubySpaceError display excludenl "\s\+$" 276b730e11SBram Moolenaar endif 286b730e11SBram Moolenaar if !exists("ruby_no_tab_space_error") 296b730e11SBram Moolenaar syn match rubySpaceError display " \+\t"me=e-1 306b730e11SBram Moolenaar endif 316b730e11SBram Moolenaarendif 326b730e11SBram Moolenaar 339964e468SBram Moolenaar" Operators 349964e468SBram Moolenaarif exists("ruby_operators") 35c1762ccbSBram Moolenaar syn match rubyOperator "\%([~!^&|*/%+-]\|\%(class\s*\)\@<!<<\|<=>\|<=\|\%(<\|\<class\s\+\u\w*\s*\)\@<!<[^<]\@=\|===\|==\|=\~\|>>\|>=\|=\@<!>\|\*\*\|\.\.\.\|\.\.\|::\)" 36c1762ccbSBram Moolenaar syn match rubyPseudoOperator "\%(-=\|/=\|\*\*=\|\*=\|&&=\|&=\|&&\|||=\||=\|||\|%=\|+=\|!\~\|!=\)" 37c236c16dSBram Moolenaar syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\w[?!]\=\|[]})]\)\@<=\[\s*" end="\s*]" contains=ALLBUT,@rubyNotTop 389964e468SBram Moolenaarendif 399964e468SBram Moolenaar 40071d4279SBram Moolenaar" Expression Substitution and Backslash Notation 41c236c16dSBram Moolenaarsyn match rubyStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display 42c236c16dSBram Moolenaarsyn match rubyStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display 43*1d68952aSBram Moolenaarsyn match rubyQuoteEscape "\\[\\']" contained display 449964e468SBram Moolenaar 45c236c16dSBram Moolenaarsyn region rubyInterpolation matchgroup=rubyInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,@rubyNotTop 469964e468SBram Moolenaarsyn match rubyInterpolation "#\%(\$\|@@\=\)\w\+" display contained contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable,rubyPredefinedVariable 479964e468SBram Moolenaarsyn match rubyInterpolationDelimiter "#\ze\%(\$\|@@\=\)\w\+" display contained 48c1762ccbSBram Moolenaarsyn match rubyInterpolation "#\$\%(-\w\|\W\)" display contained contains=rubyInterpolationDelimiter,rubyPredefinedVariable,rubyInvalidVariable 49c1762ccbSBram Moolenaarsyn match rubyInterpolationDelimiter "#\ze\$\%(-\w\|\W\)" display contained 509964e468SBram Moolenaarsyn region rubyNoInterpolation start="\\#{" end="}" contained 519964e468SBram Moolenaarsyn match rubyNoInterpolation "\\#{" display contained 529964e468SBram Moolenaarsyn match rubyNoInterpolation "\\#\%(\$\|@@\=\)\w\+" display contained 53c1762ccbSBram Moolenaarsyn match rubyNoInterpolation "\\#\$\W" display contained 546b730e11SBram Moolenaar 556b730e11SBram Moolenaarsyn match rubyDelimEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE 566b730e11SBram Moolenaar 57c236c16dSBram Moolenaarsyn region rubyNestedParentheses start="(" skip="\\\\\|\\)" matchgroup=rubyString end=")" transparent contained 58c236c16dSBram Moolenaarsyn region rubyNestedCurlyBraces start="{" skip="\\\\\|\\}" matchgroup=rubyString end="}" transparent contained 59c236c16dSBram Moolenaarsyn region rubyNestedAngleBrackets start="<" skip="\\\\\|\\>" matchgroup=rubyString end=">" transparent contained 60c236c16dSBram Moolenaarsyn region rubyNestedSquareBrackets start="\[" skip="\\\\\|\\\]" matchgroup=rubyString end="\]" transparent contained 616b730e11SBram Moolenaar 62c236c16dSBram Moolenaar" These are mostly Oniguruma ready 63c236c16dSBram Moolenaarsyn region rubyRegexpComment matchgroup=rubyRegexpSpecial start="(?#" skip="\\)" end=")" contained 64c236c16dSBram Moolenaarsyn region rubyRegexpParens matchgroup=rubyRegexpSpecial start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\)" end=")" contained transparent contains=@rubyRegexpSpecial 65c236c16dSBram Moolenaarsyn region rubyRegexpBrackets matchgroup=rubyRegexpCharClass start="\[\^\=" skip="\\\]" end="\]" contained transparent contains=rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass oneline 66c236c16dSBram Moolenaarsyn match rubyRegexpCharClass "\\[DdHhSsWw]" contained display 67c236c16dSBram Moolenaarsyn match rubyRegexpCharClass "\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\):\]" contained 68*1d68952aSBram Moolenaarsyn match rubyRegexpEscape "\\[].*?+^$|\\/(){}[]" contained 69c236c16dSBram Moolenaarsyn match rubyRegexpQuantifier "[*?+][?+]\=" contained display 70c236c16dSBram Moolenaarsyn match rubyRegexpQuantifier "{\d\+\%(,\d*\)\=}?\=" contained display 71c236c16dSBram Moolenaarsyn match rubyRegexpAnchor "[$^]\|\\[ABbGZz]" contained display 72c236c16dSBram Moolenaarsyn match rubyRegexpDot "\." contained display 73c236c16dSBram Moolenaarsyn match rubyRegexpSpecial "|" contained display 74c236c16dSBram Moolenaarsyn match rubyRegexpSpecial "\\[1-9]\d\=\d\@!" contained display 75c236c16dSBram Moolenaarsyn match rubyRegexpSpecial "\\k<\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\=>" contained display 76c236c16dSBram Moolenaarsyn match rubyRegexpSpecial "\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" contained display 77c236c16dSBram Moolenaarsyn match rubyRegexpSpecial "\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display 78c236c16dSBram Moolenaarsyn match rubyRegexpSpecial "\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display 79c236c16dSBram Moolenaar 80c236c16dSBram Moolenaarsyn cluster rubyStringSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape 816b730e11SBram Moolenaarsyn cluster rubyExtendedStringSpecial contains=@rubyStringSpecial,rubyNestedParentheses,rubyNestedCurlyBraces,rubyNestedAngleBrackets,rubyNestedSquareBrackets 82c236c16dSBram Moolenaarsyn cluster rubyRegexpSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment 83071d4279SBram Moolenaar 84071d4279SBram Moolenaar" Numbers and ASCII Codes 85c1762ccbSBram Moolenaarsyn match rubyASCIICode "\%(\w\|[]})\"'/]\)\@<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)" 86*1d68952aSBram Moolenaarsyn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[xX]\x\+\%(_\x\+\)*\>" display 87*1d68952aSBram Moolenaarsyn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)\>" display 88*1d68952aSBram Moolenaarsyn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[oO]\=\o\+\%(_\o\+\)*\>" display 89*1d68952aSBram Moolenaarsyn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[bB][01]\+\%(_[01]\+\)*\>" display 90*1d68952aSBram Moolenaarsyn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*\>" display 91*1d68952aSBram Moolenaarsyn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)\>" display 92071d4279SBram Moolenaar 936b730e11SBram Moolenaar" Identifiers 946b730e11SBram Moolenaarsyn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent 956b730e11SBram Moolenaarsyn match rubyBlockArgument "&[_[:lower:]][_[:alnum:]]" contains=NONE display transparent 96071d4279SBram Moolenaar 979964e468SBram Moolenaarsyn match rubyConstant "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=\%(\s*(\)\@!" 986b730e11SBram Moolenaarsyn match rubyClassVariable "@@\h\w*" display 996b730e11SBram Moolenaarsyn match rubyInstanceVariable "@\h\w*" display 1006b730e11SBram Moolenaarsyn match rubyGlobalVariable "$\%(\h\w*\|-.\)" 101c1762ccbSBram Moolenaarsyn match rubySymbol "[]})\"':]\@<!:\%(\^\|\~\|<<\|<=>\|<=\|<\|===\|==\|=\~\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)" 102c1762ccbSBram Moolenaarsyn match rubySymbol "[]})\"':]\@<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)" 103c1762ccbSBram Moolenaarsyn match rubySymbol "[]})\"':]\@<!:\%(\$\|@@\=\)\=\h\w*" 104c236c16dSBram Moolenaarsyn match rubySymbol "[]})\"':]\@<!:\h\w*\%([?!=]>\@!\)\=" 105*1d68952aSBram Moolenaarsyn match rubySymbol "\%([{(,]\_s*\)\@<=\l\w*[!?]\=::\@!"he=e-1 106*1d68952aSBram Moolenaarsyn match rubySymbol "[]})\"':]\@<!\h\w*[!?]\=:\s\@="he=e-1 107*1d68952aSBram Moolenaarsyn region rubySymbol start="[]})\"':]\@<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape fold 108c1762ccbSBram Moolenaarsyn region rubySymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold 109071d4279SBram Moolenaar 110c1762ccbSBram Moolenaarsyn match rubyBlockParameter "\h\w*" contained 111c1762ccbSBram Moolenaarsyn region rubyBlockParameterList start="\%(\%(\<do\>\|{\)\s*\)\@<=|" end="|" oneline display contains=rubyBlockParameter 112c1762ccbSBram Moolenaar 113c236c16dSBram Moolenaarsyn match rubyInvalidVariable "$[^ A-Za-z_-]" 1146b730e11SBram Moolenaarsyn match rubyPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~1-9]# 1156b730e11SBram Moolenaarsyn match rubyPredefinedVariable "$_\>" display 1166b730e11SBram Moolenaarsyn match rubyPredefinedVariable "$-[0FIKadilpvw]\>" display 1176b730e11SBram Moolenaarsyn match rubyPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>" display 1181e015460SBram Moolenaarsyn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|KCODE\|LOADED_FEATURES\|LOAD_PATH\|PROGRAM_NAME\|SAFE\|VERBOSE\)\>" display 1196b730e11SBram Moolenaarsyn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(MatchingData\|ARGF\|ARGV\|ENV\)\>\%(\s*(\)\@!" 1206b730e11SBram Moolenaarsyn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(DATA\|FALSE\|NIL\|RUBY_PLATFORM\|RUBY_RELEASE_DATE\)\>\%(\s*(\)\@!" 1216b730e11SBram Moolenaarsyn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(RUBY_VERSION\|STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\|TRUE\)\>\%(\s*(\)\@!" 122071d4279SBram Moolenaar"Obsolete Global Constants 1236b730e11SBram Moolenaar"syn match rubyPredefinedConstant "\%(::\)\=\zs\%(PLATFORM\|RELEASE_DATE\|VERSION\)\>" 1246b730e11SBram Moolenaar"syn match rubyPredefinedConstant "\%(::\)\=\zs\%(NotImplementError\)\>" 125071d4279SBram Moolenaar 126071d4279SBram Moolenaar" Normal Regular Expression 127c236c16dSBram Moolenaarsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,[>]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial keepend fold 128c236c16dSBram Moolenaarsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold 129c236c16dSBram Moolenaar 130c236c16dSBram Moolenaar" Generalized Regular Expression 131c236c16dSBram Moolenaarsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold 132c236c16dSBram Moolenaarsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial fold 133c236c16dSBram Moolenaarsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold 134c236c16dSBram Moolenaarsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial fold 135c236c16dSBram Moolenaarsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial fold 1366b730e11SBram Moolenaar 1376b730e11SBram Moolenaar" Normal String and Shell Command Output 1389964e468SBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold 139*1d68952aSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape fold 1409964e468SBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial fold 1416b730e11SBram Moolenaar 1426b730e11SBram Moolenaar" Generalized Single Quoted String, Symbol and Array of Strings 143c1762ccbSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold 144c1762ccbSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimEscape 145c1762ccbSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimEscape 146c1762ccbSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimEscape 147c1762ccbSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimEscape 148c236c16dSBram Moolenaarsyn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold 149c236c16dSBram Moolenaarsyn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s]{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimEscape 150c236c16dSBram Moolenaarsyn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s]<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimEscape 151c236c16dSBram Moolenaarsyn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimEscape 152c236c16dSBram Moolenaarsyn region rubySymbol matchgroup=rubySymbolDelimiter start="%[s](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimEscape 1536b730e11SBram Moolenaar 1546b730e11SBram Moolenaar" Generalized Double Quoted String and Array of Strings and Shell Command Output 1556b730e11SBram Moolenaar" Note: %= is not matched here as the beginning of a double quoted string 1566b730e11SBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold 1576b730e11SBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold 1586b730e11SBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimEscape fold 1596b730e11SBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold 1606b730e11SBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimEscape fold 1616b730e11SBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimEscape fold 162071d4279SBram Moolenaar 163071d4279SBram Moolenaar" Here Document 164c236c16dSBram Moolenaarsyn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs\%(\h\w*\)+ end=+$+ oneline contains=ALLBUT,@rubyNotTop 165c236c16dSBram Moolenaarsyn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=ALLBUT,@rubyNotTop 166c236c16dSBram Moolenaarsyn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs'\%([^']*\)'+ end=+$+ oneline contains=ALLBUT,@rubyNotTop 167c236c16dSBram Moolenaarsyn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=ALLBUT,@rubyNotTop 168071d4279SBram Moolenaar 169c1762ccbSBram Moolenaarsyn region rubyString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<\z(\h\w*\)\ze+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend 170c1762ccbSBram Moolenaarsyn region rubyString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<"\z([^"]*\)"\ze+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend 171c1762ccbSBram Moolenaarsyn region rubyString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<'\z([^']*\)'\ze+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart fold keepend 172c1762ccbSBram Moolenaarsyn region rubyString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<`\z([^`]*\)`\ze+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend 1736b730e11SBram Moolenaar 174c1762ccbSBram Moolenaarsyn region rubyString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-\z(\h\w*\)\ze+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend 175c1762ccbSBram Moolenaarsyn region rubyString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-"\z([^"]*\)"\ze+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend 176c1762ccbSBram Moolenaarsyn region rubyString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-'\z([^']*\)'\ze+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart fold keepend 177c1762ccbSBram Moolenaarsyn region rubyString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-`\z([^`]*\)`\ze+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend 1786b730e11SBram Moolenaar 1796b730e11SBram Moolenaarif exists('main_syntax') && main_syntax == 'eruby' 180d5cdbeb8SBram Moolenaar let b:ruby_no_expensive = 1 1816b730e11SBram Moolenaarend 182071d4279SBram Moolenaar 1839964e468SBram Moolenaarsyn match rubyAliasDeclaration "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable nextgroup=rubyAliasDeclaration2 skipwhite 1849964e468SBram Moolenaarsyn match rubyAliasDeclaration2 "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable 1859964e468SBram Moolenaarsyn match rubyMethodDeclaration "[^[:space:];#(]\+" contained contains=rubyConstant,rubyBoolean,rubyPseudoVariable,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable 186c236c16dSBram Moolenaarsyn match rubyClassDeclaration "[^[:space:];#<]\+" contained contains=rubyConstant,rubyOperator 187c236c16dSBram Moolenaarsyn match rubyModuleDeclaration "[^[:space:];#<]\+" contained contains=rubyConstant,rubyOperator 188*1d68952aSBram Moolenaarsyn match rubyFunction "\<[_[:alpha:]][_[:alnum:]]*[?!=]\=[[:alnum:]_.:?!=]\@!" contained containedin=rubyMethodDeclaration 1899964e468SBram Moolenaarsyn match rubyFunction "\%(\s\|^\)\@<=[_[:alpha:]][_[:alnum:]]*[?!=]\=\%(\s\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2 1909964e468SBram Moolenaarsyn match rubyFunction "\%([[:space:].]\|^\)\@<=\%(\[\]=\=\|\*\*\|[+-]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|==\|=\~\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration 191c1762ccbSBram Moolenaar 192c236c16dSBram Moolenaarsyn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyFunction,rubyBlockParameter 193c236c16dSBram Moolenaar 194*1d68952aSBram Moolenaar" Keywords 195*1d68952aSBram Moolenaar" Note: the following keywords have already been defined: 196*1d68952aSBram Moolenaar" begin case class def do end for if module unless until while 197*1d68952aSBram Moolenaarsyn match rubyControl "\<\%(and\|break\|in\|next\|not\|or\|redo\|rescue\|retry\|return\)\>[?!]\@!" 198*1d68952aSBram Moolenaarsyn match rubyOperator "\<defined?" display 199*1d68952aSBram Moolenaarsyn match rubyKeyword "\<\%(super\|yield\)\>[?!]\@!" 200*1d68952aSBram Moolenaarsyn match rubyBoolean "\<\%(true\|false\)\>[?!]\@!" 201*1d68952aSBram Moolenaarsyn match rubyPseudoVariable "\<\%(nil\|self\|__FILE__\|__LINE__\)\>[?!]\@!" 202*1d68952aSBram Moolenaarsyn match rubyBeginEnd "\<\%(BEGIN\|END\)\>[?!]\@!" 203*1d68952aSBram Moolenaar 204c1762ccbSBram Moolenaar" Expensive Mode - match 'end' with the appropriate opening keyword for syntax 205c1762ccbSBram Moolenaar" based folding and special highlighting of module/class/method definitions 206d5cdbeb8SBram Moolenaarif !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive") 2079964e468SBram Moolenaar syn match rubyDefine "\<alias\>" nextgroup=rubyAliasDeclaration skipwhite skipnl 2089964e468SBram Moolenaar syn match rubyDefine "\<def\>" nextgroup=rubyMethodDeclaration skipwhite skipnl 209c236c16dSBram Moolenaar syn match rubyDefine "\<undef\>" nextgroup=rubyFunction skipwhite skipnl 2109964e468SBram Moolenaar syn match rubyClass "\<class\>" nextgroup=rubyClassDeclaration skipwhite skipnl 2119964e468SBram Moolenaar syn match rubyModule "\<module\>" nextgroup=rubyModuleDeclaration skipwhite skipnl 212*1d68952aSBram Moolenaar 213*1d68952aSBram Moolenaar syn region rubyMethodBlock start="\<def\>" matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold 214c236c16dSBram Moolenaar syn region rubyBlock start="\<class\>" matchgroup=rubyClass end="\<end\>" contains=ALLBUT,@rubyNotTop fold 215c236c16dSBram Moolenaar syn region rubyBlock start="\<module\>" matchgroup=rubyModule end="\<end\>" contains=ALLBUT,@rubyNotTop fold 216071d4279SBram Moolenaar 2176b730e11SBram Moolenaar " modifiers 218c1762ccbSBram Moolenaar syn match rubyConditionalModifier "\<\%(if\|unless\)\>" display 219c1762ccbSBram Moolenaar syn match rubyRepeatModifier "\<\%(while\|until\)\>" display 220071d4279SBram Moolenaar 221c236c16dSBram Moolenaar syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold 222c1762ccbSBram Moolenaar " curly bracket block or hash literal 223c236c16dSBram Moolenaar syn region rubyCurlyBlock start="{" end="}" contains=ALLBUT,@rubyNotTop fold 224c236c16dSBram Moolenaar syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@<!\[" end="]" contains=ALLBUT,@rubyNotTop fold 225071d4279SBram Moolenaar 226c1762ccbSBram Moolenaar " statements without 'do' 227c236c16dSBram Moolenaar syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold 228c236c16dSBram Moolenaar syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold 229c236c16dSBram Moolenaar syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold 230071d4279SBram Moolenaar 231c236c16dSBram Moolenaar syn match rubyConditional "\<\%(then\|else\|when\)\>[?!]\@!" contained containedin=rubyCaseExpression 232c236c16dSBram Moolenaar syn match rubyConditional "\<\%(then\|else\|elsif\)\>[?!]\@!" contained containedin=rubyConditionalExpression 233c1762ccbSBram Moolenaar 234*1d68952aSBram Moolenaar syn match rubyExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyBlockExpression 235*1d68952aSBram Moolenaar syn match rubyMethodExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyMethodBlock 236*1d68952aSBram Moolenaar 237c1762ccbSBram Moolenaar " statements with optional 'do' 238c236c16dSBram Moolenaar syn region rubyOptionalDoLine matchgroup=rubyRepeat start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyOptionalDo end="\%(\<do\>\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyNotTop 239c236c16dSBram Moolenaar syn region rubyRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine fold 240071d4279SBram Moolenaar 241071d4279SBram Moolenaar if !exists("ruby_minlines") 242071d4279SBram Moolenaar let ruby_minlines = 50 243071d4279SBram Moolenaar endif 244071d4279SBram Moolenaar exec "syn sync minlines=" . ruby_minlines 245071d4279SBram Moolenaar 2466b730e11SBram Moolenaarelse 247c236c16dSBram Moolenaar syn match rubyControl "\<def\>[?!]\@!" nextgroup=rubyMethodDeclaration skipwhite skipnl 248c236c16dSBram Moolenaar syn match rubyControl "\<class\>[?!]\@!" nextgroup=rubyClassDeclaration skipwhite skipnl 249c236c16dSBram Moolenaar syn match rubyControl "\<module\>[?!]\@!" nextgroup=rubyModuleDeclaration skipwhite skipnl 250*1d68952aSBram Moolenaar syn match rubyControl "\<\%(case\|begin\|do\|for\|if\|unless\|while\|until\|else\|elsif\|ensure\|then\|when\|end\)\>[?!]\@!" 251c236c16dSBram Moolenaar syn match rubyKeyword "\<\%(alias\|undef\)\>[?!]\@!" 2526b730e11SBram Moolenaarendif 253071d4279SBram Moolenaar 2546b730e11SBram Moolenaar" Special Methods 2556b730e11SBram Moolenaarif !exists("ruby_no_special_methods") 256c236c16dSBram Moolenaar syn keyword rubyAccess public protected private module_function 257c236c16dSBram Moolenaar " attr is a common variable name 258c236c16dSBram Moolenaar syn match rubyAttribute "\%(\%(^\|;\)\s*\)\@<=attr\>\(\s*[.=]\)\@!" 259c236c16dSBram Moolenaar syn keyword rubyAttribute attr_accessor attr_reader attr_writer 260c236c16dSBram Moolenaar syn match rubyControl "\<\%(exit!\|\%(abort\|at_exit\|exit\|fork\|loop\|trap\)\>[?!]\@!\)" 2616b730e11SBram Moolenaar syn keyword rubyEval eval class_eval instance_eval module_eval 2626b730e11SBram Moolenaar syn keyword rubyException raise fail catch throw 263c236c16dSBram Moolenaar " false positive with 'include?' 264c236c16dSBram Moolenaar syn match rubyInclude "\<include\>[?!]\@!" 265c236c16dSBram Moolenaar syn keyword rubyInclude autoload extend load require 2666b730e11SBram Moolenaar syn keyword rubyKeyword callcc caller lambda proc 267071d4279SBram Moolenaarendif 268071d4279SBram Moolenaar 2696b730e11SBram Moolenaar" Comments and Documentation 2706b730e11SBram Moolenaarsyn match rubySharpBang "\%^#!.*" display 271c1762ccbSBram Moolenaarsyn keyword rubyTodo FIXME NOTE TODO OPTIMIZE XXX contained 2726b730e11SBram Moolenaarsyn match rubyComment "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell 2739964e468SBram Moolenaarif !exists("ruby_no_comment_fold") 2749964e468SBram Moolenaar syn region rubyMultilineComment start="\%(\%(^\s*#.*\n\)\@<!\%(^\s*#.*\n\)\)\%(\(^\s*#.*\n\)\{1,}\)\@=" end="\%(^\s*#.*\n\)\@<=\%(^\s*#.*\n\)\%(^\s*#\)\@!" contains=rubyComment transparent fold keepend 275c1762ccbSBram Moolenaar syn region rubyDocumentation start="^=begin\ze\%(\s.*\)\=$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell fold 2769964e468SBram Moolenaarelse 2779964e468SBram Moolenaar syn region rubyDocumentation start="^=begin\s*$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell 2789964e468SBram Moolenaarendif 2796b730e11SBram Moolenaar 2806b730e11SBram Moolenaar" Note: this is a hack to prevent 'keywords' being highlighted as such when called as methods with an explicit receiver 2816b730e11SBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(alias\|and\|begin\|break\|case\|class\|def\|defined\|do\|else\)\>" transparent contains=NONE 2826b730e11SBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(elsif\|end\|ensure\|false\|for\|if\|in\|module\|next\|nil\)\>" transparent contains=NONE 2836b730e11SBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(not\|or\|redo\|rescue\|retry\|return\|self\|super\|then\|true\)\>" transparent contains=NONE 2846b730e11SBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(undef\|unless\|until\|when\|while\|yield\|BEGIN\|END\|__FILE__\|__LINE__\)\>" transparent contains=NONE 2856b730e11SBram Moolenaar 286c236c16dSBram Moolenaarsyn match rubyKeywordAsMethod "\<\%(alias\|begin\|case\|class\|def\|do\|end\)[?!]" transparent contains=NONE 287c236c16dSBram Moolenaarsyn match rubyKeywordAsMethod "\<\%(if\|module\|undef\|unless\|until\|while\)[?!]" transparent contains=NONE 288c236c16dSBram Moolenaar 2896b730e11SBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(abort\|at_exit\|attr\|attr_accessor\|attr_reader\)\>" transparent contains=NONE 2906b730e11SBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(attr_writer\|autoload\|callcc\|catch\|caller\)\>" transparent contains=NONE 2916b730e11SBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(eval\|class_eval\|instance_eval\|module_eval\|exit\)\>" transparent contains=NONE 2926b730e11SBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(extend\|fail\|fork\|include\|lambda\)\>" transparent contains=NONE 2936b730e11SBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(load\|loop\|private\|proc\|protected\)\>" transparent contains=NONE 2946b730e11SBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(public\|require\|raise\|throw\|trap\)\>" transparent contains=NONE 295071d4279SBram Moolenaar 296071d4279SBram Moolenaar" __END__ Directive 2976b730e11SBram Moolenaarsyn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold 298071d4279SBram Moolenaar 299c1762ccbSBram Moolenaarhi def link rubyClass rubyDefine 300c1762ccbSBram Moolenaarhi def link rubyModule rubyDefine 301*1d68952aSBram Moolenaarhi def link rubyMethodExceptional rubyDefine 302c1762ccbSBram Moolenaarhi def link rubyDefine Define 303c1762ccbSBram Moolenaarhi def link rubyFunction Function 304c1762ccbSBram Moolenaarhi def link rubyConditional Conditional 305c1762ccbSBram Moolenaarhi def link rubyConditionalModifier rubyConditional 306*1d68952aSBram Moolenaarhi def link rubyExceptional rubyConditional 307c1762ccbSBram Moolenaarhi def link rubyRepeat Repeat 308c1762ccbSBram Moolenaarhi def link rubyRepeatModifier rubyRepeat 309c1762ccbSBram Moolenaarhi def link rubyOptionalDo rubyRepeat 310c1762ccbSBram Moolenaarhi def link rubyControl Statement 311c1762ccbSBram Moolenaarhi def link rubyInclude Include 312c1762ccbSBram Moolenaarhi def link rubyInteger Number 313c1762ccbSBram Moolenaarhi def link rubyASCIICode Character 314c1762ccbSBram Moolenaarhi def link rubyFloat Float 315c1762ccbSBram Moolenaarhi def link rubyBoolean Boolean 316c1762ccbSBram Moolenaarhi def link rubyException Exception 3176b730e11SBram Moolenaarif !exists("ruby_no_identifiers") 318c1762ccbSBram Moolenaar hi def link rubyIdentifier Identifier 3196b730e11SBram Moolenaarelse 320c1762ccbSBram Moolenaar hi def link rubyIdentifier NONE 3216b730e11SBram Moolenaarendif 322c1762ccbSBram Moolenaarhi def link rubyClassVariable rubyIdentifier 323c1762ccbSBram Moolenaarhi def link rubyConstant Type 324c1762ccbSBram Moolenaarhi def link rubyGlobalVariable rubyIdentifier 325c1762ccbSBram Moolenaarhi def link rubyBlockParameter rubyIdentifier 326c1762ccbSBram Moolenaarhi def link rubyInstanceVariable rubyIdentifier 327c1762ccbSBram Moolenaarhi def link rubyPredefinedIdentifier rubyIdentifier 328c1762ccbSBram Moolenaarhi def link rubyPredefinedConstant rubyPredefinedIdentifier 329c1762ccbSBram Moolenaarhi def link rubyPredefinedVariable rubyPredefinedIdentifier 330c1762ccbSBram Moolenaarhi def link rubySymbol Constant 331c1762ccbSBram Moolenaarhi def link rubyKeyword Keyword 332c1762ccbSBram Moolenaarhi def link rubyOperator Operator 333c1762ccbSBram Moolenaarhi def link rubyPseudoOperator rubyOperator 334c1762ccbSBram Moolenaarhi def link rubyBeginEnd Statement 335c1762ccbSBram Moolenaarhi def link rubyAccess Statement 336c1762ccbSBram Moolenaarhi def link rubyAttribute Statement 337c1762ccbSBram Moolenaarhi def link rubyEval Statement 338c1762ccbSBram Moolenaarhi def link rubyPseudoVariable Constant 339071d4279SBram Moolenaar 340c1762ccbSBram Moolenaarhi def link rubyComment Comment 341c1762ccbSBram Moolenaarhi def link rubyData Comment 342c1762ccbSBram Moolenaarhi def link rubyDataDirective Delimiter 343c1762ccbSBram Moolenaarhi def link rubyDocumentation Comment 344c236c16dSBram Moolenaarhi def link rubyTodo Todo 345c236c16dSBram Moolenaar 346*1d68952aSBram Moolenaarhi def link rubyQuoteEscape rubyStringEscape 347c236c16dSBram Moolenaarhi def link rubyStringEscape Special 348c1762ccbSBram Moolenaarhi def link rubyInterpolationDelimiter Delimiter 349c1762ccbSBram Moolenaarhi def link rubyNoInterpolation rubyString 350c1762ccbSBram Moolenaarhi def link rubySharpBang PreProc 351c1762ccbSBram Moolenaarhi def link rubyRegexpDelimiter rubyStringDelimiter 352c236c16dSBram Moolenaarhi def link rubySymbolDelimiter rubyStringDelimiter 353c1762ccbSBram Moolenaarhi def link rubyStringDelimiter Delimiter 354c1762ccbSBram Moolenaarhi def link rubyString String 355c236c16dSBram Moolenaarhi def link rubyRegexpEscape rubyRegexpSpecial 356c236c16dSBram Moolenaarhi def link rubyRegexpQuantifier rubyRegexpSpecial 357c236c16dSBram Moolenaarhi def link rubyRegexpAnchor rubyRegexpSpecial 358c236c16dSBram Moolenaarhi def link rubyRegexpDot rubyRegexpCharClass 359c236c16dSBram Moolenaarhi def link rubyRegexpCharClass rubyRegexpSpecial 360c236c16dSBram Moolenaarhi def link rubyRegexpSpecial Special 361c236c16dSBram Moolenaarhi def link rubyRegexpComment Comment 362c236c16dSBram Moolenaarhi def link rubyRegexp rubyString 3636b730e11SBram Moolenaar 364c1762ccbSBram Moolenaarhi def link rubyInvalidVariable Error 365c1762ccbSBram Moolenaarhi def link rubyError Error 366c1762ccbSBram Moolenaarhi def link rubySpaceError rubyError 367071d4279SBram Moolenaar 368071d4279SBram Moolenaarlet b:current_syntax = "ruby" 369071d4279SBram Moolenaar 370a7241f5fSBram Moolenaar" vim: nowrap sw=2 sts=2 ts=8 noet: 371