home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / unix / vim-6.2.tar.bz2 / vim-6.2.tar / vim62 / runtime / syntax / ruby.vim < prev    next >
Encoding:
Text File  |  2003-05-31  |  19.0 KB  |  286 lines

  1. " Vim syntax file
  2. " Language:        Ruby
  3. " Maintainer:        Doug Kearns
  4. " Previous Maintainer:    Mirko Nasato
  5. " Last Change:        2003 May 31
  6. " URL:            http://mugca.its.monash.edu.au/~djkea2/vim/syntax/ruby.vim
  7.  
  8. " $Id: ruby.vim,v 1.43 2003/04/01 08:48:19 doug Exp doug $
  9.  
  10. " Thanks to perl.vim authors, and to Reimer Behrends. :-) (MN)
  11.  
  12. " For version 5.x: Clear all syntax items
  13. " For version 6.x: Quit when a syntax file was already loaded
  14. if version < 600
  15.   syntax clear
  16. elseif exists("b:current_syntax")
  17.   finish
  18. endif
  19.  
  20. " Expression Substitution and Backslash Notation
  21. syn match rubyExprSubst "\\\\\|\(\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\w\)\|\(\\\o\{3}\|\\x\x\{2}\|\\[abefnrstv]\)" contained
  22. syn match rubyExprSubst "#{[^}]*}" contained
  23. syn match rubyExprSubst "#[$@]\w\+" contained
  24.  
  25. " Numbers and ASCII Codes
  26. syn match rubyNumber "\w\@<!\(?\(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\S\)\)"
  27. syn match rubyNumber "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>"
  28.  
  29. " Identifiers - constant, class and instance, global, symbol, iterator, predefined
  30. syn match rubyLocalVariableOrMethod "[_[:lower:]][_[:alnum:]]*[?!=]\=" transparent contains=NONE
  31.  
  32. if !exists("ruby_no_identifiers")
  33.   syn match rubyConstant        "\(::\)\=\zs\u\w*"
  34.   syn match rubyClassVariable        "@@\h\w*"
  35.   syn match rubyInstanceVariable    "@\h\w*"
  36.   syn match rubyGlobalVariable        "$\(\h\w*\|-.\)"
  37.   syn match rubySymbol            ":\@<!:\(\$\|@@\=\)\=\h\w*[?!=]\="
  38.   syn match rubyIterator        "|[ ,a-zA-Z0-9_*]\+|"
  39.  
  40.   syn match rubyPredefinedVariable "$[!"$&'*+,./0:;<=>?@\\_`~1-9]"
  41.   syn match rubyPredefinedVariable "$-[0FIKadilpvw]"
  42.   syn match rubyPredefinedVariable "$\(defout\|stderr\|stdin\|stdout\)\>"
  43.   syn match rubyPredefinedVariable "$\(DEBUG\|FILENAME\|KCODE\|LOAD_PATH\|SAFE\|VERBOSE\)\>"
  44.   syn match rubyPredefinedConstant "__\(FILE\|LINE\)__\>"
  45.   syn match rubyPredefinedConstant "\<\(::\)\=\zs\(MatchingData\|NotImplementError\|ARGF\|ARGV\|ENV\)\>"
  46.   syn match rubyPredefinedConstant "\<\(::\)\=\zs\(DATA\|FALSE\|NIL\|RUBY_PLATFORM\|RUBY_RELEASE_DATE\)\>"
  47.   syn match rubyPredefinedConstant "\<\(::\)\=\zs\(RUBY_VERSION\|STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\|TRUE\)\>"
  48.   "Obsolete Global Constants
  49.   "syn match rubyPredefinedConstant "\<\(::\)\=\zs\(PLATFORM\|RELEASE\|VERSION\)\>"
  50. endif
  51.  
  52. "
  53. " BEGIN Autogenerated Stuff
  54. "
  55. " Generalized Regular Expression
  56. syn region rubyString matchgroup=rubyStringDelimit start="%r!"  end="![iomx]*"  skip="\\\\\|\\!"  contains=rubyExprSubst fold
  57. syn region rubyString matchgroup=rubyStringDelimit start="%r\"" end="\"[iomx]*" skip="\\\\\|\\\"" contains=rubyExprSubst fold
  58. syn region rubyString matchgroup=rubyStringDelimit start="%r#"  end="#[iomx]*"  skip="\\\\\|\\#"  contains=rubyExprSubst fold
  59. syn region rubyString matchgroup=rubyStringDelimit start="%r\$" end="\$[iomx]*" skip="\\\\\|\\\$" contains=rubyExprSubst fold
  60. syn region rubyString matchgroup=rubyStringDelimit start="%r%"  end="%[iomx]*"  skip="\\\\\|\\%"  contains=rubyExprSubst fold
  61. syn region rubyString matchgroup=rubyStringDelimit start="%r&"  end="&[iomx]*"  skip="\\\\\|\\&"  contains=rubyExprSubst fold
  62. syn region rubyString matchgroup=rubyStringDelimit start="%r'"  end="'[iomx]*"  skip="\\\\\|\\'"  contains=rubyExprSubst fold
  63. syn region rubyString matchgroup=rubyStringDelimit start="%r\*" end="\*[iomx]*" skip="\\\\\|\\\*" contains=rubyExprSubst fold
  64. syn region rubyString matchgroup=rubyStringDelimit start="%r+"  end="+[iomx]*"  skip="\\\\\|\\+"  contains=rubyExprSubst fold
  65. syn region rubyString matchgroup=rubyStringDelimit start="%r-"  end="-[iomx]*"  skip="\\\\\|\\-"  contains=rubyExprSubst fold
  66. syn region rubyString matchgroup=rubyStringDelimit start="%r\." end="\.[iomx]*" skip="\\\\\|\\\." contains=rubyExprSubst fold
  67. syn region rubyString matchgroup=rubyStringDelimit start="%r/"  end="/[iomx]*"  skip="\\\\\|\\/"  contains=rubyExprSubst fold
  68. syn region rubyString matchgroup=rubyStringDelimit start="%r:"  end=":[iomx]*"  skip="\\\\\|\\:"  contains=rubyExprSubst fold
  69. syn region rubyString matchgroup=rubyStringDelimit start="%r;"  end=";[iomx]*"  skip="\\\\\|\\;"  contains=rubyExprSubst fold
  70. syn region rubyString matchgroup=rubyStringDelimit start="%r="  end="=[iomx]*"  skip="\\\\\|\\="  contains=rubyExprSubst fold
  71. syn region rubyString matchgroup=rubyStringDelimit start="%r?"  end="?[iomx]*"  skip="\\\\\|\\?"  contains=rubyExprSubst fold
  72. syn region rubyString matchgroup=rubyStringDelimit start="%r@"  end="@[iomx]*"  skip="\\\\\|\\@"  contains=rubyExprSubst fold
  73. syn region rubyString matchgroup=rubyStringDelimit start="%r\\" end="\\[iomx]*"              contains=rubyExprSubst fold
  74. syn region rubyString matchgroup=rubyStringDelimit start="%r\^" end="\^[iomx]*" skip="\\\\\|\\\^" contains=rubyExprSubst fold
  75. syn region rubyString matchgroup=rubyStringDelimit start="%r`"  end="`[iomx]*"  skip="\\\\\|\\`"  contains=rubyExprSubst fold
  76. syn region rubyString matchgroup=rubyStringDelimit start="%r|"  end="|[iomx]*"  skip="\\\\\|\\|"  contains=rubyExprSubst fold
  77. syn region rubyString matchgroup=rubyStringDelimit start="%r\~" end="\~[iomx]*" skip="\\\\\|\\\~" contains=rubyExprSubst fold
  78. syn region rubyString matchgroup=rubyStringDelimit start="%r{"  end="}[iomx]*"  skip="\\\\\|\\}"  contains=rubyExprSubst fold
  79. syn region rubyString matchgroup=rubyStringDelimit start="%r<"  end=">[iomx]*"  skip="\\\\\|\\>"  contains=rubyExprSubst fold
  80. syn region rubyString matchgroup=rubyStringDelimit start="%r\[" end="\][iomx]*" skip="\\\\\|\\\]" contains=rubyExprSubst fold
  81. syn region rubyString matchgroup=rubyStringDelimit start="%r("  end=")[iomx]*"  skip="\\\\\|\\)"  contains=rubyExprSubst fold
  82.  
  83. " Generalized Single Quoted String and Array of Strings
  84. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]!"  end="!"  skip="\\\\\|\\!"
  85. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\"" end="\"" skip="\\\\\|\\\""
  86. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]#"  end="#"  skip="\\\\\|\\#"
  87. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\$" end="\$" skip="\\\\\|\\\$"
  88. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]%"  end="%"  skip="\\\\\|\\%"
  89. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]&"  end="&"  skip="\\\\\|\\&"
  90. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]'"  end="'"  skip="\\\\\|\\'"
  91. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\*" end="\*" skip="\\\\\|\\\*"
  92. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]+"  end="+"  skip="\\\\\|\\+"
  93. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]-"  end="-"  skip="\\\\\|\\-"
  94. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\." end="\." skip="\\\\\|\\\."
  95. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]/"  end="/"  skip="\\\\\|\\/"
  96. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]:"  end=":"  skip="\\\\\|\\:"
  97. syn region rubyString matchgroup=rubyStringDelimit start="%[wq];"  end=";"  skip="\\\\\|\\;"
  98. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]="  end="="  skip="\\\\\|\\="
  99. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]?"  end="?"  skip="\\\\\|\\?"
  100. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]@"  end="@"  skip="\\\\\|\\@"
  101. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\\" end="\\"
  102. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\^" end="\^" skip="\\\\\|\\\^"
  103. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]`"  end="`"  skip="\\\\\|\\`"
  104. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]|"  end="|"  skip="\\\\\|\\|"
  105. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\~" end="\~" skip="\\\\\|\\\~"
  106. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]{"  end="}"  skip="\\\\\|\\}"
  107. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]<"  end=">"  skip="\\\\\|\\>"
  108. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\[" end="\]" skip="\\\\\|\\\]"
  109. syn region rubyString matchgroup=rubyStringDelimit start="%[wq]("  end=")"  skip="\\\\\|\\)"
  110.  
  111. " Generalized Double Quoted String and Shell Command Output
  112. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=!"  end="!"  skip="\\\\\|\\!"  contains=rubyExprSubst
  113. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\"" end="\"" skip="\\\\\|\\\"" contains=rubyExprSubst
  114. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=#"  end="#"  skip="\\\\\|\\#"  contains=rubyExprSubst
  115. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\$" end="\$" skip="\\\\\|\\\$" contains=rubyExprSubst
  116. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=%"  end="%"  skip="\\\\\|\\%"  contains=rubyExprSubst
  117. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=&"  end="&"  skip="\\\\\|\\&"  contains=rubyExprSubst
  118. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\='"  end="'"  skip="\\\\\|\\'"  contains=rubyExprSubst
  119. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\*" end="\*" skip="\\\\\|\\\*" contains=rubyExprSubst
  120. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=+"  end="+"  skip="\\\\\|\\+"  contains=rubyExprSubst
  121. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=-"  end="-"  skip="\\\\\|\\-"  contains=rubyExprSubst
  122. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\." end="\." skip="\\\\\|\\\." contains=rubyExprSubst
  123. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=/"  end="/"  skip="\\\\\|\\/"  contains=rubyExprSubst
  124. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=:"  end=":"  skip="\\\\\|\\:"  contains=rubyExprSubst
  125. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=;"  end=";"  skip="\\\\\|\\;"  contains=rubyExprSubst
  126. "syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=="    end="="  skip="\\\\\|\\="  contains=rubyExprSubst
  127. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]="    end="="  skip="\\\\\|\\="  contains=rubyExprSubst
  128. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=?"  end="?"  skip="\\\\\|\\?"  contains=rubyExprSubst
  129. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=@"  end="@"  skip="\\\\\|\\@"  contains=rubyExprSubst
  130. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\\" end="\\"            contains=rubyExprSubst
  131. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\^" end="\^" skip="\\\\\|\\\^" contains=rubyExprSubst
  132. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=`"  end="`"  skip="\\\\\|\\`"  contains=rubyExprSubst
  133. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=|"  end="|"  skip="\\\\\|\\|"  contains=rubyExprSubst
  134. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\~" end="\~" skip="\\\\\|\\\~" contains=rubyExprSubst
  135. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\={"  end="}"  skip="\\\\\|\\}"  contains=rubyExprSubst
  136. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=<"  end=">"  skip="\\\\\|\\>"  contains=rubyExprSubst
  137. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\[" end="\]" skip="\\\\\|\\\]" contains=rubyExprSubst
  138. syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=("  end=")"  skip="\\\\\|\\)"  contains=rubyExprSubst
  139.  
  140. " Normal String and Shell Command Output
  141. syn region rubyString matchgroup=rubyStringDelimit start="\"" end="\"" skip="\\\\\|\\\"" contains=rubyExprSubst
  142. syn region rubyString matchgroup=rubyStringDelimit start="'"  end="'"  skip="\\\\\|\\'"
  143. syn region rubyString matchgroup=rubyStringDelimit start="`"  end="`"  skip="\\\\\|\\`"  contains=rubyExprSubst
  144. "
  145. " END Autogenerated Stuff
  146. "
  147.  
  148. " Normal Regular Expression
  149. syn region rubyString matchgroup=rubyStringDelimit start="^\s*/" start="\<and\s*/"lc=3 start="\<or\s*/"lc=2 start="\<while\s*/"lc=5 start="\<until\s*/"lc=5 start="\<unless\s*/"lc=6 start="\<if\s*/"lc=2 start="\<elsif\s*/"lc=5 start="\<when\s*/"lc=4 start="[\~=!|&(,[]\s*/"lc=1 end="/[iomx]*" skip="\\\\\|\\/" contains=rubyExprSubst
  150.  
  151. " Here Document
  152. if version < 600
  153.   syn region rubyString matchgroup=rubyStringDelimit start=+<<-\(\u\{3,}\|'\u\{3,}'\|"\u\{3,}"\|`\u\{3,}`\)+hs=s+2 end=+^\s*\u\{3,}$+ fold
  154.   syn region rubyString matchgroup=rubyStringDelimit start=+<<-\(EOF\|'EOF'\|"EOF"\|`EOF`\)+hs=s+2           end=+^\s*EOF$+     contains=rubyExprSubst fold
  155.   syn region rubyString matchgroup=rubyStringDelimit start=+<<-\(EOS\|'EOS'\|"EOS"\|`EOS`\)+hs=s+2           end=+^\s*EOS$+     contains=rubyExprSubst fold
  156.   syn region rubyString matchgroup=rubyStringDelimit start=+<<\(\u\{3,}\|'\u\{3,}'\|"\u\{3,}"\|`\u\{3,}`\)+hs=s+2  end=+^\u\{3,}$+    fold
  157.   syn region rubyString matchgroup=rubyStringDelimit start=+<<\(EOF\|'EOF'\|"EOF"\|`EOF`\)+hs=s+2           end=+^EOF$+          contains=rubyExprSubst fold
  158.   syn region rubyString matchgroup=rubyStringDelimit start=+<<\(EOS\|'EOS'\|"EOS"\|`EOS`\)+hs=s+2           end=+^EOS$+          contains=rubyExprSubst fold
  159. else
  160.  syn region rubyString matchgroup=rubyStringDelimit start=+\(class\s*\)\@<!<<\z(\h\w*\)\s*$+hs=s+2  end=+^\z1$+    contains=rubyExprSubst fold
  161.  syn region rubyString matchgroup=rubyStringDelimit start=+\(class\s*\)\@<!<<"\z(.*\)"\s*$+hs=s+2   end=+^\z1$+    contains=rubyExprSubst fold
  162.  syn region rubyString matchgroup=rubyStringDelimit start=+\(class\s*\)\@<!<<'\z(.*\)'\s*$+hs=s+2   end=+^\z1$+    fold
  163.  syn region rubyString matchgroup=rubyStringDelimit start=+\(class\s*\)\@<!<<`\z(.*\)`\s*$+hs=s+2   end=+^\z1$+    contains=rubyExprSubst fold
  164.  
  165.  syn region rubyString matchgroup=rubyStringDelimit start=+\(class\s*\)\@<!<<-\z(\h\w*\)\s*$+hs=s+3 end=+^\s*\z1$+ contains=rubyExprSubst fold
  166.  syn region rubyString matchgroup=rubyStringDelimit start=+\(class\s*\)\@<!<<-"\z(.*\)"\s*$+hs=s+3  end=+^\s*\z1$+ contains=rubyExprSubst fold
  167.  syn region rubyString matchgroup=rubyStringDelimit start=+\(class\s*\)\@<!<<-'\z(.*\)'\s*$+hs=s+3  end=+^\s*\z1$+ fold
  168.  syn region rubyString matchgroup=rubyStringDelimit start=+\(class\s*\)\@<!<<-`\z(.*\)`\s*$+hs=s+3  end=+^\s*\z1$+ contains=rubyExprSubst fold
  169. endif
  170.  
  171. " Expensive Mode - colorize *end* according to opening statement
  172. if !exists("ruby_no_expensive")
  173.   syn region rubyFunction      matchgroup=rubyDefine start="^\s*def\s" matchgroup=NONE end="\ze\(\s\|(\|;\|$\)" skip="\.\|\(::\)" oneline fold
  174.   syn region rubyClassOrModule matchgroup=rubyDefine start="^\s*\(class\|module\)\s"   end="<\|$\|;\|\>"he=e-1 oneline fold
  175.  
  176.   syn region rubyBlock start="^\s*def\s\+"rs=s           matchgroup=rubyDefine end="\<end\>" contains=ALLBUT,rubyExprSubst,rubyTodo nextgroup=rubyFunction fold
  177.   syn region rubyBlock start="^\s*\(class\|module\)\>"rs=s matchgroup=rubyDefine end="\<end\>" contains=ALLBUT,rubyExprSubst,rubyTodo nextgroup=rubyClassOrModule fold
  178.  
  179.   " modifiers + redundant *do*
  180.   syn match  rubyControl "\<\(if\|unless\|while\|until\|do\)\>"
  181.  
  182.   " *do* requiring *end*
  183.   syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,rubyExprSubst,rubyTodo fold
  184.  
  185.   " *{* requiring *}*
  186.   syn region rubyCurlyBlock start="{" end="}" contains=ALLBUT,rubyExprSubst,rubyTodo fold
  187.  
  188.   " statements without *do*
  189.   syn region rubyNoDoBlock matchgroup=rubyControl start="\<\(case\|begin\)\>" start="^\s*\(if\|unless\)\>" start=";\s*\(if\|unless\)\>"hs=s+1 end="\<end\>" contains=ALLBUT,rubyExprSubst,rubyTodo fold
  190.  
  191.   " statement with optional *do*
  192.   syn region rubyOptDoBlock matchgroup=rubyControl start="\<for\>" start="^\s*\(while\|until\)\>" start=";\s*\(while\|until\)\>"hs=s+1 end="\<end\>" contains=ALLBUT,rubyExprSubst,rubyTodo,rubyDoBlock,rubyCurlyBlock fold
  193.  
  194.   if !exists("ruby_minlines")
  195.     let ruby_minlines = 50
  196.   endif
  197.   exec "syn sync minlines=" . ruby_minlines
  198.  
  199. else " not Expensive
  200.   syn region  rubyFunction      matchgroup=rubyControl start="^\s*def\s" matchgroup=NONE end="\ze\(\s\|(\|;\|$\)" skip="\.\|\(::\)" oneline fold
  201.   syn region  rubyClassOrModule matchgroup=rubyControl start="^\s*\(class\|module\)\s"   end="<\|$\|;\|\>"he=e-1 oneline fold
  202.   syn keyword rubyControl case begin do for if unless while until end
  203. endif " Expensive?
  204.  
  205. " Keywords
  206. syn keyword rubyControl   then else elsif when ensure rescue
  207. syn keyword rubyControl   and or not in loop
  208. syn keyword rubyControl   break redo retry next return
  209. syn match   rubyKeyword   "\<defined?"
  210. syn keyword rubyKeyword   alias lambda proc super undef yield
  211. syn match   rubyInclude   "^\s*include\>"
  212. syn keyword rubyInclude   load require
  213. syn keyword rubyTodo      FIXME NOTE TODO XXX contained
  214. syn keyword rubyBoolean   true false self nil
  215. syn keyword rubyException raise fail catch throw
  216. syn keyword rubyBeginEnd  BEGIN END
  217.  
  218. " Comments and Documentation
  219. if version < 600
  220.   syn match  rubySharpBang "#!.*"
  221. else
  222.   syn match  rubySharpBang "\%^#!.*"
  223. endif
  224. syn match  rubyComment       "#.*" contains=rubyTodo
  225. syn region rubyDocumentation start="^=begin" end="^=end.*$" contains=rubyTodo fold
  226.  
  227. " Note: this is a hack to prevent 'keywords' being highlighted as such when used as method names
  228. syn match rubyKeywordAsMethod "\.\@<!\.\(\s*\n\s*\)*\(alias\|and\|begin\|break\|case\|catch\|class\|def\|do\|elsif\)\>"        transparent contains=NONE
  229. syn match rubyKeywordAsMethod "\.\@<!\.\(\s*\n\s*\)*\(else\|fail\|false\|ensure\|for\|end\|if\|in\|include\|lambda\)\>"        transparent contains=NONE
  230. syn match rubyKeywordAsMethod "\.\@<!\.\(\s*\n\s*\)*\(load\|loop\|module\|next\|nil\|not\|or\|proc\|raise\|require\)\>"        transparent contains=NONE
  231. syn match rubyKeywordAsMethod "\.\@<!\.\(\s*\n\s*\)*\(redo\|rescue\|retry\|return\|self\|super\|then\|throw\|true\|unless\)\>" transparent contains=NONE
  232. syn match rubyKeywordAsMethod "\.\@<!\.\(\s*\n\s*\)*\(undef\|until\|when\|while\|yield\|BEGIN\|END\|__FILE__\|__LINE__\)\>"    transparent contains=NONE
  233.  
  234. " __END__ Directive
  235. syn region rubyData matchgroup=rubyDataDirective start="^__END__$" matchgroup=NONE end="." skip="."
  236.  
  237. " Define the default highlighting.
  238. " For version 5.7 and earlier: only when not done already
  239. " For version 5.8 and later: only when an item doesn't have highlighting yet
  240. if version >= 508 || !exists("did_ruby_syntax_inits")
  241.   if version < 508
  242.     let did_ruby_syntax_inits = 1
  243.     command -nargs=+ HiLink hi link <args>
  244.   else
  245.     command -nargs=+ HiLink hi def link <args>
  246.   endif
  247.  
  248.   HiLink rubyDefine            Define
  249.   HiLink rubyFunction            Function
  250.   HiLink rubyControl            Statement
  251.   HiLink rubyInclude            Include
  252.   HiLink rubyNumber            Number
  253.   HiLink rubyBoolean            Boolean
  254.   HiLink rubyException            Exception
  255.   HiLink rubyClassOrModule        Type
  256.   HiLink rubyIdentifier            Identifier
  257.   HiLink rubyClassVariable        rubyIdentifier
  258.   HiLink rubyConstant            rubyIdentifier
  259.   HiLink rubyGlobalVariable        rubyIdentifier
  260.   HiLink rubyIterator            rubyIdentifier
  261.   HiLink rubyInstanceVariable        rubyIdentifier
  262.   HiLink rubyPredefinedIdentifier    rubyIdentifier
  263.   HiLink rubyPredefinedConstant        rubyPredefinedIdentifier
  264.   HiLink rubyPredefinedVariable        rubyPredefinedIdentifier
  265.   HiLink rubySymbol            rubyIdentifier
  266.   HiLink rubySharpBang            PreProc
  267.   HiLink rubyKeyword            Keyword
  268.   HiLink rubyBeginEnd            Statement
  269.  
  270.   HiLink rubyString            String
  271.   HiLink rubyStringDelimit        Delimiter
  272.   HiLink rubyExprSubst            Special
  273.  
  274.   HiLink rubyComment            Comment
  275.   HiLink rubyDocumentation        Comment
  276.   HiLink rubyTodo            Todo
  277.   HiLink rubyData            Comment
  278.   HiLink rubyDataDirective        Delimiter
  279.  
  280.   delcommand HiLink
  281. endif
  282.  
  283. let b:current_syntax = "ruby"
  284.  
  285. " vim: nowrap tabstop=8
  286.