Skip to content
Snippets Groups Projects
Commit 6b730e11 authored by Bram Moolenaar's avatar Bram Moolenaar
Browse files

updated for version 7.0148

parent 58071af7
No related branches found
No related tags found
No related merge requests found
" Vim completion script " Vim completion script
" Language: XHTML 1.0 Strict " Language: XHTML 1.0 Strict
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) " Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" Last Change: 2005 Sep 13 " Last Change: 2005 Sep 15
function! htmlcomplete#CompleteTags(findstart, base) function! htmlcomplete#CompleteTags(findstart, base)
if a:findstart if a:findstart
...@@ -235,85 +235,206 @@ function! htmlcomplete#CompleteTags(findstart, base) ...@@ -235,85 +235,206 @@ function! htmlcomplete#CompleteTags(findstart, base)
return res return res
endif endif
" Close tag " Close tag
if a:base =~ '^\/' && exists("*GetLastOpenTag") let b:unaryTagsStack = "base meta link hr br param img area input col"
let b:unaryTagsStack = "base meta link hr br param img area input col" if a:base =~ '^\/'
let opentag = GetLastOpenTag("b:unaryTagsStack") let opentag = htmlcomplete#GetLastOpenTag("b:unaryTagsStack")
return ["/".opentag.">"] return ["/".opentag.">"]
endif endif
" Deal with tag completion. " Deal with tag completion.
if exists("*GetLastOpenTag") let opentag = htmlcomplete#GetLastOpenTag("b:unaryTagsStack")
" set b:unaryTagsStack to proper value for xhtml 1.0 or html 4.01 " Clusters
let b:unaryTagsStack = "base meta link hr br param img area input col" let special = "br span bdo map object img"
let opentag = GetLastOpenTag("b:unaryTagsStack") let phrase = "em strong dfn code q samp kbd var cite abbr acronym sub sup"
" Clusters let inlineforms = "input select textarea label button"
let special = "br span bdo map object img" let miscinline = "ins del script"
let phrase = "em strong dfn code q samp kbd var cite abbr acronym sub sup" let inline = "a ".special." ".phrase." ".inlineforms." tt i b big small"
let inlineforms = "input select textarea label button" let misc = "noscript ".miscinline
let miscinline = "ins del script" let block = "p h1 h2 h3 h4 h5 h6 div ul ol dl pre hr blockquote address fieldset table"
let inline = "a ".special." ".phrase." ".inlineforms." tt i b big small"
let misc = "noscript ".miscinline
let block = "p h1 h2 h3 h4 h5 h6 div ul ol dl pre hr blockquote address fieldset table"
if opentag == 'a'
let tags = split("tt i b big small ".special." ".phrase." ".inlineforms." ".miscinline)
elseif opentag =~ '^\(abbr\|acronym\|address\|b\|p\|h\d\|dt\|span\|bdo\|em\|strong\|dfn\|code\|samp\|kbd\|var\|cite\|q\|sub\|sup\|tt\|i\|big\|small\|label\|caption\)$'
let tags = split(inline." ".miscinline)
elseif opentag == 'pre'
let tags = split("a tt i b big small br span bdo map ".phrase." ".miscinline." ".inlineforms)
elseif opentag == 'html'
let tags = split("head body")
elseif opentag == 'legend'
let tags = split(inline." ".miscinline)
elseif opentag == 'head'
let tags = split("title base scipt style meta link object")
elseif opentag =~ '^\(noscript\|body\|blockquote\)$'
let tags = split("form ".block." ".misc)
elseif opentag =~ '^\(ul\|ol\)$'
let tags = ["li"]
elseif opentag == 'dl'
let tags = split("dt dd")
elseif opentag =~ '^\(ins\|del\|th\|td\|dd\|div\|li\)$'
let tags = split("form ".block." ".inline." ".misc)
elseif opentag == 'object'
let tags = split("param form ".block." ".inline." ".misc)
elseif opentag == 'fieldset'
let tags = split("legend form ".block." ".inline." ".misc)
elseif opentag == 'map'
let tags = split("area form ".block." ".misc)
elseif opentag == 'form'
let tags = split(block." ".misc)
elseif opentag == 'select'
let tags = split("optgroup option")
elseif opentag == 'optgroup'
let tags = ["option"]
elseif opentag == 'colgroup'
let tags = ["col"]
elseif opentag == '^\(textarea\|option\|script\|style\|title\)$'
let tags = []
elseif opentag == 'button'
let tags = split("p h1 h2 h3 h4 h5 h6 div ul ol dl table")
elseif opentag =~ '^\(thead\|tfoot\|tbody)$'
let tags = ["tr"]
elseif opentag == 'tr'
let tags = split("th td")
elseif opentag == 'table'
let tags = split("caption col colgroup thead tfoot tbody tr")
endif
for m in tags
if m =~ a:base
call add(res, m)
endif
endfor
return res
if opentag == 'a'
let tags = split("tt i b big small ".special." ".phrase." ".inlineforms." ".miscinline)
elseif opentag =~ '^\(abbr\|acronym\|address\|b\|p\|h\d\|dt\|span\|bdo\|em\|strong\|dfn\|code\|samp\|kbd\|var\|cite\|q\|sub\|sup\|tt\|i\|big\|small\|label\|caption\)$'
let tags = split(inline." ".miscinline)
elseif opentag == 'pre'
let tags = split("a tt i b big small br span bdo map ".phrase." ".miscinline." ".inlineforms)
elseif opentag == 'html'
let tags = split("head body")
elseif opentag == 'legend'
let tags = split(inline." ".miscinline)
elseif opentag == 'head'
let tags = split("title base scipt style meta link object")
elseif opentag =~ '^\(noscript\|body\|blockquote\)$'
let tags = split("form ".block." ".misc)
elseif opentag =~ '^\(ul\|ol\)$'
let tags = ["li"]
elseif opentag == 'dl'
let tags = split("dt dd")
elseif opentag =~ '^\(ins\|del\|th\|td\|dd\|div\|li\)$'
let tags = split("form ".block." ".inline." ".misc)
elseif opentag == 'object'
let tags = split("param form ".block." ".inline." ".misc)
elseif opentag == 'fieldset'
let tags = split("legend form ".block." ".inline." ".misc)
elseif opentag == 'map'
let tags = split("area form ".block." ".misc)
elseif opentag == 'form'
let tags = split(block." ".misc)
elseif opentag == 'select'
let tags = split("optgroup option")
elseif opentag == 'optgroup'
let tags = ["option"]
elseif opentag == 'colgroup'
let tags = ["col"]
elseif opentag == '^\(textarea\|option\|script\|style\|title\)$'
let tags = []
elseif opentag == 'button'
let tags = split("p h1 h2 h3 h4 h5 h6 div ul ol dl table")
elseif opentag =~ '^\(thead\|tfoot\|tbody)$'
let tags = ["tr"]
elseif opentag == 'tr'
let tags = split("th td")
elseif opentag == 'table'
let tags = split("caption col colgroup thead tfoot tbody tr")
endif endif
for m in split("a abbr acronym address area b base bdo big blockquote body br button caption cite code col colgroup dd del dfn div dl dt em fieldset form head h1 h2 h3 h4 h5 h6 hr html i img input ins kbd label legend li link map meta noscript object ol optgroup option p param pre q samp script select small span strong style sub sup table tbody td textarea tfoot th thead title tr tt ul var") for m in tags
if m =~ a:base if m =~ a:base
call add(res, m) call add(res, m)
endif endif
endfor endfor
return res
return res
endif endif
endfunction endfunction
" MM: This is greatly reduced closetag.vim used with kind permission of Steven
" Mueller
" Changes: strip all comments; delete error messages
" Author: Steven Mueller <diffusor@ugcs.caltech.edu>
" Last Modified: Tue May 24 13:29:48 PDT 2005
" Version: 0.9.1
function! htmlcomplete#GetLastOpenTag(unaryTagsStack)
let linenum=line(".")
let lineend=col(".") - 1 " start: cursor position
let first=1 " flag for first line searched
let b:TagStack="" " main stack of tags
let startInComment=s:InComment()
let tagpat='</\=\(\k\|[-:]\)\+\|/>'
while (linenum>0)
let line=getline(linenum)
if first
let line=strpart(line,0,lineend)
else
let lineend=strlen(line)
endif
let b:lineTagStack=""
let mpos=0
let b:TagCol=0
while (mpos > -1)
let mpos=matchend(line,tagpat)
if mpos > -1
let b:TagCol=b:TagCol+mpos
let tag=matchstr(line,tagpat)
if exists("b:closetag_disable_synID") || startInComment==s:InCommentAt(linenum, b:TagCol)
let b:TagLine=linenum
call s:Push(matchstr(tag,'[^<>]\+'),"b:lineTagStack")
endif
let lineend=lineend-mpos
let line=strpart(line,mpos,lineend)
endif
endwhile
while (!s:EmptystackP("b:lineTagStack"))
let tag=s:Pop("b:lineTagStack")
if match(tag, "^/") == 0 "found end tag
call s:Push(tag,"b:TagStack")
elseif s:EmptystackP("b:TagStack") && !s:Instack(tag, a:unaryTagsStack) "found unclosed tag
return tag
else
let endtag=s:Peekstack("b:TagStack")
if endtag == "/".tag || endtag == "/"
call s:Pop("b:TagStack") "found a open/close tag pair
elseif !s:Instack(tag, a:unaryTagsStack) "we have a mismatch error
return ""
endif
endif
endwhile
let linenum=linenum-1 | let first=0
endwhile
return ""
endfunction
function! s:InComment()
return synIDattr(synID(line("."), col("."), 0), "name") =~ 'Comment'
endfunction
function! s:InCommentAt(line, col)
return synIDattr(synID(a:line, a:col, 0), "name") =~ 'Comment'
endfunction
function! s:SetKeywords()
let g:IsKeywordBak=&iskeyword
let &iskeyword="33-255"
endfunction
function! s:RestoreKeywords()
let &iskeyword=g:IsKeywordBak
endfunction
function! s:Push(el, sname)
if !s:EmptystackP(a:sname)
exe "let ".a:sname."=a:el.' '.".a:sname
else
exe "let ".a:sname."=a:el"
endif
endfunction
function! s:EmptystackP(sname)
exe "let stack=".a:sname
if match(stack,"^ *$") == 0
return 1
else
return 0
endif
endfunction
function! s:Instack(el, sname)
exe "let stack=".a:sname
call s:SetKeywords()
let m=match(stack, "\\<".a:el."\\>")
call s:RestoreKeywords()
if m < 0
return 0
else
return 1
endif
endfunction
function! s:Peekstack(sname)
call s:SetKeywords()
exe "let stack=".a:sname
let top=matchstr(stack, "\\<.\\{-1,}\\>")
call s:RestoreKeywords()
return top
endfunction
function! s:Pop(sname)
if s:EmptystackP(a:sname)
return ""
endif
exe "let stack=".a:sname
call s:SetKeywords()
let loc=matchend(stack,"\\<.\\{-1,}\\>")
exe "let ".a:sname."=strpart(stack, loc+1, strlen(stack))"
let top=strpart(stack, match(stack, "\\<"), loc)
call s:RestoreKeywords()
return top
endfunction
function! s:Clearstack(sname)
exe "let ".a:sname."=''"
endfunction
" Vim compiler file " Vim compiler file
" Compiler: Ruby syntax check and/or error reporting " Language: Ruby
" Maintainer: Tim Hammerquist <timmy@cpan.org> " Function: Syntax check and/or error reporting
" Last Change: Tue Jul 16 00:38:00 PDT 2002 " Maintainer: Tim Hammerquist <timh at rubyforge.org>
" Info: $Id$
" URL: http://vim-ruby.rubyforge.org
" Anon CVS: See above site
" Licence: GPL (http://www.gnu.org)
" Disclaimer:
" This program is distributed in the hope that it will be useful,
" but WITHOUT ANY WARRANTY; without even the implied warranty of
" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
" GNU General Public License for more details.
" ----------------------------------------------------------------------------
" "
" Changelog: " Changelog:
" 0.2: script saves and restores 'cpoptions' value to prevent problems with " 0.2: script saves and restores 'cpoptions' value to prevent problems with
...@@ -22,6 +32,7 @@ ...@@ -22,6 +32,7 @@
" This is my first experience with 'errorformat' and compiler plugins and " This is my first experience with 'errorformat' and compiler plugins and
" I welcome any input from more experienced (or clearer-thinking) " I welcome any input from more experienced (or clearer-thinking)
" individuals. " individuals.
" ----------------------------------------------------------------------------
if exists("current_compiler") if exists("current_compiler")
finish finish
...@@ -59,4 +70,4 @@ CompilerSet errorformat= ...@@ -59,4 +70,4 @@ CompilerSet errorformat=
let &cpo = s:cpo_save let &cpo = s:cpo_save
unlet s:cpo_save unlet s:cpo_save
" vim: ft=vim " vim: nowrap sw=2 sts=2 ts=8 ff=unix:
*insert.txt* For Vim version 7.0aa. Last change: 2005 Sep 13 *insert.txt* For Vim version 7.0aa. Last change: 2005 Sep 15
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
...@@ -985,6 +985,22 @@ declarations are recognized. Preprocessor stuff may cause confusion. ...@@ -985,6 +985,22 @@ declarations are recognized. Preprocessor stuff may cause confusion.
When the same structure name appears in multiple places all possible members When the same structure name appears in multiple places all possible members
are included. are included.
(X)HTML *ft-html-omni*
When using after CTRL-X CTRL-O after "<" it is completed with tag name
available in current context. Inside of tag completion aids to choose
proper attributes, and when possible choose appropriate attribute value.
When used after "</" CTRL-X CTRL-O will close the last opened tag.
File htmlcompletion.vim provides through autoload mechanism
GetLastOpenTag function which can be used in XML files to get name of
last open tag with: >
:echo htmlcompletion#GetLastOpenTag("b:unaryTagsStack")
<
============================================================================== ==============================================================================
8. Insert mode commands *inserting* 8. Insert mode commands *inserting*
......
" Vim filetype plugin
" Language: eRuby
" Maintainer: Doug Kearns <djkea2 at gus.gscit.monash.edu.au>
" Info: $Id$
" URL: http://vim-ruby.sourceforge.net
" Anon CVS: See above site
" Licence: GPL (http://www.gnu.org)
" Disclaimer:
" This program is distributed in the hope that it will be useful,
" but WITHOUT ANY WARRANTY; without even the implied warranty of
" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
" GNU General Public License for more details.
" ----------------------------------------------------------------------------
" Only do this when not done yet for this buffer
if (exists("b:did_ftplugin"))
finish
endif
let s:save_cpo = &cpo
set cpo-=C
" Define some defaults in case the included ftplugins don't set them.
let s:undo_ftplugin = ""
let s:browsefilter = "Ruby Files (*.rb)\t*.rb\n" .
\ "HTML Files (*.html, *.htm)\t*.html;*.htm\n" .
\ "All Files (*.*)\t*.*\n"
let s:match_words = ""
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
unlet b:did_ftplugin
" Override our defaults if these were set by an included ftplugin.
if exists("b:undo_ftplugin")
let s:undo_ftplugin = b:undo_ftplugin
unlet b:undo_ftplugin
endif
if exists("b:browsefilter")
let s:browsefilter = b:browsefilter
unlet b:browsefilter
endif
if exists("b:match_words")
let s:match_words = b:match_words
unlet b:match_words
endif
runtime! ftplugin/ruby.vim ftplugin/ruby_*.vim ftplugin/ruby/*.vim
let b:did_ftplugin = 1
" Combine the new set of values with those previously included.
if exists("b:undo_ftplugin")
let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin
endif
if exists ("b:browsefilter")
let s:browsefilter = b:browsefilter . s:browsefilter
endif
if exists("b:match_words")
let s:match_words = b:match_words . ',' . s:match_words
endif
" Change the browse dialog on Win32 to show mainly eRuby-related files
if has("gui_win32")
let b:browsefilter="eRuby Files (*.rhtml)\t*.rhtml\n" . s:browsefilter
endif
" Load the combined list of match_words for matchit.vim
if exists("loaded_matchit")
let b:match_words = s:match_words
endif
" TODO: comments=
setlocal commentstring=<%#%s%>
let b:undo_ftplugin = "setl cms< "
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
let &cpo = s:save_cpo
" vim: nowrap sw=2 sts=2 ts=8 ff=unix:
" zipPlugin.vim: Handles browsing zipfiles
" PLUGIN PORTION
" Date: Sep 14, 2005
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
" License: Vim License (see vim's :help license)
" Copyright: Copyright (C) 2005 Charles E. Campbell, Jr. {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
" zipPlugin.vim is provided *as is* and comes with no warranty
" of any kind, either expressed or implied. By using this
" plugin, you agree that in no event will the copyright
" holder be liable for any damages resulting from the use
" of this software.
" ---------------------------------------------------------------------
" Initialization: {{{1
let s:keepcpo= &cpo
set cpo&vim
" ---------------------------------------------------------------------
" Public Interface: {{{1
augroup zip
au!
au BufReadCmd zipfile:* call zip#Read(expand("<afile>"), 1)
au FileReadCmd zipfile:* call zip#Read(expand("<afile>"), 0)
au BufWriteCmd zipfile:* call zip#Write(expand("<afile>"))
au FileWriteCmd zipfile:* call zip#Write(expand("<afile>"))
if has("unix")
au BufReadCmd zipfile:*/* call zip#Read(expand("<afile>"), 1)
au FileReadCmd zipfile:*/* call zip#Read(expand("<afile>"), 0)
au BufWriteCmd zipfile:*/* call zip#Write(expand("<afile>"))
au FileWriteCmd zipfile:*/* call zip#Write(expand("<afile>"))
endif
au BufReadCmd *.zip call zip#Browse(expand("<afile>"))
augroup END
" ------------------------------------------------------------------------
" Modelines And Restoration: {{{1
let &cpo= s:keepcpo
unlet s:keepcpo
" vim:ts=8 fdm=marker
" Vim syntax file " Vim syntax file
" Language: Ruby " Language: Ruby
" Maintainer: Doug Kearns <djkea2@gus.gscit.monash.edu.au> " Maintainer: Doug Kearns <djkea2 at gus.gscit.monash.edu.au>
" Info: $Id$
" URL: http://vim-ruby.sourceforge.net
" Anon CVS: See above site
" Licence: GPL (http://www.gnu.org)
" Disclaimer:
" This program is distributed in the hope that it will be useful,
" but WITHOUT ANY WARRANTY; without even the implied warranty of
" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
" GNU General Public License for more details.
" ----------------------------------------------------------------------------
"
" Previous Maintainer: Mirko Nasato " Previous Maintainer: Mirko Nasato
" Last Change: 2004 Nov 27
" URL: http://gus.gscit.monash.edu.au/~djkea2/vim/syntax/ruby.vim
" $Id$
" Thanks to perl.vim authors, and to Reimer Behrends. :-) (MN) " Thanks to perl.vim authors, and to Reimer Behrends. :-) (MN)
" ----------------------------------------------------------------------------
" For version 5.x: Clear all syntax items " For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded " For version 6.x: Quit when a syntax file was already loaded
...@@ -17,222 +24,206 @@ elseif exists("b:current_syntax") ...@@ -17,222 +24,206 @@ elseif exists("b:current_syntax")
finish finish
endif endif
if has("folding") && exists("ruby_fold")
setlocal foldmethod=syntax
endif
if exists("ruby_space_errors")
if !exists("ruby_no_trail_space_error")
syn match rubySpaceError display excludenl "\s\+$"
endif
if !exists("ruby_no_tab_space_error")
syn match rubySpaceError display " \+\t"me=e-1
endif
endif
" Expression Substitution and Backslash Notation " Expression Substitution and Backslash Notation
syn match rubyExprSubst "\\\\\|\(\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\w\)\|\(\\\o\{3}\|\\x\x\{2}\|\\[abefnrstv]\)" contained syn match rubyEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display
syn match rubyExprSubst "#{[^}]*}" contained syn match rubyEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display
syn match rubyExprSubst "#[$@]\w\+" contained syn match rubyInterpolation "#{[^}]*}" contained
syn match rubyInterpolation "#\%(\$\|@@\=\)\w\+" contained display
syn match rubyNoInterpolation "\\#{[^}]*}" contained
syn match rubyNoInterpolation "\\#\%(\$\|@@\=\)\w\+" contained display
syn match rubyDelimEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE
syn region rubyNestedParentheses start="(" end=")" skip="\\\\\|\\)" transparent contained contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimEscape
syn region rubyNestedCurlyBraces start="{" end="}" skip="\\\\\|\\}" transparent contained contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimEscape
syn region rubyNestedAngleBrackets start="<" end=">" skip="\\\\\|\\>" transparent contained contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimEscape
syn region rubyNestedSquareBrackets start="\[" end="\]" skip="\\\\\|\\\]" transparent contained contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimEscape
syn cluster rubyStringSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyEscape
syn cluster rubyExtendedStringSpecial contains=@rubyStringSpecial,rubyNestedParentheses,rubyNestedCurlyBraces,rubyNestedAngleBrackets,rubyNestedSquareBrackets
" Numbers and ASCII Codes " Numbers and ASCII Codes
syn match rubyNumber "\w\@<!\(?\(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\S\)\)" syn match rubyASCIICode "\w\@<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)"
syn match rubyNumber "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>" syn match rubyInteger "\<0[xX]\x\+\%(_\x\+\)*\>" display
syn match rubyInteger "\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)\>" display
" Identifiers - constant, class and instance, global, symbol, iterator, predefined syn match rubyInteger "\<0[oO]\=\o\+\%(_\o\+\)*\>" display
syn match rubyLocalVariableOrMethod "[_[:lower:]][_[:alnum:]]*[?!=]\=" transparent contains=NONE syn match rubyInteger "\<0[bB][01]\+\%(_[01]\+\)*\>" display
syn match rubyFloat "\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*\>" display
if !exists("ruby_no_identifiers") syn match rubyFloat "\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)\>" display
syn match rubyConstant "\(::\)\=\zs\u\w*"
syn match rubyClassVariable "@@\h\w*" " Identifiers
syn match rubyInstanceVariable "@\h\w*" syn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent
syn match rubyGlobalVariable "$\(\h\w*\|-.\)" syn match rubyBlockArgument "&[_[:lower:]][_[:alnum:]]" contains=NONE display transparent
syn match rubySymbol ":\@<!:\(\$\|@@\=\)\=\h\w*[?!=]\="
syn match rubyIterator "|[ ,a-zA-Z0-9_*]\+|" syn match rubyConstant "\%(\%(\.\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\>\%(\s*(\)\@!"
syn match rubyClassVariable "@@\h\w*" display
syn match rubyPredefinedVariable "$[!"$&'*+,./0:;<=>?@\\_`~1-9]" syn match rubyInstanceVariable "@\h\w*" display
syn match rubyPredefinedVariable "$-[0FIKadilpvw]" syn match rubyGlobalVariable "$\%(\h\w*\|-.\)"
syn match rubyPredefinedVariable "$\(defout\|stderr\|stdin\|stdout\)\>" syn match rubySymbol ":\@<!:\%(\^\|\~\|<<\|<=>\|<=\|<\|===\|==\|=\~\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)"
syn match rubyPredefinedVariable "$\(DEBUG\|FILENAME\|KCODE\|LOAD_PATH\|SAFE\|VERBOSE\)\>" syn match rubySymbol ":\@<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)"
syn match rubyPredefinedConstant "__\(FILE\|LINE\)__\>" syn match rubySymbol ":\@<!:\%(\$\|@@\=\)\=\h\w*[?!=]\="
syn match rubyPredefinedConstant "\<\(::\)\=\zs\(MatchingData\|NotImplementError\|ARGF\|ARGV\|ENV\)\>" syn region rubySymbol start=":\@<!:\"" end="\"" skip="\\\\\|\\\""
syn match rubyPredefinedConstant "\<\(::\)\=\zs\(DATA\|FALSE\|NIL\|RUBY_PLATFORM\|RUBY_RELEASE_DATE\)\>" syn match rubyBlockParameter "\%(\%(\<do\>\|{\)\s*\)\@<=|\s*\zs[( ,a-zA-Z0-9_*)]\+\ze\s*|" display
syn match rubyPredefinedConstant "\<\(::\)\=\zs\(RUBY_VERSION\|STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\|TRUE\)\>"
"Obsolete Global Constants syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~1-9]#
"syn match rubyPredefinedConstant "\<\(::\)\=\zs\(PLATFORM\|RELEASE\|VERSION\)\>" syn match rubyPredefinedVariable "$_\>" display
endif syn match rubyPredefinedVariable "$-[0FIKadilpvw]\>" display
syn match rubyPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>" display
syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|KCODE\|LOAD_PATH\|SAFE\|VERBOSE\)\>" display
syn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(MatchingData\|ARGF\|ARGV\|ENV\)\>\%(\s*(\)\@!"
syn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(DATA\|FALSE\|NIL\|RUBY_PLATFORM\|RUBY_RELEASE_DATE\)\>\%(\s*(\)\@!"
syn match rubyPredefinedConstant "\%(\%(\.\@<!\.\)\@<!\|::\)\_s*\zs\%(RUBY_VERSION\|STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\|TRUE\)\>\%(\s*(\)\@!"
"Obsolete Global Constants
"syn match rubyPredefinedConstant "\%(::\)\=\zs\%(PLATFORM\|RELEASE_DATE\|VERSION\)\>"
"syn match rubyPredefinedConstant "\%(::\)\=\zs\%(NotImplementError\)\>"
" " Normal Regular Expression
" BEGIN Autogenerated Stuff syn region rubyString matchgroup=rubyStringDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\)\|[\~=!|&(,[]\)\s*\)\@<=/" end="/[iomx]*" skip="\\\\\|\\/" contains=@rubyStringSpecial
" syn region rubyString matchgroup=rubyStringDelimiter start="\%(\<\%(split\|scan\|gsub\|sub\)\s*\)\@<=/" end="/[iomx]*" skip="\\\\\|\\/" contains=@rubyStringSpecial
" Generalized Regular Expression
syn region rubyString matchgroup=rubyStringDelimit start="%r!" end="![iomx]*" skip="\\\\\|\\!" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r\"" end="\"[iomx]*" skip="\\\\\|\\\"" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r#" end="#[iomx]*" skip="\\\\\|\\#" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r\$" end="\$[iomx]*" skip="\\\\\|\\\$" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r%" end="%[iomx]*" skip="\\\\\|\\%" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r&" end="&[iomx]*" skip="\\\\\|\\&" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r'" end="'[iomx]*" skip="\\\\\|\\'" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r\*" end="\*[iomx]*" skip="\\\\\|\\\*" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r+" end="+[iomx]*" skip="\\\\\|\\+" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r-" end="-[iomx]*" skip="\\\\\|\\-" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r\." end="\.[iomx]*" skip="\\\\\|\\\." contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r/" end="/[iomx]*" skip="\\\\\|\\/" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r:" end=":[iomx]*" skip="\\\\\|\\:" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r;" end=";[iomx]*" skip="\\\\\|\\;" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r=" end="=[iomx]*" skip="\\\\\|\\=" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r?" end="?[iomx]*" skip="\\\\\|\\?" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r@" end="@[iomx]*" skip="\\\\\|\\@" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r\\" end="\\[iomx]*" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r\^" end="\^[iomx]*" skip="\\\\\|\\\^" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r`" end="`[iomx]*" skip="\\\\\|\\`" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r|" end="|[iomx]*" skip="\\\\\|\\|" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r\~" end="\~[iomx]*" skip="\\\\\|\\\~" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r{" end="}[iomx]*" skip="\\\\\|\\}" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r<" end=">[iomx]*" skip="\\\\\|\\>" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r\[" end="\][iomx]*" skip="\\\\\|\\\]" contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start="%r(" end=")[iomx]*" skip="\\\\\|\\)" contains=rubyExprSubst fold
" Generalized Single Quoted String and Array of Strings
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]!" end="!" skip="\\\\\|\\!"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\"" end="\"" skip="\\\\\|\\\""
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]#" end="#" skip="\\\\\|\\#"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\$" end="\$" skip="\\\\\|\\\$"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]%" end="%" skip="\\\\\|\\%"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]&" end="&" skip="\\\\\|\\&"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]'" end="'" skip="\\\\\|\\'"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\*" end="\*" skip="\\\\\|\\\*"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]+" end="+" skip="\\\\\|\\+"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]-" end="-" skip="\\\\\|\\-"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\." end="\." skip="\\\\\|\\\."
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]/" end="/" skip="\\\\\|\\/"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]:" end=":" skip="\\\\\|\\:"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq];" end=";" skip="\\\\\|\\;"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]=" end="=" skip="\\\\\|\\="
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]?" end="?" skip="\\\\\|\\?"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]@" end="@" skip="\\\\\|\\@"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\\" end="\\"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\^" end="\^" skip="\\\\\|\\\^"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]`" end="`" skip="\\\\\|\\`"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]|" end="|" skip="\\\\\|\\|"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\~" end="\~" skip="\\\\\|\\\~"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]{" end="}" skip="\\\\\|\\}"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]<" end=">" skip="\\\\\|\\>"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq]\[" end="\]" skip="\\\\\|\\\]"
syn region rubyString matchgroup=rubyStringDelimit start="%[wq](" end=")" skip="\\\\\|\\)"
" Generalized Double Quoted String and Shell Command Output
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=!" end="!" skip="\\\\\|\\!" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\"" end="\"" skip="\\\\\|\\\"" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=#" end="#" skip="\\\\\|\\#" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\$" end="\$" skip="\\\\\|\\\$" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=%" end="%" skip="\\\\\|\\%" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=&" end="&" skip="\\\\\|\\&" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\='" end="'" skip="\\\\\|\\'" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\*" end="\*" skip="\\\\\|\\\*" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=+" end="+" skip="\\\\\|\\+" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=-" end="-" skip="\\\\\|\\-" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\." end="\." skip="\\\\\|\\\." contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=/" end="/" skip="\\\\\|\\/" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=:" end=":" skip="\\\\\|\\:" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=;" end=";" skip="\\\\\|\\;" contains=rubyExprSubst
"syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\==" end="=" skip="\\\\\|\\=" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]=" end="=" skip="\\\\\|\\=" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=?" end="?" skip="\\\\\|\\?" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=@" end="@" skip="\\\\\|\\@" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\\" end="\\" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\^" end="\^" skip="\\\\\|\\\^" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=`" end="`" skip="\\\\\|\\`" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=|" end="|" skip="\\\\\|\\|" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\~" end="\~" skip="\\\\\|\\\~" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\={" end="}" skip="\\\\\|\\}" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=<" end=">" skip="\\\\\|\\>" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=\[" end="\]" skip="\\\\\|\\\]" contains=rubyExprSubst
syn region rubyString matchgroup=rubyStringDelimit start="%[Qx]\=(" end=")" skip="\\\\\|\\)" contains=rubyExprSubst
" Normal String and Shell Command Output " Normal String and Shell Command Output
syn region rubyString matchgroup=rubyStringDelimit start="\"" end="\"" skip="\\\\\|\\\"" contains=rubyExprSubst syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial
syn region rubyString matchgroup=rubyStringDelimit start="'" end="'" skip="\\\\\|\\'" syn region rubyString matchgroup=rubyStringDelimiter start="'" end="'" skip="\\\\\|\\'"
syn region rubyString matchgroup=rubyStringDelimit start="`" end="`" skip="\\\\\|\\`" contains=rubyExprSubst syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial
"
" END Autogenerated Stuff
"
" Normal Regular Expression " Generalized Regular Expression
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 syn region rubyString matchgroup=rubyStringDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomx]*" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
syn region rubyString matchgroup=rubyStringDelimiter start="%r{" end="}[iomx]*" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimEscape fold
syn region rubyString matchgroup=rubyStringDelimiter start="%r<" end=">[iomx]*" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold
syn region rubyString matchgroup=rubyStringDelimiter start="%r\[" end="\][iomx]*" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimEscape fold
syn region rubyString matchgroup=rubyStringDelimiter start="%r(" end=")[iomx]*" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimEscape fold
" Generalized Single Quoted String, Symbol and Array of Strings
syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw]{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimEscape
syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw]<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimEscape
syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimEscape
syn region rubyString matchgroup=rubyStringDelimiter start="%[qsw](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimEscape
" Generalized Double Quoted String and Array of Strings and Shell Command Output
" Note: %= is not matched here as the beginning of a double quoted string
syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimEscape fold
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimEscape fold
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimEscape fold
" Here Document " Here Document
if version < 600 syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-\=\zs\%(\h\w*\)+ end=+$+ oneline contains=TOP
syn region rubyString matchgroup=rubyStringDelimit start=+<<-\(\u\{3,}\|'\u\{3,}'\|"\u\{3,}"\|`\u\{3,}`\)+hs=s+2 end=+^\s*\u\{3,}$+ fold syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=TOP
syn region rubyString matchgroup=rubyStringDelimit start=+<<-\(EOF\|'EOF'\|"EOF"\|`EOF`\)+hs=s+2 end=+^\s*EOF$+ contains=rubyExprSubst fold syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-\=\zs'\%([^']*\)'+ end=+$+ oneline contains=TOP
syn region rubyString matchgroup=rubyStringDelimit start=+<<-\(EOS\|'EOS'\|"EOS"\|`EOS`\)+hs=s+2 end=+^\s*EOS$+ contains=rubyExprSubst fold syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=TOP
syn region rubyString matchgroup=rubyStringDelimit start=+<<\(\u\{3,}\|'\u\{3,}'\|"\u\{3,}"\|`\u\{3,}`\)+hs=s+2 end=+^\u\{3,}$+ fold
syn region rubyString matchgroup=rubyStringDelimit start=+<<\(EOF\|'EOF'\|"EOF"\|`EOF`\)+hs=s+2 end=+^EOF$+ contains=rubyExprSubst fold syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<\z(\h\w*\)\ze+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial nextgroup=rubyFunction fold keepend
syn region rubyString matchgroup=rubyStringDelimit start=+<<\(EOS\|'EOS'\|"EOS"\|`EOS`\)+hs=s+2 end=+^EOS$+ contains=rubyExprSubst fold syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<"\z([^"]*\)"\ze+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial nextgroup=rubyFunction fold keepend
else syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<'\z([^']*\)'\ze+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart nextgroup=rubyFunction fold keepend
syn region rubyString matchgroup=rubyStringDelimit start=+\(class\s*\)\@<!<<\z(\h\w*\)\s*$+hs=s+2 end=+^\z1$+ contains=rubyExprSubst fold syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<`\z([^`]*\)`\ze+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,@rubyStringSpecial nextgroup=rubyFunction fold keepend
syn region rubyString matchgroup=rubyStringDelimit start=+\(class\s*\)\@<!<<"\z(.*\)"\s*$+hs=s+2 end=+^\z1$+ contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start=+\(class\s*\)\@<!<<'\z(.*\)'\s*$+hs=s+2 end=+^\z1$+ fold syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-\z(\h\w*\)\ze+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial nextgroup=rubyFunction fold keepend
syn region rubyString matchgroup=rubyStringDelimit start=+\(class\s*\)\@<!<<`\z(.*\)`\s*$+hs=s+2 end=+^\z1$+ contains=rubyExprSubst fold syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-"\z([^"]*\)"\ze+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial nextgroup=rubyFunction fold keepend
syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-'\z([^']*\)'\ze+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart nextgroup=rubyFunction fold keepend
syn region rubyString matchgroup=rubyStringDelimit start=+\(class\s*\)\@<!<<-\z(\h\w*\)\s*$+hs=s+3 end=+^\s*\z1$+ contains=rubyExprSubst fold syn region rubyString start=+\%(\%(class\s*\|\%(\.\|::\)\)\_s*\)\@<!<<-`\z([^`]*\)`\ze+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial nextgroup=rubyFunction fold keepend
syn region rubyString matchgroup=rubyStringDelimit start=+\(class\s*\)\@<!<<-"\z(.*\)"\s*$+hs=s+3 end=+^\s*\z1$+ contains=rubyExprSubst fold
syn region rubyString matchgroup=rubyStringDelimit start=+\(class\s*\)\@<!<<-'\z(.*\)'\s*$+hs=s+3 end=+^\s*\z1$+ fold if exists('main_syntax') && main_syntax == 'eruby'
syn region rubyString matchgroup=rubyStringDelimit start=+\(class\s*\)\@<!<<-`\z(.*\)`\s*$+hs=s+3 end=+^\s*\z1$+ contains=rubyExprSubst fold let ruby_no_expensive = 1
endif end
" Expensive Mode - colorize *end* according to opening statement " Expensive Mode - colorize *end* according to opening statement
if !exists("ruby_no_expensive") if !exists("ruby_no_expensive")
syn region rubyFunction matchgroup=rubyDefine start="^\s*def\s" matchgroup=NONE end="\ze\(\s\|(\|;\|$\)" skip="\.\|\(::\)" oneline fold syn region rubyFunction matchgroup=rubyDefine start="\<def\s\+" end="\ze\%(\s\|(\|;\|$\)" oneline
syn region rubyClassOrModule matchgroup=rubyDefine start="^\s*\(class\|module\)\s" end="<\|$\|;\|\>"he=e-1 oneline fold syn region rubyClass matchgroup=rubyDefine start="\<class\s\+" end="\ze\%(\s\|<\|;\|$\)" oneline
syn match rubyDefine "\<class\ze<<"
syn region rubyModule matchgroup=rubyDefine start="\<module\s\+" end="\ze\%(\s\|;\|$\)" oneline
syn region rubyBlock start="^\s*def\s\+"rs=s matchgroup=rubyDefine end="\<end\>" contains=ALLBUT,rubyExprSubst,rubyTodo nextgroup=rubyFunction fold syn region rubyBlock start="\<def\>" matchgroup=rubyDefine end="\<end\>" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo nextgroup=rubyFunction fold
syn region rubyBlock start="^\s*\(class\|module\)\>"rs=s matchgroup=rubyDefine end="\<end\>" contains=ALLBUT,rubyExprSubst,rubyTodo nextgroup=rubyClassOrModule fold syn region rubyBlock start="\<class\>" matchgroup=rubyDefine end="\<end\>" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo nextgroup=rubyClass fold
syn region rubyBlock start="\<module\>" matchgroup=rubyDefine end="\<end\>" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo nextgroup=rubyModule fold
" modifiers + redundant *do* " modifiers
syn match rubyControl "\<\(if\|unless\|while\|until\|do\)\>" syn match rubyControl "\<\%(if\|unless\|while\|until\)\>" display
" *do* requiring *end* " *do* requiring *end*
syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,rubyExprSubst,rubyTodo fold syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo fold
" *{* requiring *}* " *{* requiring *}*
syn region rubyCurlyBlock start="{" end="}" contains=ALLBUT,rubyExprSubst,rubyTodo fold syn region rubyCurlyBlock start="{" end="}" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo fold
" statements without *do* " statements without *do*
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 syn region rubyNoDoBlock matchgroup=rubyControl start="\<\%(case\|begin\)\>" start="\%(^\|\.\.\.\=\|[,;=([<>~\*/%!&^|+-]\)\s*\zs\%(if\|unless\)\>" end="\<end\>" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo fold
" statement with optional *do* " statement with optional *do*
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 syn region rubyOptDoLine matchgroup=rubyControl start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[,;=([<>~\*/%!&^|+-]\)\s*\)\@<=\<\%(until\|while\)\>" end="\%(\<do\>\|:\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo
syn region rubyOptDoBlock start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[,;=([<>~\*/%!&^|+-]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyControl end="\<end\>" contains=ALLBUT,@rubyExtendedStringSpecial,rubyTodo nextgroup=rubyOptDoLine fold
if !exists("ruby_minlines") if !exists("ruby_minlines")
let ruby_minlines = 50 let ruby_minlines = 50
endif endif
exec "syn sync minlines=" . ruby_minlines exec "syn sync minlines=" . ruby_minlines
else " not Expensive else
syn region rubyFunction matchgroup=rubyControl start="^\s*def\s" matchgroup=NONE end="\ze\(\s\|(\|;\|$\)" skip="\.\|\(::\)" oneline fold syn region rubyFunction matchgroup=rubyControl start="\<def\s\+" end="\ze\%(\s\|(\|;\|$\)" oneline
syn region rubyClassOrModule matchgroup=rubyControl start="^\s*\(class\|module\)\s" end="<\|$\|;\|\>"he=e-1 oneline fold syn region rubyClass matchgroup=rubyControl start="\<class\s\+" end="\ze\%(\s\|<\|;\|$\)" oneline
syn match rubyControl "\<class\ze<<"
syn region rubyModule matchgroup=rubyControl start="\<module\s\+" end="\ze\%(\s\|;\|$\)" oneline
syn keyword rubyControl case begin do for if unless while until end syn keyword rubyControl case begin do for if unless while until end
endif " Expensive? endif
" Keywords " Keywords
syn keyword rubyControl then else elsif when ensure rescue " Note: the following keywords have already been defined:
syn keyword rubyControl and or not in loop " begin case class def do end for if module unless until while
syn keyword rubyControl break redo retry next return syn keyword rubyControl and break else elsif ensure in next not or redo rescue retry return then when
syn match rubyKeyword "\<defined?" syn match rubyOperator "\<defined?" display
syn keyword rubyKeyword alias lambda proc super undef yield syn keyword rubyKeyword alias super undef yield
syn match rubyInclude "^\s*include\>" syn keyword rubyBoolean true false
syn keyword rubyInclude load require syn keyword rubyPseudoVariable nil self __FILE__ __LINE__
syn keyword rubyTodo FIXME NOTE TODO XXX contained syn keyword rubyBeginEnd BEGIN END
syn keyword rubyBoolean true false self nil
syn keyword rubyException raise fail catch throw " Special Methods
syn keyword rubyBeginEnd BEGIN END if !exists("ruby_no_special_methods")
syn keyword rubyAccess public protected private
" Comments and Documentation syn keyword rubyAttribute attr attr_accessor attr_reader attr_writer
if version < 600 syn keyword rubyControl abort at_exit exit fork loop trap
syn match rubySharpBang "#!.*" syn keyword rubyEval eval class_eval instance_eval module_eval
else syn keyword rubyException raise fail catch throw
syn match rubySharpBang "\%^#!.*" syn keyword rubyInclude autoload extend include load require
syn keyword rubyKeyword callcc caller lambda proc
endif endif
syn match rubyComment "#.*" contains=rubyTodo
syn region rubyDocumentation start="^=begin" end="^=end.*$" contains=rubyTodo fold
" Note: this is a hack to prevent 'keywords' being highlighted as such when used as method names " Comments and Documentation
syn match rubyKeywordAsMethod "\.\@<!\.\(\s*\n\s*\)*\(alias\|and\|begin\|break\|case\|catch\|class\|def\|do\|elsif\)\>" transparent contains=NONE syn match rubySharpBang "\%^#!.*" display
syn match rubyKeywordAsMethod "\.\@<!\.\(\s*\n\s*\)*\(else\|fail\|false\|ensure\|for\|end\|if\|in\|include\|lambda\)\>" transparent contains=NONE syn keyword rubyTodo FIXME NOTE TODO XXX contained
syn match rubyKeywordAsMethod "\.\@<!\.\(\s*\n\s*\)*\(load\|loop\|module\|next\|nil\|not\|or\|proc\|raise\|require\)\>" transparent contains=NONE syn match rubyComment "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell
syn match rubyKeywordAsMethod "\.\@<!\.\(\s*\n\s*\)*\(redo\|rescue\|retry\|return\|self\|super\|then\|throw\|true\|unless\)\>" transparent contains=NONE syn region rubyDocumentation start="^=begin" end="^=end.*$" contains=rubySpaceError,rubyTodo,@Spell fold
syn match rubyKeywordAsMethod "\.\@<!\.\(\s*\n\s*\)*\(undef\|until\|when\|while\|yield\|BEGIN\|END\|__FILE__\|__LINE__\)\>" transparent contains=NONE
" Note: this is a hack to prevent 'keywords' being highlighted as such when called as methods with an explicit receiver
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(alias\|and\|begin\|break\|case\|class\|def\|defined\|do\|else\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(elsif\|end\|ensure\|false\|for\|if\|in\|module\|next\|nil\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(not\|or\|redo\|rescue\|retry\|return\|self\|super\|then\|true\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(undef\|unless\|until\|when\|while\|yield\|BEGIN\|END\|__FILE__\|__LINE__\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(abort\|at_exit\|attr\|attr_accessor\|attr_reader\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(attr_writer\|autoload\|callcc\|catch\|caller\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(eval\|class_eval\|instance_eval\|module_eval\|exit\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(extend\|fail\|fork\|include\|lambda\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(load\|loop\|private\|proc\|protected\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(public\|require\|raise\|throw\|trap\)\>" transparent contains=NONE
" __END__ Directive " __END__ Directive
syn region rubyData matchgroup=rubyDataDirective start="^__END__$" matchgroup=NONE end="." skip="." syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold
" Define the default highlighting. " Define the default highlighting.
" For version 5.7 and earlier: only when not done already " For version 5.7 and earlier: only when not done already
...@@ -249,37 +240,53 @@ if version >= 508 || !exists("did_ruby_syntax_inits") ...@@ -249,37 +240,53 @@ if version >= 508 || !exists("did_ruby_syntax_inits")
HiLink rubyFunction Function HiLink rubyFunction Function
HiLink rubyControl Statement HiLink rubyControl Statement
HiLink rubyInclude Include HiLink rubyInclude Include
HiLink rubyNumber Number HiLink rubyInteger Number
HiLink rubyBoolean Boolean HiLink rubyASCIICode rubyInteger
HiLink rubyFloat Float
HiLink rubyBoolean rubyPseudoVariable
HiLink rubyException Exception HiLink rubyException Exception
HiLink rubyClassOrModule Type HiLink rubyClass Type
HiLink rubyIdentifier Identifier HiLink rubyModule Type
if !exists("ruby_no_identifiers")
HiLink rubyIdentifier Identifier
else
HiLink rubyIdentifier NONE
endif
HiLink rubyClassVariable rubyIdentifier HiLink rubyClassVariable rubyIdentifier
HiLink rubyConstant rubyIdentifier HiLink rubyConstant rubyIdentifier
HiLink rubyGlobalVariable rubyIdentifier HiLink rubyGlobalVariable rubyIdentifier
HiLink rubyIterator rubyIdentifier HiLink rubyBlockParameter rubyIdentifier
HiLink rubyInstanceVariable rubyIdentifier HiLink rubyInstanceVariable rubyIdentifier
HiLink rubyPredefinedIdentifier rubyIdentifier HiLink rubyPredefinedIdentifier rubyIdentifier
HiLink rubyPredefinedConstant rubyPredefinedIdentifier HiLink rubyPredefinedConstant rubyPredefinedIdentifier
HiLink rubyPredefinedVariable rubyPredefinedIdentifier HiLink rubyPredefinedVariable rubyPredefinedIdentifier
HiLink rubySymbol rubyIdentifier HiLink rubySymbol rubyIdentifier
HiLink rubySharpBang PreProc
HiLink rubyKeyword Keyword HiLink rubyKeyword Keyword
HiLink rubyOperator Operator
HiLink rubyBeginEnd Statement HiLink rubyBeginEnd Statement
HiLink rubyAccess Statement
HiLink rubyString String HiLink rubyAttribute Statement
HiLink rubyStringDelimit Delimiter HiLink rubyEval Statement
HiLink rubyExprSubst Special HiLink rubyPseudoVariable Constant
HiLink rubyComment Comment HiLink rubyComment Comment
HiLink rubyDocumentation Comment
HiLink rubyTodo Todo
HiLink rubyData Comment HiLink rubyData Comment
HiLink rubyDataDirective Delimiter HiLink rubyDataDirective Delimiter
HiLink rubyDocumentation Comment
HiLink rubyEscape Special
HiLink rubyInterpolation Special
HiLink rubyNoInterpolation rubyString
HiLink rubySharpBang PreProc
HiLink rubyStringDelimiter Delimiter
HiLink rubyString String
HiLink rubyTodo Todo
HiLink rubyError Error
HiLink rubySpaceError rubyError
delcommand HiLink delcommand HiLink
endif endif
let b:current_syntax = "ruby" let b:current_syntax = "ruby"
" vim: nowrap tabstop=8 " vim: nowrap sw=2 sts=2 ts=8 ff=unix:
...@@ -5834,10 +5834,6 @@ nv_csearch(cap) ...@@ -5834,10 +5834,6 @@ nv_csearch(cap)
t_cmd = FALSE; t_cmd = FALSE;
cap->oap->motion_type = MCHAR; cap->oap->motion_type = MCHAR;
if (cap->arg == BACKWARD)
cap->oap->inclusive = FALSE;
else
cap->oap->inclusive = TRUE;
if (IS_SPECIAL(cap->nchar) || searchc(cap, t_cmd) == FAIL) if (IS_SPECIAL(cap->nchar) || searchc(cap, t_cmd) == FAIL)
clearopbeep(cap->oap); clearopbeep(cap->oap);
else else
......
...@@ -11293,6 +11293,7 @@ sug_compare __ARGS((const void *s1, const void *s2)); ...@@ -11293,6 +11293,7 @@ sug_compare __ARGS((const void *s1, const void *s2));
/* /*
* Function given to qsort() to sort the suggestions on st_score. * Function given to qsort() to sort the suggestions on st_score.
* First on "st_score", then "st_altscore" then alphabetically.
*/ */
static int static int
#ifdef __BORLANDC__ #ifdef __BORLANDC__
...@@ -11307,7 +11308,11 @@ sug_compare(s1, s2) ...@@ -11307,7 +11308,11 @@ sug_compare(s1, s2)
int n = p1->st_score - p2->st_score; int n = p1->st_score - p2->st_score;
if (n == 0) if (n == 0)
return p1->st_altscore - p2->st_altscore; {
n = p1->st_altscore - p2->st_altscore;
if (n == 0)
n = STRICMP(p1->st_word, p2->st_word);
}
return n; return n;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment