Mercurial > ec-dotfiles
annotate vendor/vim-syntax/ruby.vim @ 620:7ac088ee101a
Add typescript vim syntax
| author | nanaya <me@nanaya.pro> | 
|---|---|
| date | Tue, 30 Oct 2018 19:04:56 +0900 | 
| parents | 0e72765944d4 | 
| children | 0f0bdbd8d37d | 
| rev | line source | 
|---|---|
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 1 " Vim syntax file | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 2 " Language: Ruby | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 3 " Maintainer: Doug Kearns <dougkearns@gmail.com> | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 4 " URL: https://github.com/vim-ruby/vim-ruby | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 5 " Release Coordinator: Doug Kearns <dougkearns@gmail.com> | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 6 " ---------------------------------------------------------------------------- | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 7 " | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 8 " Previous Maintainer: Mirko Nasato | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 9 " Thanks to perl.vim authors, and to Reimer Behrends. :-) (MN) | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 10 " ---------------------------------------------------------------------------- | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 11 | 
| 595 | 12 " Prelude {{{1 | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 13 if exists("b:current_syntax") | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 14 finish | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 15 endif | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 16 | 
| 595 | 17 " this file uses line continuations | 
| 18 let s:cpo_sav = &cpo | |
| 19 set cpo&vim | |
| 20 | |
| 21 " Folding Config {{{1 | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 22 if has("folding") && exists("ruby_fold") | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 23 setlocal foldmethod=syntax | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 24 endif | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 25 | 
| 595 | 26 let s:foldable_groups = split( | 
| 27 \ get( | |
| 28 \ b:, | |
| 29 \ 'ruby_foldable_groups', | |
| 30 \ get(g:, 'ruby_foldable_groups', 'ALL') | |
| 31 \ ) | |
| 32 \ ) | |
| 33 | |
| 34 function! s:foldable(...) abort | |
| 35 if index(s:foldable_groups, 'ALL') > -1 | |
| 36 return 1 | |
| 37 endif | |
| 38 | |
| 39 for l:i in a:000 | |
| 40 if index(s:foldable_groups, l:i) > -1 | |
| 41 return 1 | |
| 42 endif | |
| 43 endfor | |
| 44 | |
| 45 return 0 | |
| 46 endfunction " }}} | |
| 47 | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 48 syn cluster rubyNotTop contains=@rubyExtendedStringSpecial,@rubyRegexpSpecial,@rubyDeclaration,rubyConditional,rubyExceptional,rubyMethodExceptional,rubyTodo | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 49 | 
| 595 | 50 " Whitespace Errors {{{1 | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 51 if exists("ruby_space_errors") | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 52 if !exists("ruby_no_trail_space_error") | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 53 syn match rubySpaceError display excludenl "\s\+$" | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 54 endif | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 55 if !exists("ruby_no_tab_space_error") | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 56 syn match rubySpaceError display " \+\t"me=e-1 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 57 endif | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 58 endif | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 59 | 
| 595 | 60 " Operators {{{1 | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 61 if exists("ruby_operators") | 
| 595 | 62 syn match rubyOperator "[~!^|*/%+-]\|&\.\@!\|\%(class\s*\)\@<!<<\|<=>\|<=\|\%(<\|\<class\s\+\u\w*\s*\)\@<!<[^<]\@=\|===\|==\|=\~\|>>\|>=\|=\@1<!>\|\*\*\|\.\.\.\|\.\.\|::" | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 63 syn match rubyOperator "->\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|&&\|||=\||=\|||\|%=\|+=\|!\~\|!=" | 
| 595 | 64 syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\w[?!]\=\|[]})]\)\@2<=\[\s*" end="\s*]" contains=ALLBUT,@rubyNotTop | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 65 endif | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 66 | 
| 595 | 67 " Expression Substitution and Backslash Notation {{{1 | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 68 syn match rubyStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 69 syn match rubyStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 70 syn match rubyQuoteEscape "\\[\\']" contained display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 71 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 72 syn region rubyInterpolation matchgroup=rubyInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,@rubyNotTop | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 73 syn match rubyInterpolation "#\%(\$\|@@\=\)\w\+" display contained contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable,rubyPredefinedVariable | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 74 syn match rubyInterpolationDelimiter "#\ze\%(\$\|@@\=\)\w\+" display contained | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 75 syn match rubyInterpolation "#\$\%(-\w\|\W\)" display contained contains=rubyInterpolationDelimiter,rubyPredefinedVariable,rubyInvalidVariable | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 76 syn match rubyInterpolationDelimiter "#\ze\$\%(-\w\|\W\)" display contained | 
| 595 | 77 syn region rubyNoInterpolation start="\\#{" end="}" contained | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 78 syn match rubyNoInterpolation "\\#{" display contained | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 79 syn match rubyNoInterpolation "\\#\%(\$\|@@\=\)\w\+" display contained | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 80 syn match rubyNoInterpolation "\\#\$\W" display contained | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 81 | 
| 595 | 82 syn match rubyDelimiterEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 83 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 84 syn region rubyNestedParentheses start="(" skip="\\\\\|\\)" matchgroup=rubyString end=")" transparent contained | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 85 syn region rubyNestedCurlyBraces start="{" skip="\\\\\|\\}" matchgroup=rubyString end="}" transparent contained | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 86 syn region rubyNestedAngleBrackets start="<" skip="\\\\\|\\>" matchgroup=rubyString end=">" transparent contained | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 87 syn region rubyNestedSquareBrackets start="\[" skip="\\\\\|\\\]" matchgroup=rubyString end="\]" transparent contained | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 88 | 
| 595 | 89 " Regular Expression Metacharacters {{{1 | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 90 " These are mostly Oniguruma ready | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 91 syn region rubyRegexpComment matchgroup=rubyRegexpSpecial start="(?#" skip="\\)" end=")" contained | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 92 syn region rubyRegexpParens matchgroup=rubyRegexpSpecial start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\)" end=")" contained transparent contains=@rubyRegexpSpecial | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 93 syn region rubyRegexpBrackets matchgroup=rubyRegexpCharClass start="\[\^\=" skip="\\\]" end="\]" contained transparent contains=rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass oneline | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 94 syn match rubyRegexpCharClass "\\[DdHhSsWw]" contained display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 95 syn match rubyRegexpCharClass "\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\):\]" contained | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 96 syn match rubyRegexpEscape "\\[].*?+^$|\\/(){}[]" contained | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 97 syn match rubyRegexpQuantifier "[*?+][?+]\=" contained display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 98 syn match rubyRegexpQuantifier "{\d\+\%(,\d*\)\=}?\=" contained display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 99 syn match rubyRegexpAnchor "[$^]\|\\[ABbGZz]" contained display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 100 syn match rubyRegexpDot "\." contained display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 101 syn match rubyRegexpSpecial "|" contained display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 102 syn match rubyRegexpSpecial "\\[1-9]\d\=\d\@!" contained display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 103 syn match rubyRegexpSpecial "\\k<\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\=>" contained display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 104 syn match rubyRegexpSpecial "\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" contained display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 105 syn match rubyRegexpSpecial "\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 106 syn match rubyRegexpSpecial "\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 107 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 108 syn cluster rubyStringSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 109 syn cluster rubyExtendedStringSpecial contains=@rubyStringSpecial,rubyNestedParentheses,rubyNestedCurlyBraces,rubyNestedAngleBrackets,rubyNestedSquareBrackets | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 110 syn cluster rubyRegexpSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 111 | 
| 595 | 112 " Numbers and ASCII Codes {{{1 | 
| 113 syn match rubyASCIICode "\%(\w\|[]})\"'/]\)\@1<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)" | |
| 114 syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[xX]\x\+\%(_\x\+\)*r\=i\=\>" display | |
| 115 syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)r\=i\=\>" display | |
| 116 syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[oO]\=\o\+\%(_\o\+\)*r\=i\=\>" display | |
| 117 syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[bB][01]\+\%(_[01]\+\)*r\=i\=\>" display | |
| 118 syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*r\=i\=\>" display | |
| 119 syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)r\=i\=\>" display | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 120 | 
| 595 | 121 " Identifiers {{{1 | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 122 syn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 123 syn match rubyBlockArgument "&[_[:lower:]][_[:alnum:]]" contains=NONE display transparent | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 124 | 
| 595 | 125 syn match rubyConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!" | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 126 syn match rubyClassVariable "@@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display | 
| 595 | 127 syn match rubyInstanceVariable "@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 128 syn match rubyGlobalVariable "$\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\|-.\)" | 
| 595 | 129 syn match rubySymbol "[]})\"':]\@1<!:\%(\^\|\~@\|\~\|<<\|<=>\|<=\|<\|===\|[=!]=\|[=!]\~\|!@\|!\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)" | 
| 130 syn match rubySymbol "[]})\"':]\@1<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)" | |
| 131 syn match rubySymbol "[]})\"':]\@1<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" | |
| 132 syn match rubySymbol "[]})\"':]\@1<!:\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\=" | |
| 133 | |
| 134 if s:foldable(':') | |
| 135 syn region rubySymbol start="[]})\"':]\@1<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape fold | |
| 136 syn region rubySymbol start="[]})\"':]\@1<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold | |
| 137 else | |
| 138 syn region rubySymbol start="[]})\"':]\@1<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape | |
| 139 syn region rubySymbol start="[]})\"':]\@1<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial | |
| 140 endif | |
| 141 | |
| 142 syn match rubyCapitalizedMethod "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)*\s*(\@=" | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 143 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 144 syn match rubyBlockParameter "\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" contained | 
| 595 | 145 syn region rubyBlockParameterList start="\%(\%(\<do\>\|{\)\_s*\)\@32<=|" end="|" oneline display contains=rubyBlockParameter | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 146 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 147 syn match rubyInvalidVariable "$[^ A-Za-z_-]" | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 148 syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~]# | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 149 syn match rubyPredefinedVariable "$\d\+" display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 150 syn match rubyPredefinedVariable "$_\>" display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 151 syn match rubyPredefinedVariable "$-[0FIKadilpvw]\>" display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 152 syn match rubyPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>" display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 153 syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|KCODE\|LOADED_FEATURES\|LOAD_PATH\|PROGRAM_NAME\|SAFE\|VERBOSE\)\>" display | 
| 595 | 154 syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(ARGF\|ARGV\|ENV\|DATA\|FALSE\|NIL\|STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\|TRUE\)\>\%(\s*(\)\@!" | 
| 155 syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(RUBY_\%(VERSION\|RELEASE_DATE\|PLATFORM\|PATCHLEVEL\|REVISION\|DESCRIPTION\|COPYRIGHT\|ENGINE\)\)\>\%(\s*(\)\@!" | |
| 156 | |
| 157 " Normal Regular Expression {{{1 | |
| 158 if s:foldable('/') | |
| 159 syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold | |
| 160 syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold | |
| 161 else | |
| 162 syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial | |
| 163 syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial | |
| 164 endif | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 165 | 
| 595 | 166 " Generalized Regular Expression {{{1 | 
| 167 if s:foldable('%') | |
| 168 syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold | |
| 169 syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial fold | |
| 170 syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold | |
| 171 syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial fold | |
| 172 syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial fold | |
| 173 syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold | |
| 174 else | |
| 175 syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial | |
| 176 syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial | |
| 177 syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape | |
| 178 syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial | |
| 179 syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial | |
| 180 syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial | |
| 181 endif | |
| 182 | |
| 183 " Normal String {{{1 | |
| 184 let s:spell_cluster = exists('ruby_spellcheck_strings') ? ',@Spell' : '' | |
| 185 exe 'syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" ' . | |
| 186 \ (s:foldable('%') ? 'fold' : '') . ' contains=@rubyStringSpecial' . s:spell_cluster | |
| 187 exe 'syn region rubyString matchgroup=rubyStringDelimiter start="''" end="''" skip="\\\\\|\\''" ' . | |
| 188 \ (s:foldable('%') ? 'fold' : '') . ' contains=rubyQuoteEscape' . s:spell_cluster | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 189 | 
| 595 | 190 " Shell Command Output {{{1 | 
| 191 if s:foldable('%') | |
| 192 syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial fold | |
| 193 else | |
| 194 syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial | |
| 195 endif | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 196 | 
| 595 | 197 " Generalized Single Quoted String, Symbol and Array of Strings {{{1 | 
| 198 if s:foldable('%') | |
| 199 syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold | |
| 200 syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape | |
| 201 syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape | |
| 202 syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape | |
| 203 syn region rubyString matchgroup=rubyStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape | |
| 204 syn region rubyString matchgroup=rubyStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1" fold | |
| 205 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold | |
| 206 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape | |
| 207 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape | |
| 208 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape | |
| 209 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape | |
| 210 syn region rubyString matchgroup=rubyStringDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1" fold | |
| 211 else | |
| 212 syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" | |
| 213 syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape | |
| 214 syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape | |
| 215 syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape | |
| 216 syn region rubyString matchgroup=rubyStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape | |
| 217 syn region rubyString matchgroup=rubyStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1" | |
| 218 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" | |
| 219 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape | |
| 220 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape | |
| 221 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape | |
| 222 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape | |
| 223 syn region rubyString matchgroup=rubyStringDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1" | |
| 224 endif | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 225 | 
| 595 | 226 " Generalized Double Quoted String and Array of Strings and Shell Command Output {{{1 | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 227 " Note: %= is not matched here as the beginning of a double quoted string | 
| 595 | 228 if s:foldable('%') | 
| 229 syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold | |
| 230 syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold | |
| 231 syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape fold | |
| 232 syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold | |
| 233 syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape fold | |
| 234 syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape fold | |
| 235 syn region rubyString matchgroup=rubyStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold | |
| 236 else | |
| 237 syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial | |
| 238 syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial | |
| 239 syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape | |
| 240 syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape | |
| 241 syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape | |
| 242 syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape | |
| 243 syn region rubyString matchgroup=rubyStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial | |
| 244 endif | |
| 245 | |
| 246 " Array of Symbols {{{1 | |
| 247 if s:foldable('%') | |
| 248 " Array of Symbols | |
| 249 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold | |
| 250 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape | |
| 251 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape | |
| 252 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape | |
| 253 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 254 | 
| 595 | 255 " Array of interpolated Symbols | 
| 256 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold | |
| 257 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape fold | |
| 258 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold | |
| 259 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape fold | |
| 260 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape fold | |
| 261 else | |
| 262 " Array of Symbols | |
| 263 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" | |
| 264 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape | |
| 265 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape | |
| 266 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape | |
| 267 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape | |
| 268 | |
| 269 " Array of interpolated Symbols | |
| 270 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial | |
| 271 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape | |
| 272 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape | |
| 273 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape | |
| 274 syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape | |
| 275 endif | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 276 | 
| 595 | 277 " Here Document {{{1 | 
| 278 syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)+ end=+$+ oneline contains=ALLBUT,@rubyNotTop | |
| 279 syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=ALLBUT,@rubyNotTop | |
| 280 syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs'\%([^']*\)'+ end=+$+ oneline contains=ALLBUT,@rubyNotTop | |
| 281 syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=ALLBUT,@rubyNotTop | |
| 282 | |
| 283 if s:foldable('<<') | |
| 284 syn 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 | |
| 285 syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend | |
| 286 syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc fold keepend | |
| 287 syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 288 | 
| 595 | 289 syn 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 | 
| 290 syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend | |
| 291 syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart fold keepend | |
| 292 syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend | |
| 293 else | |
| 294 syn 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 keepend | |
| 295 syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend | |
| 296 syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc keepend | |
| 297 syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 298 | 
| 595 | 299 syn 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 keepend | 
| 300 syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend | |
| 301 syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart keepend | |
| 302 syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend | |
| 303 endif | |
| 304 | |
| 305 " eRuby Config {{{1 | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 306 if exists('main_syntax') && main_syntax == 'eruby' | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 307 let b:ruby_no_expensive = 1 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 308 end | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 309 | 
| 595 | 310 " Module, Class, Method and Alias Declarations {{{1 | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 311 syn match rubyAliasDeclaration "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable nextgroup=rubyAliasDeclaration2 skipwhite | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 312 syn match rubyAliasDeclaration2 "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 313 syn match rubyMethodDeclaration "[^[:space:];#(]\+" contained contains=rubyConstant,rubyBoolean,rubyPseudoVariable,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 314 syn match rubyClassDeclaration "[^[:space:];#<]\+" contained contains=rubyConstant,rubyOperator | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 315 syn match rubyModuleDeclaration "[^[:space:];#<]\+" contained contains=rubyConstant,rubyOperator | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 316 syn match rubyFunction "\<[_[:alpha:]][_[:alnum:]]*[?!=]\=[[:alnum:]_.:?!=]\@!" contained containedin=rubyMethodDeclaration | 
| 595 | 317 syn match rubyFunction "\%(\s\|^\)\@1<=[_[:alpha:]][_[:alnum:]]*[?!=]\=\%(\s\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2 | 
| 318 syn match rubyFunction "\%([[:space:].]\|^\)\@2<=\%(\[\]=\=\|\*\*\|[-+!~]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|[=!]=\|[=!]\~\|!\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 319 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 320 syn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyFunction,rubyBlockParameter | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 321 | 
| 595 | 322 " Keywords {{{1 | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 323 " Note: the following keywords have already been defined: | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 324 " begin case class def do end for if module unless until while | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 325 syn match rubyControl "\<\%(and\|break\|in\|next\|not\|or\|redo\|rescue\|retry\|return\)\>[?!]\@!" | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 326 syn match rubyOperator "\<defined?" display | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 327 syn match rubyKeyword "\<\%(super\|yield\)\>[?!]\@!" | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 328 syn match rubyBoolean "\<\%(true\|false\)\>[?!]\@!" | 
| 595 | 329 syn match rubyPseudoVariable "\<\%(nil\|self\|__ENCODING__\|__dir__\|__FILE__\|__LINE__\|__callee__\|__method__\)\>[?!]\@!" " TODO: reorganise | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 330 syn match rubyBeginEnd "\<\%(BEGIN\|END\)\>[?!]\@!" | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 331 | 
| 595 | 332 " Expensive Mode {{{1 | 
| 333 " Match 'end' with the appropriate opening keyword for syntax based folding | |
| 334 " and special highlighting of module/class/method definitions | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 335 if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive") | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 336 syn match rubyDefine "\<alias\>" nextgroup=rubyAliasDeclaration skipwhite skipnl | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 337 syn match rubyDefine "\<def\>" nextgroup=rubyMethodDeclaration skipwhite skipnl | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 338 syn match rubyDefine "\<undef\>" nextgroup=rubyFunction skipwhite skipnl | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 339 syn match rubyClass "\<class\>" nextgroup=rubyClassDeclaration skipwhite skipnl | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 340 syn match rubyModule "\<module\>" nextgroup=rubyModuleDeclaration skipwhite skipnl | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 341 | 
| 595 | 342 if s:foldable('def') | 
| 343 syn region rubyMethodBlock start="\<def\>" matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold | |
| 344 else | |
| 345 syn region rubyMethodBlock start="\<def\>" matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop | |
| 346 endif | |
| 347 | |
| 348 if s:foldable('class') | |
| 349 syn region rubyBlock start="\<class\>" matchgroup=rubyClass end="\<end\>" contains=ALLBUT,@rubyNotTop fold | |
| 350 else | |
| 351 syn region rubyBlock start="\<class\>" matchgroup=rubyClass end="\<end\>" contains=ALLBUT,@rubyNotTop | |
| 352 endif | |
| 353 | |
| 354 if s:foldable('module') | |
| 355 syn region rubyBlock start="\<module\>" matchgroup=rubyModule end="\<end\>" contains=ALLBUT,@rubyNotTop fold | |
| 356 else | |
| 357 syn region rubyBlock start="\<module\>" matchgroup=rubyModule end="\<end\>" contains=ALLBUT,@rubyNotTop | |
| 358 endif | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 359 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 360 " modifiers | 
| 595 | 361 syn match rubyLineContinuation "\\$" nextgroup=rubyConditionalModifier,rubyRepeatModifier skipwhite skipnl | 
| 362 syn match rubyConditionalModifier "\<\%(if\|unless\)\>" | |
| 363 syn match rubyRepeatModifier "\<\%(while\|until\)\>" | |
| 364 | |
| 365 if s:foldable('do') | |
| 366 syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold | |
| 367 else | |
| 368 syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyNotTop | |
| 369 endif | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 370 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 371 " curly bracket block or hash literal | 
| 595 | 372 if s:foldable('{') | 
| 373 syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop fold | |
| 374 else | |
| 375 syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop | |
| 376 endif | |
| 377 | |
| 378 if s:foldable('[') | |
| 379 syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@<!\[" end="]" contains=ALLBUT,@rubyNotTop fold | |
| 380 else | |
| 381 syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@<!\[" end="]" contains=ALLBUT,@rubyNotTop | |
| 382 endif | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 383 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 384 " statements without 'do' | 
| 595 | 385 if s:foldable('begin') | 
| 386 syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold | |
| 387 else | |
| 388 syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" end="\<end\>" contains=ALLBUT,@rubyNotTop | |
| 389 endif | |
| 390 | |
| 391 if s:foldable('case') | |
| 392 syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold | |
| 393 else | |
| 394 syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" end="\<end\>" contains=ALLBUT,@rubyNotTop | |
| 395 endif | |
| 396 | |
| 397 if s:foldable('if') | |
| 398 syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" end="\%(\%(\%(\.\@1<!\.\)\|::\)\s*\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold | |
| 399 else | |
| 400 syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" end="\%(\%(\%(\.\@1<!\.\)\|::\)\s*\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop | |
| 401 endif | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 402 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 403 syn match rubyConditional "\<\%(then\|else\|when\)\>[?!]\@!" contained containedin=rubyCaseExpression | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 404 syn match rubyConditional "\<\%(then\|else\|elsif\)\>[?!]\@!" contained containedin=rubyConditionalExpression | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 405 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 406 syn match rubyExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyBlockExpression | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 407 syn match rubyMethodExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyMethodBlock | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 408 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 409 " statements with optional 'do' | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 410 syn region rubyOptionalDoLine matchgroup=rubyRepeat start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyOptionalDo end="\%(\<do\>\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyNotTop | 
| 595 | 411 | 
| 412 if s:foldable('for') | |
| 413 syn region rubyRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine fold | |
| 414 else | |
| 415 syn region rubyRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine | |
| 416 endif | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 417 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 418 if !exists("ruby_minlines") | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 419 let ruby_minlines = 500 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 420 endif | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 421 exec "syn sync minlines=" . ruby_minlines | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 422 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 423 else | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 424 syn match rubyControl "\<def\>[?!]\@!" nextgroup=rubyMethodDeclaration skipwhite skipnl | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 425 syn match rubyControl "\<class\>[?!]\@!" nextgroup=rubyClassDeclaration skipwhite skipnl | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 426 syn match rubyControl "\<module\>[?!]\@!" nextgroup=rubyModuleDeclaration skipwhite skipnl | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 427 syn match rubyControl "\<\%(case\|begin\|do\|for\|if\|unless\|while\|until\|else\|elsif\|ensure\|then\|when\|end\)\>[?!]\@!" | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 428 syn match rubyKeyword "\<\%(alias\|undef\)\>[?!]\@!" | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 429 endif | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 430 | 
| 595 | 431 " Special Methods {{{1 | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 432 if !exists("ruby_no_special_methods") | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 433 syn keyword rubyAccess public protected private public_class_method private_class_method public_constant private_constant module_function | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 434 " attr is a common variable name | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 435 syn match rubyAttribute "\%(\%(^\|;\)\s*\)\@<=attr\>\(\s*[.=]\)\@!" | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 436 syn keyword rubyAttribute attr_accessor attr_reader attr_writer | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 437 syn match rubyControl "\<\%(exit!\|\%(abort\|at_exit\|exit\|fork\|loop\|trap\)\>[?!]\@!\)" | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 438 syn keyword rubyEval eval class_eval instance_eval module_eval | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 439 syn keyword rubyException raise fail catch throw | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 440 " false positive with 'include?' | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 441 syn match rubyInclude "\<include\>[?!]\@!" | 
| 595 | 442 syn keyword rubyInclude autoload extend load prepend refine require require_relative using | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 443 syn keyword rubyKeyword callcc caller lambda proc | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 444 endif | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 445 | 
| 595 | 446 " Comments and Documentation {{{1 | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 447 syn match rubySharpBang "\%^#!.*" display | 
| 595 | 448 syn keyword rubyTodo FIXME NOTE TODO OPTIMIZE HACK REVIEW XXX todo contained | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 449 syn match rubyComment "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell | 
| 595 | 450 if !exists("ruby_no_comment_fold") && s:foldable('#') | 
| 451 syn region rubyMultilineComment start="^\s*#.*\n\%(^\s*#\)\@=" end="^\s*#.*\n\%(^\s*#\)\@!" contains=rubyComment transparent fold keepend | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 452 syn region rubyDocumentation start="^=begin\ze\%(\s.*\)\=$" end="^=end\%(\s.*\)\=$" contains=rubySpaceError,rubyTodo,@Spell fold | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 453 else | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 454 syn region rubyDocumentation start="^=begin\s*$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 455 endif | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 456 | 
| 595 | 457 " Keyword Nobbling {{{1 | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 458 " Note: this is a hack to prevent 'keywords' being highlighted as such when called as methods with an explicit receiver | 
| 595 | 459 syn match rubyKeywordAsMethod "\%(\%(\.\@1<!\.\)\|::\)\_s*\%([_[:lower:]][_[:alnum:]]*\|\<\%(BEGIN\|END\)\>\)" transparent contains=NONE | 
| 460 syn match rubyKeywordAsMethod "\(defined?\|exit!\)\@!\<[_[:lower:]][_[:alnum:]]*[?!]" transparent contains=NONE | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 461 | 
| 595 | 462 " More Symbols {{{1 | 
| 463 syn match rubySymbol "\%([{(,]\_s*\)\zs\l\w*[!?]\=::\@!"he=e-1 | |
| 464 syn match rubySymbol "[]})\"':]\@1<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="he=e-1 | |
| 465 syn match rubySymbol "\%([{(,]\_s*\)\zs[[:space:],{]\l\w*[!?]\=::\@!"hs=s+1,he=e-1 | |
| 466 syn match rubySymbol "[[:space:],{(]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="hs=s+1,he=e-1 | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 467 | 
| 595 | 468 " __END__ Directive {{{1 | 
| 469 if s:foldable('__END__') | |
| 470 syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold | |
| 471 else | |
| 472 syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" | |
| 473 endif | |
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 474 | 
| 595 | 475 " Default Highlighting {{{1 | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 476 hi def link rubyClass rubyDefine | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 477 hi def link rubyModule rubyDefine | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 478 hi def link rubyMethodExceptional rubyDefine | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 479 hi def link rubyDefine Define | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 480 hi def link rubyFunction Function | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 481 hi def link rubyConditional Conditional | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 482 hi def link rubyConditionalModifier rubyConditional | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 483 hi def link rubyExceptional rubyConditional | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 484 hi def link rubyRepeat Repeat | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 485 hi def link rubyRepeatModifier rubyRepeat | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 486 hi def link rubyOptionalDo rubyRepeat | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 487 hi def link rubyControl Statement | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 488 hi def link rubyInclude Include | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 489 hi def link rubyInteger Number | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 490 hi def link rubyASCIICode Character | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 491 hi def link rubyFloat Float | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 492 hi def link rubyBoolean Boolean | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 493 hi def link rubyException Exception | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 494 if !exists("ruby_no_identifiers") | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 495 hi def link rubyIdentifier Identifier | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 496 else | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 497 hi def link rubyIdentifier NONE | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 498 endif | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 499 hi def link rubyClassVariable rubyIdentifier | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 500 hi def link rubyConstant Type | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 501 hi def link rubyGlobalVariable rubyIdentifier | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 502 hi def link rubyBlockParameter rubyIdentifier | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 503 hi def link rubyInstanceVariable rubyIdentifier | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 504 hi def link rubyPredefinedIdentifier rubyIdentifier | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 505 hi def link rubyPredefinedConstant rubyPredefinedIdentifier | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 506 hi def link rubyPredefinedVariable rubyPredefinedIdentifier | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 507 hi def link rubySymbol Constant | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 508 hi def link rubyKeyword Keyword | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 509 hi def link rubyOperator Operator | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 510 hi def link rubyBeginEnd Statement | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 511 hi def link rubyAccess Statement | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 512 hi def link rubyAttribute Statement | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 513 hi def link rubyEval Statement | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 514 hi def link rubyPseudoVariable Constant | 
| 595 | 515 hi def link rubyCapitalizedMethod rubyLocalVariableOrMethod | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 516 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 517 hi def link rubyComment Comment | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 518 hi def link rubyData Comment | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 519 hi def link rubyDataDirective Delimiter | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 520 hi def link rubyDocumentation Comment | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 521 hi def link rubyTodo Todo | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 522 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 523 hi def link rubyQuoteEscape rubyStringEscape | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 524 hi def link rubyStringEscape Special | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 525 hi def link rubyInterpolationDelimiter Delimiter | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 526 hi def link rubyNoInterpolation rubyString | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 527 hi def link rubySharpBang PreProc | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 528 hi def link rubyRegexpDelimiter rubyStringDelimiter | 
| 595 | 529 hi def link rubySymbolDelimiter rubySymbol | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 530 hi def link rubyStringDelimiter Delimiter | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 531 hi def link rubyHeredoc rubyString | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 532 hi def link rubyString String | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 533 hi def link rubyRegexpEscape rubyRegexpSpecial | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 534 hi def link rubyRegexpQuantifier rubyRegexpSpecial | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 535 hi def link rubyRegexpAnchor rubyRegexpSpecial | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 536 hi def link rubyRegexpDot rubyRegexpCharClass | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 537 hi def link rubyRegexpCharClass rubyRegexpSpecial | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 538 hi def link rubyRegexpSpecial Special | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 539 hi def link rubyRegexpComment Comment | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 540 hi def link rubyRegexp rubyString | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 541 | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 542 hi def link rubyInvalidVariable Error | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 543 hi def link rubyError Error | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 544 hi def link rubySpaceError rubyError | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 545 | 
| 595 | 546 " Postscript {{{1 | 
| 508 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 547 let b:current_syntax = "ruby" | 
| 
bbcffc594d1e
Vendor what should be vendored and add some more.
 edogawaconan <me@myconan.net> parents: diff
changeset | 548 | 
| 595 | 549 let &cpo = s:cpo_sav | 
| 550 unlet! s:cpo_sav | |
| 551 | |
| 552 " vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker: | 
