1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: Ruby 3c6249bb2SBram Moolenaar" Maintainer: Doug Kearns <[email protected]> 4*ec7944aaSBram Moolenaar" URL: https://github.com/vim-ruby/vim-ruby 5c6249bb2SBram Moolenaar" Release Coordinator: Doug Kearns <[email protected]> 66b730e11SBram Moolenaar" ---------------------------------------------------------------------------- 76b730e11SBram Moolenaar" 8071d4279SBram Moolenaar" Previous Maintainer: Mirko Nasato 9071d4279SBram Moolenaar" Thanks to perl.vim authors, and to Reimer Behrends. :-) (MN) 106b730e11SBram Moolenaar" ---------------------------------------------------------------------------- 11071d4279SBram Moolenaar 12c1762ccbSBram Moolenaarif exists("b:current_syntax") 13071d4279SBram Moolenaar finish 14071d4279SBram Moolenaarendif 15071d4279SBram Moolenaar 166b730e11SBram Moolenaarif has("folding") && exists("ruby_fold") 176b730e11SBram Moolenaar setlocal foldmethod=syntax 186b730e11SBram Moolenaarendif 196b730e11SBram Moolenaar 201d68952aSBram Moolenaarsyn cluster rubyNotTop contains=@rubyExtendedStringSpecial,@rubyRegexpSpecial,@rubyDeclaration,rubyConditional,rubyExceptional,rubyMethodExceptional,rubyTodo 21c236c16dSBram Moolenaar 226b730e11SBram Moolenaarif exists("ruby_space_errors") 236b730e11SBram Moolenaar if !exists("ruby_no_trail_space_error") 246b730e11SBram Moolenaar syn match rubySpaceError display excludenl "\s\+$" 256b730e11SBram Moolenaar endif 266b730e11SBram Moolenaar if !exists("ruby_no_tab_space_error") 276b730e11SBram Moolenaar syn match rubySpaceError display " \+\t"me=e-1 286b730e11SBram Moolenaar endif 296b730e11SBram Moolenaarendif 306b730e11SBram Moolenaar 319964e468SBram Moolenaar" Operators 329964e468SBram Moolenaarif exists("ruby_operators") 33*ec7944aaSBram Moolenaar syn match rubyOperator "[~!^&|*/%+-]\|\%(class\s*\)\@<!<<\|<=>\|<=\|\%(<\|\<class\s\+\u\w*\s*\)\@<!<[^<]\@=\|===\|==\|=\~\|>>\|>=\|=\@<!>\|\*\*\|\.\.\.\|\.\.\|::" 34*ec7944aaSBram Moolenaar syn match rubyOperator "->\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|&&\|||=\||=\|||\|%=\|+=\|!\~\|!=" 35c236c16dSBram Moolenaar syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\w[?!]\=\|[]})]\)\@<=\[\s*" end="\s*]" contains=ALLBUT,@rubyNotTop 369964e468SBram Moolenaarendif 379964e468SBram Moolenaar 38071d4279SBram Moolenaar" Expression Substitution and Backslash Notation 39c236c16dSBram Moolenaarsyn match rubyStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display 40c236c16dSBram Moolenaarsyn match rubyStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display 411d68952aSBram Moolenaarsyn match rubyQuoteEscape "\\[\\']" contained display 429964e468SBram Moolenaar 43c236c16dSBram Moolenaarsyn region rubyInterpolation matchgroup=rubyInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,@rubyNotTop 449964e468SBram Moolenaarsyn match rubyInterpolation "#\%(\$\|@@\=\)\w\+" display contained contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable,rubyPredefinedVariable 459964e468SBram Moolenaarsyn match rubyInterpolationDelimiter "#\ze\%(\$\|@@\=\)\w\+" display contained 46c1762ccbSBram Moolenaarsyn match rubyInterpolation "#\$\%(-\w\|\W\)" display contained contains=rubyInterpolationDelimiter,rubyPredefinedVariable,rubyInvalidVariable 47c1762ccbSBram Moolenaarsyn match rubyInterpolationDelimiter "#\ze\$\%(-\w\|\W\)" display contained 489964e468SBram Moolenaarsyn region rubyNoInterpolation start="\\#{" end="}" contained 499964e468SBram Moolenaarsyn match rubyNoInterpolation "\\#{" display contained 509964e468SBram Moolenaarsyn match rubyNoInterpolation "\\#\%(\$\|@@\=\)\w\+" display contained 51c1762ccbSBram Moolenaarsyn match rubyNoInterpolation "\\#\$\W" display contained 526b730e11SBram Moolenaar 536b730e11SBram Moolenaarsyn match rubyDelimEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE 546b730e11SBram Moolenaar 55c236c16dSBram Moolenaarsyn region rubyNestedParentheses start="(" skip="\\\\\|\\)" matchgroup=rubyString end=")" transparent contained 56c236c16dSBram Moolenaarsyn region rubyNestedCurlyBraces start="{" skip="\\\\\|\\}" matchgroup=rubyString end="}" transparent contained 57c236c16dSBram Moolenaarsyn region rubyNestedAngleBrackets start="<" skip="\\\\\|\\>" matchgroup=rubyString end=">" transparent contained 58c236c16dSBram Moolenaarsyn region rubyNestedSquareBrackets start="\[" skip="\\\\\|\\\]" matchgroup=rubyString end="\]" transparent contained 596b730e11SBram Moolenaar 60c236c16dSBram Moolenaar" These are mostly Oniguruma ready 61c236c16dSBram Moolenaarsyn region rubyRegexpComment matchgroup=rubyRegexpSpecial start="(?#" skip="\\)" end=")" contained 62c236c16dSBram Moolenaarsyn region rubyRegexpParens matchgroup=rubyRegexpSpecial start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\)" end=")" contained transparent contains=@rubyRegexpSpecial 63c236c16dSBram Moolenaarsyn region rubyRegexpBrackets matchgroup=rubyRegexpCharClass start="\[\^\=" skip="\\\]" end="\]" contained transparent contains=rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass oneline 64c236c16dSBram Moolenaarsyn match rubyRegexpCharClass "\\[DdHhSsWw]" contained display 65c236c16dSBram Moolenaarsyn match rubyRegexpCharClass "\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\):\]" contained 661d68952aSBram Moolenaarsyn match rubyRegexpEscape "\\[].*?+^$|\\/(){}[]" contained 67c236c16dSBram Moolenaarsyn match rubyRegexpQuantifier "[*?+][?+]\=" contained display 68c236c16dSBram Moolenaarsyn match rubyRegexpQuantifier "{\d\+\%(,\d*\)\=}?\=" contained display 69c236c16dSBram Moolenaarsyn match rubyRegexpAnchor "[$^]\|\\[ABbGZz]" contained display 70c236c16dSBram Moolenaarsyn match rubyRegexpDot "\." contained display 71c236c16dSBram Moolenaarsyn match rubyRegexpSpecial "|" contained display 72c236c16dSBram Moolenaarsyn match rubyRegexpSpecial "\\[1-9]\d\=\d\@!" contained display 73c236c16dSBram Moolenaarsyn match rubyRegexpSpecial "\\k<\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\=>" contained display 74c236c16dSBram Moolenaarsyn match rubyRegexpSpecial "\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" contained display 75c236c16dSBram Moolenaarsyn match rubyRegexpSpecial "\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display 76c236c16dSBram Moolenaarsyn match rubyRegexpSpecial "\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display 77c236c16dSBram Moolenaar 78c236c16dSBram Moolenaarsyn cluster rubyStringSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape 796b730e11SBram Moolenaarsyn cluster rubyExtendedStringSpecial contains=@rubyStringSpecial,rubyNestedParentheses,rubyNestedCurlyBraces,rubyNestedAngleBrackets,rubyNestedSquareBrackets 80c236c16dSBram Moolenaarsyn cluster rubyRegexpSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment 81071d4279SBram Moolenaar 82071d4279SBram Moolenaar" Numbers and ASCII Codes 83c1762ccbSBram Moolenaarsyn match rubyASCIICode "\%(\w\|[]})\"'/]\)\@<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)" 841d68952aSBram Moolenaarsyn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[xX]\x\+\%(_\x\+\)*\>" display 851d68952aSBram Moolenaarsyn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)\>" display 861d68952aSBram Moolenaarsyn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[oO]\=\o\+\%(_\o\+\)*\>" display 871d68952aSBram Moolenaarsyn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[bB][01]\+\%(_[01]\+\)*\>" display 881d68952aSBram Moolenaarsyn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*\>" display 891d68952aSBram Moolenaarsyn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)\>" display 90071d4279SBram Moolenaar 916b730e11SBram Moolenaar" Identifiers 926b730e11SBram Moolenaarsyn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent 936b730e11SBram Moolenaarsyn match rubyBlockArgument "&[_[:lower:]][_[:alnum:]]" contains=NONE display transparent 94071d4279SBram Moolenaar 959964e468SBram Moolenaarsyn match rubyConstant "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=\%(\s*(\)\@!" 96*ec7944aaSBram Moolenaarsyn match rubyClassVariable "@@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display 97*ec7944aaSBram Moolenaarsyn match rubyInstanceVariable "@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display 98*ec7944aaSBram Moolenaarsyn match rubyGlobalVariable "$\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\|-.\)" 99*ec7944aaSBram Moolenaarsyn match rubySymbol "[]})\"':]\@<!:\%(\^\|\~\|<<\|<=>\|<=\|<\|===\|[=!]=\|[=!]\~\|!\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)" 100c1762ccbSBram Moolenaarsyn match rubySymbol "[]})\"':]\@<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)" 101*ec7944aaSBram Moolenaarsyn match rubySymbol "[]})\"':]\@<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" 102*ec7944aaSBram Moolenaarsyn match rubySymbol "[]})\"':]\@<!:\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\=" 1031d68952aSBram Moolenaarsyn match rubySymbol "\%([{(,]\_s*\)\@<=\l\w*[!?]\=::\@!"he=e-1 104*ec7944aaSBram Moolenaarsyn match rubySymbol "[]})\"':]\@<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:\s\@="he=e-1 105*ec7944aaSBram Moolenaarsyn match rubySymbol "\%([{(,]\_s*\)\@<=[[:space:],{]\l\w*[!?]\=::\@!"hs=s+1,he=e-1 106*ec7944aaSBram Moolenaarsyn match rubySymbol "[[:space:],{]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:\s\@="hs=s+1,he=e-1 1071d68952aSBram Moolenaarsyn region rubySymbol start="[]})\"':]\@<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape fold 108c1762ccbSBram Moolenaarsyn region rubySymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold 109071d4279SBram Moolenaar 110*ec7944aaSBram Moolenaarsyn match rubyBlockParameter "\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" contained 111c1762ccbSBram Moolenaarsyn region rubyBlockParameterList start="\%(\%(\<do\>\|{\)\s*\)\@<=|" end="|" oneline display contains=rubyBlockParameter 112c1762ccbSBram Moolenaar 113c236c16dSBram Moolenaarsyn match rubyInvalidVariable "$[^ A-Za-z_-]" 114*ec7944aaSBram Moolenaarsyn match rubyPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~]# 115*ec7944aaSBram Moolenaarsyn match rubyPredefinedVariable "$\d\+" display 1166b730e11SBram Moolenaarsyn match rubyPredefinedVariable "$_\>" display 1176b730e11SBram Moolenaarsyn match rubyPredefinedVariable "$-[0FIKadilpvw]\>" display 1186b730e11SBram Moolenaarsyn match rubyPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>" display 1191e015460SBram Moolenaarsyn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|KCODE\|LOADED_FEATURES\|LOAD_PATH\|PROGRAM_NAME\|SAFE\|VERBOSE\)\>" display 1206b730e11SBram Moolenaarsyn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(MatchingData\|ARGF\|ARGV\|ENV\)\>\%(\s*(\)\@!" 121*ec7944aaSBram Moolenaarsyn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(DATA\|FALSE\|NIL\)\>\%(\s*(\)\@!" 122*ec7944aaSBram Moolenaarsyn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\|TRUE\)\>\%(\s*(\)\@!" 123*ec7944aaSBram Moolenaarsyn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(RUBY_\%(VERSION\|RELEASE_DATE\|PLATFORM\|PATCHLEVEL\|REVISION\|DESCRIPTION\|COPYRIGHT\|ENGINE\)\)\>\%(\s*(\)\@!" 124071d4279SBram Moolenaar 125071d4279SBram Moolenaar" Normal Regular Expression 126*ec7944aaSBram Moolenaarsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold 127c236c16dSBram Moolenaarsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold 128c236c16dSBram Moolenaar 129c236c16dSBram Moolenaar" Generalized Regular Expression 130c236c16dSBram Moolenaarsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.? /]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold 131c236c16dSBram Moolenaarsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial fold 132c236c16dSBram Moolenaarsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold 133c236c16dSBram Moolenaarsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial fold 134c236c16dSBram Moolenaarsyn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial fold 1356b730e11SBram Moolenaar 1366b730e11SBram Moolenaar" Normal String and Shell Command Output 137*ec7944aaSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial,@Spell fold 138*ec7944aaSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape,@Spell fold 1399964e468SBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial fold 1406b730e11SBram Moolenaar 1416b730e11SBram Moolenaar" Generalized Single Quoted String, Symbol and Array of Strings 142*ec7944aaSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[qwi]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold 143*ec7944aaSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[qwi]{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimEscape 144*ec7944aaSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[qwi]<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimEscape 145*ec7944aaSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[qwi]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimEscape 146*ec7944aaSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[qwi](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimEscape 147*ec7944aaSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%q " end=" " skip="\\\\\|\\)" fold 148*ec7944aaSBram Moolenaarsyn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.? /]\)" end="\z1" skip="\\\\\|\\\z1" fold 149*ec7944aaSBram Moolenaarsyn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimEscape 150*ec7944aaSBram Moolenaarsyn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimEscape 151*ec7944aaSBram Moolenaarsyn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimEscape 152*ec7944aaSBram 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 157*ec7944aaSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[QWIx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold 158*ec7944aaSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[QWIx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimEscape fold 159*ec7944aaSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[QWIx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold 160*ec7944aaSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[QWIx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimEscape fold 161*ec7944aaSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[QWIx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimEscape fold 162*ec7944aaSBram Moolenaarsyn region rubyString matchgroup=rubyStringDelimiter start="%[Qx] " end=" " skip="\\\\\|\\)" contains=@rubyStringSpecial fold 163071d4279SBram Moolenaar 164071d4279SBram Moolenaar" Here Document 165*ec7944aaSBram Moolenaarsyn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)+ 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 168c236c16dSBram Moolenaarsyn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<-\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=ALLBUT,@rubyNotTop 169071d4279SBram Moolenaar 170*ec7944aaSBram Moolenaarsyn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend 171*ec7944aaSBram Moolenaarsyn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend 172*ec7944aaSBram Moolenaarsyn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc fold keepend 173*ec7944aaSBram Moolenaarsyn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend 1746b730e11SBram Moolenaar 175*ec7944aaSBram Moolenaarsyn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<-\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend 176*ec7944aaSBram Moolenaarsyn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<-"\z([^"]*\)"\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend 177*ec7944aaSBram Moolenaarsyn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<-'\z([^']*\)'\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart fold keepend 178*ec7944aaSBram Moolenaarsyn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<-`\z([^`]*\)`\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend 1796b730e11SBram Moolenaar 1806b730e11SBram Moolenaarif exists('main_syntax') && main_syntax == 'eruby' 181d5cdbeb8SBram Moolenaar let b:ruby_no_expensive = 1 1826b730e11SBram Moolenaarend 183071d4279SBram Moolenaar 1849964e468SBram Moolenaarsyn match rubyAliasDeclaration "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable nextgroup=rubyAliasDeclaration2 skipwhite 1859964e468SBram Moolenaarsyn match rubyAliasDeclaration2 "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable 1869964e468SBram Moolenaarsyn match rubyMethodDeclaration "[^[:space:];#(]\+" contained contains=rubyConstant,rubyBoolean,rubyPseudoVariable,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable 187c236c16dSBram Moolenaarsyn match rubyClassDeclaration "[^[:space:];#<]\+" contained contains=rubyConstant,rubyOperator 188c236c16dSBram Moolenaarsyn match rubyModuleDeclaration "[^[:space:];#<]\+" contained contains=rubyConstant,rubyOperator 1891d68952aSBram Moolenaarsyn match rubyFunction "\<[_[:alpha:]][_[:alnum:]]*[?!=]\=[[:alnum:]_.:?!=]\@!" contained containedin=rubyMethodDeclaration 1909964e468SBram Moolenaarsyn match rubyFunction "\%(\s\|^\)\@<=[_[:alpha:]][_[:alnum:]]*[?!=]\=\%(\s\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2 191*ec7944aaSBram Moolenaarsyn match rubyFunction "\%([[:space:].]\|^\)\@<=\%(\[\]=\=\|\*\*\|[+-]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|[=!]=\|[=!]\~\|!\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration 192c1762ccbSBram Moolenaar 193c236c16dSBram Moolenaarsyn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyFunction,rubyBlockParameter 194c236c16dSBram Moolenaar 1951d68952aSBram Moolenaar" Keywords 1961d68952aSBram Moolenaar" Note: the following keywords have already been defined: 1971d68952aSBram Moolenaar" begin case class def do end for if module unless until while 1981d68952aSBram Moolenaarsyn match rubyControl "\<\%(and\|break\|in\|next\|not\|or\|redo\|rescue\|retry\|return\)\>[?!]\@!" 1991d68952aSBram Moolenaarsyn match rubyOperator "\<defined?" display 2001d68952aSBram Moolenaarsyn match rubyKeyword "\<\%(super\|yield\)\>[?!]\@!" 2011d68952aSBram Moolenaarsyn match rubyBoolean "\<\%(true\|false\)\>[?!]\@!" 202*ec7944aaSBram Moolenaarsyn match rubyPseudoVariable "\<\%(nil\|self\|__ENCODING__\|__FILE__\|__LINE__\|__callee__\|__method__\)\>[?!]\@!" " TODO: reorganise 2031d68952aSBram Moolenaarsyn match rubyBeginEnd "\<\%(BEGIN\|END\)\>[?!]\@!" 2041d68952aSBram Moolenaar 205c1762ccbSBram Moolenaar" Expensive Mode - match 'end' with the appropriate opening keyword for syntax 206c1762ccbSBram Moolenaar" based folding and special highlighting of module/class/method definitions 207d5cdbeb8SBram Moolenaarif !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive") 2089964e468SBram Moolenaar syn match rubyDefine "\<alias\>" nextgroup=rubyAliasDeclaration skipwhite skipnl 2099964e468SBram Moolenaar syn match rubyDefine "\<def\>" nextgroup=rubyMethodDeclaration skipwhite skipnl 210c236c16dSBram Moolenaar syn match rubyDefine "\<undef\>" nextgroup=rubyFunction skipwhite skipnl 2119964e468SBram Moolenaar syn match rubyClass "\<class\>" nextgroup=rubyClassDeclaration skipwhite skipnl 2129964e468SBram Moolenaar syn match rubyModule "\<module\>" nextgroup=rubyModuleDeclaration skipwhite skipnl 2131d68952aSBram Moolenaar 2141d68952aSBram Moolenaar syn region rubyMethodBlock start="\<def\>" matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold 215c236c16dSBram Moolenaar syn region rubyBlock start="\<class\>" matchgroup=rubyClass end="\<end\>" contains=ALLBUT,@rubyNotTop fold 216c236c16dSBram Moolenaar syn region rubyBlock start="\<module\>" matchgroup=rubyModule end="\<end\>" contains=ALLBUT,@rubyNotTop fold 217071d4279SBram Moolenaar 2186b730e11SBram Moolenaar " modifiers 219c1762ccbSBram Moolenaar syn match rubyConditionalModifier "\<\%(if\|unless\)\>" display 220c1762ccbSBram Moolenaar syn match rubyRepeatModifier "\<\%(while\|until\)\>" display 221071d4279SBram Moolenaar 222c236c16dSBram Moolenaar syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold 223c1762ccbSBram Moolenaar " curly bracket block or hash literal 224*ec7944aaSBram Moolenaar syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop fold 225c236c16dSBram Moolenaar syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@<!\[" end="]" contains=ALLBUT,@rubyNotTop fold 226071d4279SBram Moolenaar 227c1762ccbSBram Moolenaar " statements without 'do' 228c236c16dSBram Moolenaar syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold 229c236c16dSBram Moolenaar syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold 230*ec7944aaSBram Moolenaar syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" end="\%(\%(\%(\.\@<!\.\)\|::\)\s*\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold 231071d4279SBram Moolenaar 232c236c16dSBram Moolenaar syn match rubyConditional "\<\%(then\|else\|when\)\>[?!]\@!" contained containedin=rubyCaseExpression 233c236c16dSBram Moolenaar syn match rubyConditional "\<\%(then\|else\|elsif\)\>[?!]\@!" contained containedin=rubyConditionalExpression 234c1762ccbSBram Moolenaar 2351d68952aSBram Moolenaar syn match rubyExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyBlockExpression 2361d68952aSBram Moolenaar syn match rubyMethodExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyMethodBlock 2371d68952aSBram Moolenaar 238c1762ccbSBram Moolenaar " statements with optional 'do' 239c236c16dSBram Moolenaar syn region rubyOptionalDoLine matchgroup=rubyRepeat start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyOptionalDo end="\%(\<do\>\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyNotTop 240c236c16dSBram Moolenaar syn region rubyRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine fold 241071d4279SBram Moolenaar 242071d4279SBram Moolenaar if !exists("ruby_minlines") 243*ec7944aaSBram Moolenaar let ruby_minlines = 500 244071d4279SBram Moolenaar endif 245071d4279SBram Moolenaar exec "syn sync minlines=" . ruby_minlines 246071d4279SBram Moolenaar 2476b730e11SBram Moolenaarelse 248c236c16dSBram Moolenaar syn match rubyControl "\<def\>[?!]\@!" nextgroup=rubyMethodDeclaration skipwhite skipnl 249c236c16dSBram Moolenaar syn match rubyControl "\<class\>[?!]\@!" nextgroup=rubyClassDeclaration skipwhite skipnl 250c236c16dSBram Moolenaar syn match rubyControl "\<module\>[?!]\@!" nextgroup=rubyModuleDeclaration skipwhite skipnl 2511d68952aSBram Moolenaar syn match rubyControl "\<\%(case\|begin\|do\|for\|if\|unless\|while\|until\|else\|elsif\|ensure\|then\|when\|end\)\>[?!]\@!" 252c236c16dSBram Moolenaar syn match rubyKeyword "\<\%(alias\|undef\)\>[?!]\@!" 2536b730e11SBram Moolenaarendif 254071d4279SBram Moolenaar 2556b730e11SBram Moolenaar" Special Methods 2566b730e11SBram Moolenaarif !exists("ruby_no_special_methods") 257*ec7944aaSBram Moolenaar syn keyword rubyAccess public protected private public_class_method private_class_method public_constant private_constant module_function 258c236c16dSBram Moolenaar " attr is a common variable name 259c236c16dSBram Moolenaar syn match rubyAttribute "\%(\%(^\|;\)\s*\)\@<=attr\>\(\s*[.=]\)\@!" 260c236c16dSBram Moolenaar syn keyword rubyAttribute attr_accessor attr_reader attr_writer 261c236c16dSBram Moolenaar syn match rubyControl "\<\%(exit!\|\%(abort\|at_exit\|exit\|fork\|loop\|trap\)\>[?!]\@!\)" 2626b730e11SBram Moolenaar syn keyword rubyEval eval class_eval instance_eval module_eval 2636b730e11SBram Moolenaar syn keyword rubyException raise fail catch throw 264c236c16dSBram Moolenaar " false positive with 'include?' 265c236c16dSBram Moolenaar syn match rubyInclude "\<include\>[?!]\@!" 266*ec7944aaSBram Moolenaar syn keyword rubyInclude autoload extend load prepend require require_relative 2676b730e11SBram Moolenaar syn keyword rubyKeyword callcc caller lambda proc 268071d4279SBram Moolenaarendif 269071d4279SBram Moolenaar 2706b730e11SBram Moolenaar" Comments and Documentation 2716b730e11SBram Moolenaarsyn match rubySharpBang "\%^#!.*" display 272*ec7944aaSBram Moolenaarsyn keyword rubyTodo FIXME NOTE TODO OPTIMIZE XXX todo contained 2736b730e11SBram Moolenaarsyn match rubyComment "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell 2749964e468SBram Moolenaarif !exists("ruby_no_comment_fold") 2759964e468SBram Moolenaar syn region rubyMultilineComment start="\%(\%(^\s*#.*\n\)\@<!\%(^\s*#.*\n\)\)\%(\(^\s*#.*\n\)\{1,}\)\@=" end="\%(^\s*#.*\n\)\@<=\%(^\s*#.*\n\)\%(^\s*#\)\@!" contains=rubyComment transparent fold keepend 276*ec7944aaSBram Moolenaar syn region rubyDocumentation start="^=begin\ze\%(\s.*\)\=$" end="^=end\%(\s.*\)\=$" contains=rubySpaceError,rubyTodo,@Spell fold 2779964e468SBram Moolenaarelse 2789964e468SBram Moolenaar syn region rubyDocumentation start="^=begin\s*$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell 2799964e468SBram Moolenaarendif 2806b730e11SBram Moolenaar 2816b730e11SBram Moolenaar" Note: this is a hack to prevent 'keywords' being highlighted as such when called as methods with an explicit receiver 2826b730e11SBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(alias\|and\|begin\|break\|case\|class\|def\|defined\|do\|else\)\>" transparent contains=NONE 2836b730e11SBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(elsif\|end\|ensure\|false\|for\|if\|in\|module\|next\|nil\)\>" transparent contains=NONE 2846b730e11SBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(not\|or\|redo\|rescue\|retry\|return\|self\|super\|then\|true\)\>" transparent contains=NONE 2856b730e11SBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(undef\|unless\|until\|when\|while\|yield\|BEGIN\|END\|__FILE__\|__LINE__\)\>" transparent contains=NONE 2866b730e11SBram Moolenaar 287c236c16dSBram Moolenaarsyn match rubyKeywordAsMethod "\<\%(alias\|begin\|case\|class\|def\|do\|end\)[?!]" transparent contains=NONE 288c236c16dSBram Moolenaarsyn match rubyKeywordAsMethod "\<\%(if\|module\|undef\|unless\|until\|while\)[?!]" transparent contains=NONE 289c236c16dSBram Moolenaar 2906b730e11SBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(abort\|at_exit\|attr\|attr_accessor\|attr_reader\)\>" transparent contains=NONE 2916b730e11SBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(attr_writer\|autoload\|callcc\|catch\|caller\)\>" transparent contains=NONE 2926b730e11SBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(eval\|class_eval\|instance_eval\|module_eval\|exit\)\>" transparent contains=NONE 2936b730e11SBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(extend\|fail\|fork\|include\|lambda\)\>" transparent contains=NONE 294*ec7944aaSBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(load\|loop\|prepend\|private\|proc\|protected\)\>" transparent contains=NONE 295*ec7944aaSBram Moolenaarsyn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(public\|require\|require_relative\|raise\|throw\|trap\)\>" transparent contains=NONE 296071d4279SBram Moolenaar 297071d4279SBram Moolenaar" __END__ Directive 2986b730e11SBram Moolenaarsyn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold 299071d4279SBram Moolenaar 300c1762ccbSBram Moolenaarhi def link rubyClass rubyDefine 301c1762ccbSBram Moolenaarhi def link rubyModule rubyDefine 3021d68952aSBram Moolenaarhi def link rubyMethodExceptional rubyDefine 303c1762ccbSBram Moolenaarhi def link rubyDefine Define 304c1762ccbSBram Moolenaarhi def link rubyFunction Function 305c1762ccbSBram Moolenaarhi def link rubyConditional Conditional 306c1762ccbSBram Moolenaarhi def link rubyConditionalModifier rubyConditional 3071d68952aSBram Moolenaarhi def link rubyExceptional rubyConditional 308c1762ccbSBram Moolenaarhi def link rubyRepeat Repeat 309c1762ccbSBram Moolenaarhi def link rubyRepeatModifier rubyRepeat 310c1762ccbSBram Moolenaarhi def link rubyOptionalDo rubyRepeat 311c1762ccbSBram Moolenaarhi def link rubyControl Statement 312c1762ccbSBram Moolenaarhi def link rubyInclude Include 313c1762ccbSBram Moolenaarhi def link rubyInteger Number 314c1762ccbSBram Moolenaarhi def link rubyASCIICode Character 315c1762ccbSBram Moolenaarhi def link rubyFloat Float 316c1762ccbSBram Moolenaarhi def link rubyBoolean Boolean 317c1762ccbSBram Moolenaarhi def link rubyException Exception 3186b730e11SBram Moolenaarif !exists("ruby_no_identifiers") 319c1762ccbSBram Moolenaar hi def link rubyIdentifier Identifier 3206b730e11SBram Moolenaarelse 321c1762ccbSBram Moolenaar hi def link rubyIdentifier NONE 3226b730e11SBram Moolenaarendif 323c1762ccbSBram Moolenaarhi def link rubyClassVariable rubyIdentifier 324c1762ccbSBram Moolenaarhi def link rubyConstant Type 325c1762ccbSBram Moolenaarhi def link rubyGlobalVariable rubyIdentifier 326c1762ccbSBram Moolenaarhi def link rubyBlockParameter rubyIdentifier 327c1762ccbSBram Moolenaarhi def link rubyInstanceVariable rubyIdentifier 328c1762ccbSBram Moolenaarhi def link rubyPredefinedIdentifier rubyIdentifier 329c1762ccbSBram Moolenaarhi def link rubyPredefinedConstant rubyPredefinedIdentifier 330c1762ccbSBram Moolenaarhi def link rubyPredefinedVariable rubyPredefinedIdentifier 331c1762ccbSBram Moolenaarhi def link rubySymbol Constant 332c1762ccbSBram Moolenaarhi def link rubyKeyword Keyword 333c1762ccbSBram Moolenaarhi def link rubyOperator Operator 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 3461d68952aSBram 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 354*ec7944aaSBram Moolenaarhi def link rubyHeredoc rubyString 355c1762ccbSBram Moolenaarhi def link rubyString String 356c236c16dSBram Moolenaarhi def link rubyRegexpEscape rubyRegexpSpecial 357c236c16dSBram Moolenaarhi def link rubyRegexpQuantifier rubyRegexpSpecial 358c236c16dSBram Moolenaarhi def link rubyRegexpAnchor rubyRegexpSpecial 359c236c16dSBram Moolenaarhi def link rubyRegexpDot rubyRegexpCharClass 360c236c16dSBram Moolenaarhi def link rubyRegexpCharClass rubyRegexpSpecial 361c236c16dSBram Moolenaarhi def link rubyRegexpSpecial Special 362c236c16dSBram Moolenaarhi def link rubyRegexpComment Comment 363c236c16dSBram Moolenaarhi def link rubyRegexp rubyString 3646b730e11SBram Moolenaar 365c1762ccbSBram Moolenaarhi def link rubyInvalidVariable Error 366c1762ccbSBram Moolenaarhi def link rubyError Error 367c1762ccbSBram Moolenaarhi def link rubySpaceError rubyError 368071d4279SBram Moolenaar 369071d4279SBram Moolenaarlet b:current_syntax = "ruby" 370071d4279SBram Moolenaar 371a7241f5fSBram Moolenaar" vim: nowrap sw=2 sts=2 ts=8 noet: 372