/
usr
/
share
/
vim
/
vim74
/
ftplugin
/
/usr/share/vim/vim74/ftplugin
mkdir
upload
Name
Size
Mode
Actions
a2ps.vim
458
0644
edit
dl
rm
aap.vim
716
0644
edit
dl
rm
abap.vim
800
0644
edit
dl
rm
abaqus.vim
3391
0644
edit
dl
rm
ada.vim
6408
0644
edit
dl
rm
alsaconf.vim
426
0644
edit
dl
rm
ant.vim
1341
0644
edit
dl
rm
arch.vim
419
0644
edit
dl
rm
art.vim
410
0644
edit
dl
rm
aspvbs.vim
1916
0644
edit
dl
rm
automake.vim
325
0644
edit
dl
rm
bdf.vim
437
0644
edit
dl
rm
bst.vim
333
0644
edit
dl
rm
btm.vim
316
0644
edit
dl
rm
c.vim
1964
0644
edit
dl
rm
calendar.vim
450
0644
edit
dl
rm
cdrdaoconf.vim
375
0644
edit
dl
rm
ch.vim
472
0644
edit
dl
rm
changelog.vim
8742
0644
edit
dl
rm
clojure.vim
2846
0644
edit
dl
rm
cobol.vim
9392
0644
edit
dl
rm
conf.vim
422
0644
edit
dl
rm
config.vim
1274
0644
edit
dl
rm
context.vim
955
0644
edit
dl
rm
cpp.vim
288
0644
edit
dl
rm
crm.vim
402
0644
edit
dl
rm
cs.vim
802
0644
edit
dl
rm
csc.vim
734
0644
edit
dl
rm
csh.vim
1633
0644
edit
dl
rm
css.vim
516
0644
edit
dl
rm
cucumber.vim
5325
0644
edit
dl
rm
cvsrc.vim
387
0644
edit
dl
rm
debchangelog.vim
11532
0644
edit
dl
rm
debcontrol.vim
1886
0644
edit
dl
rm
denyhosts.vim
375
0644
edit
dl
rm
dictconf.vim
422
0644
edit
dl
rm
dictdconf.vim
423
0644
edit
dl
rm
diff.vim
355
0644
edit
dl
rm
dircolors.vim
419
0644
edit
dl
rm
docbk.vim
530
0644
edit
dl
rm
dosbatch.vim
777
0644
edit
dl
rm
dosini.vim
446
0644
edit
dl
rm
dtd.vim
1123
0644
edit
dl
rm
dtrace.vim
1151
0644
edit
dl
rm
elinks.vim
424
0644
edit
dl
rm
erlang.vim
1811
0644
edit
dl
rm
eruby.vim
3150
0644
edit
dl
rm
eterm.vim
458
0644
edit
dl
rm
falcon.vim
1344
0644
edit
dl
rm
fetchmail.vim
416
0644
edit
dl
rm
flexwiki.vim
1876
0644
edit
dl
rm
fortran.vim
4257
0644
edit
dl
rm
framescript.vim
768
0644
edit
dl
rm
fvwm.vim
390
0644
edit
dl
rm
git.vim
1218
0644
edit
dl
rm
gitcommit.vim
2213
0644
edit
dl
rm
gitconfig.vim
376
0644
edit
dl
rm
gitrebase.vim
1434
0644
edit
dl
rm
gitsendemail.vim
157
0644
edit
dl
rm
gpg.vim
421
0644
edit
dl
rm
gprof.vim
939
0644
edit
dl
rm
group.vim
413
0644
edit
dl
rm
grub.vim
422
0644
edit
dl
rm
haml.vim
1887
0644
edit
dl
rm
hamster.vim
1923
0644
edit
dl
rm
haskell.vim
433
0644
edit
dl
rm
help.vim
430
0644
edit
dl
rm
hostconf.vim
375
0644
edit
dl
rm
hostsaccess.vim
424
0644
edit
dl
rm
html.vim
2935
0644
edit
dl
rm
htmldjango.vim
331
0644
edit
dl
rm
indent.vim
442
0644
edit
dl
rm
initex.vim
1005
0644
edit
dl
rm
ishd.vim
1264
0644
edit
dl
rm
java.vim
1686
0644
edit
dl
rm
javascript.vim
1047
0644
edit
dl
rm
jsp.vim
2011
0644
edit
dl
rm
kconfig.vim
375
0644
edit
dl
rm
kwt.vim
851
0644
edit
dl
rm
ld.vim
458
0644
edit
dl
rm
lftp.vim
422
0644
edit
dl
rm
libao.vim
428
0644
edit
dl
rm
limits.vim
424
0644
edit
dl
rm
liquid.vim
1897
0644
edit
dl
rm
lisp.vim
911
0644
edit
dl
rm
logcheck.vim
500
0644
edit
dl
rm
loginaccess.vim
430
0644
edit
dl
rm
logindefs.vim
428
0644
edit
dl
rm
logtalk.dict
1790
0644
edit
dl
rm
logtalk.vim
401
0644
edit
dl
rm
lprolog.vim
1279
0644
edit
dl
rm
lua.vim
973
0644
edit
dl
rm
m4.vim
414
0644
edit
dl
rm
mail.vim
1107
0644
edit
dl
rm
mailaliases.vim
375
0644
edit
dl
rm
mailcap.vim
422
0644
edit
dl
rm
make.vim
935
0644
edit
dl
rm
man.vim
4707
0644
edit
dl
rm
manconf.vim
432
0644
edit
dl
rm
markdown.vim
572
0644
edit
dl
rm
matlab.vim
649
0644
edit
dl
rm
mf.vim
404
0644
edit
dl
rm
modconf.vim
465
0644
edit
dl
rm
mp.vim
621
0644
edit
dl
rm
mplayerconf.vim
460
0644
edit
dl
rm
mrxvtrc.vim
798
0644
edit
dl
rm
msmessages.vim
1141
0644
edit
dl
rm
muttrc.vim
455
0644
edit
dl
rm
nanorc.vim
435
0644
edit
dl
rm
netrc.vim
416
0644
edit
dl
rm
nsis.vim
553
0644
edit
dl
rm
objc.vim
296
0644
edit
dl
rm
ocaml.vim
23041
0644
edit
dl
rm
occam.vim
1297
0644
edit
dl
rm
pamconf.vim
421
0644
edit
dl
rm
pascal.vim
667
0644
edit
dl
rm
passwd.vim
412
0644
edit
dl
rm
pdf.vim
2613
0644
edit
dl
rm
perl.vim
2946
0644
edit
dl
rm
perl6.vim
2529
0644
edit
dl
rm
php.vim
2813
0644
edit
dl
rm
pinfo.vim
423
0644
edit
dl
rm
plaintex.vim
1150
0644
edit
dl
rm
postscr.vim
1006
0644
edit
dl
rm
procmail.vim
467
0644
edit
dl
rm
prolog.vim
428
0644
edit
dl
rm
protocols.vim
445
0644
edit
dl
rm
pyrex.vim
766
0644
edit
dl
rm
python.vim
1359
0644
edit
dl
rm
qf.vim
459
0644
edit
dl
rm
quake.vim
427
0644
edit
dl
rm
racc.vim
437
0644
edit
dl
rm
readline.vim
426
0644
edit
dl
rm
README.txt
869
0644
edit
dl
rm
reva.vim
709
0644
edit
dl
rm
rnc.vim
419
0644
edit
dl
rm
rpl.vim
620
0644
edit
dl
rm
rst.vim
444
0644
edit
dl
rm
ruby.vim
16235
0644
edit
dl
rm
sass.vim
580
0644
edit
dl
rm
scheme.vim
1752
0644
edit
dl
rm
screen.vim
424
0644
edit
dl
rm
scss.vim
200
0644
edit
dl
rm
sensors.vim
443
0644
edit
dl
rm
services.vim
440
0644
edit
dl
rm
setserial.vim
427
0644
edit
dl
rm
sgml.vim
1210
0644
edit
dl
rm
sh.vim
1202
0644
edit
dl
rm
sieve.vim
457
0644
edit
dl
rm
slpconf.vim
465
0644
edit
dl
rm
slpreg.vim
464
0644
edit
dl
rm
slpspi.vim
455
0644
edit
dl
rm
spec.vim
5330
0644
edit
dl
rm
sql.vim
20562
0644
edit
dl
rm
sshconfig.vim
429
0644
edit
dl
rm
sudoers.vim
426
0644
edit
dl
rm
svg.vim
1200
0644
edit
dl
rm
sysctl.vim
441
0644
edit
dl
rm
tcl.vim
1002
0644
edit
dl
rm
tcsh.vim
1207
0644
edit
dl
rm
terminfo.vim
418
0644
edit
dl
rm
tex.vim
1641
0644
edit
dl
rm
treetop.vim
404
0644
edit
dl
rm
tt2html.vim
434
0644
edit
dl
rm
udevconf.vim
422
0644
edit
dl
rm
udevperm.vim
420
0644
edit
dl
rm
udevrules.vim
414
0644
edit
dl
rm
updatedb.vim
431
0644
edit
dl
rm
vb.vim
1907
0644
edit
dl
rm
verilog.vim
1681
0644
edit
dl
rm
vhdl.vim
3497
0644
edit
dl
rm
vim.vim
2951
0644
edit
dl
rm
xdefaults.vim
469
0644
edit
dl
rm
xf86conf.vim
422
0644
edit
dl
rm
xhtml.vim
2036
0644
edit
dl
rm
xinetd.vim
464
0644
edit
dl
rm
xml.vim
1911
0644
edit
dl
rm
xmodmap.vim
422
0644
edit
dl
rm
xs.vim
465
0644
edit
dl
rm
xsd.vim
1171
0644
edit
dl
rm
xslt.vim
539
0644
edit
dl
rm
yaml.vim
452
0644
edit
dl
rm
zimbu.vim
5322
0644
edit
dl
rm
zsh.vim
674
0644
edit
dl
rm
Edit:
/usr/share/vim/vim74/ftplugin/ruby.vim
(16235B)
" Vim filetype plugin " Language: Ruby " Maintainer: Tim Pope <vimNOSPAM@tpope.org> " URL: https://github.com/vim-ruby/vim-ruby " Release Coordinator: Doug Kearns <dougkearns@gmail.com> " ---------------------------------------------------------------------------- if (exists("b:did_ftplugin")) finish endif let b:did_ftplugin = 1 let s:cpo_save = &cpo set cpo&vim if has("gui_running") && !has("gui_win32") setlocal keywordprg=ri\ -T\ -f\ bs else setlocal keywordprg=ri endif " Matchit support if exists("loaded_matchit") && !exists("b:match_words") let b:match_ignorecase = 0 let b:match_words = \ '\<\%(if\|unless\|case\|while\|until\|for\|do\|class\|module\|def\|begin\)\>=\@!' . \ ':' . \ '\<\%(else\|elsif\|ensure\|when\|rescue\|break\|redo\|next\|retry\)\>' . \ ':' . \ '\<end\>' . \ ',{:},\[:\],(:)' let b:match_skip = \ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" . \ "\\<ruby\\%(String\\|StringDelimiter\\|ASCIICode\\|Escape\\|" . \ "Interpolation\\|NoInterpolation\\|Comment\\|Documentation\\|" . \ "ConditionalModifier\\|RepeatModifier\\|OptionalDo\\|" . \ "Function\\|BlockArgument\\|KeywordAsMethod\\|ClassVariable\\|" . \ "InstanceVariable\\|GlobalVariable\\|Symbol\\)\\>'" endif setlocal formatoptions-=t formatoptions+=croql setlocal include=^\\s*\\<\\(load\\>\\\|require\\>\\\|autoload\\s*:\\=[\"']\\=\\h\\w*[\"']\\=,\\) setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.rb','') setlocal suffixesadd=.rb if exists("&ofu") && has("ruby") setlocal omnifunc=rubycomplete#Complete endif " To activate, :set ballooneval if has('balloon_eval') && exists('+balloonexpr') setlocal balloonexpr=RubyBalloonexpr() endif " TODO: "setlocal define=^\\s*def setlocal comments=:# setlocal commentstring=#\ %s if !exists('g:ruby_version_paths') let g:ruby_version_paths = {} endif function! s:query_path(root) let code = "print $:.join %q{,}" if &shell =~# 'sh' && $PATH !~# '\s' let prefix = 'env PATH='.$PATH.' ' else let prefix = '' endif if &shellxquote == "'" let path_check = prefix.'ruby -e "' . code . '"' else let path_check = prefix."ruby -e '" . code . "'" endif let cd = haslocaldir() ? 'lcd' : 'cd' let cwd = getcwd() try exe cd fnameescape(a:root) let path = split(system(path_check),',') exe cd fnameescape(cwd) return path finally exe cd fnameescape(cwd) endtry endfunction function! s:build_path(path) let path = join(map(copy(a:path), 'v:val ==# "." ? "" : v:val'), ',') if &g:path !~# '\v^\.%(,/%(usr|emx)/include)=,,$' let path = substitute(&g:path,',,$',',','') . ',' . path endif return path endfunction let s:execute_ruby = 1 " Security Check, don't execute ruby from the current directory if fnamemodify(exepath("ruby"), ":p:h") ==# getcwd() let s:execute_ruby = 0 endif function SetRubyPath() if !exists('b:ruby_version') && !exists('g:ruby_path') && isdirectory(expand('%:p:h')) let s:version_file = findfile('.ruby-version', '.;') if !empty(s:version_file) && filereadable(s:version_file) && s:execute_ruby let b:ruby_version = get(readfile(s:version_file, '', 1), '') if !has_key(g:ruby_version_paths, b:ruby_version) let g:ruby_version_paths[b:ruby_version] = s:query_path(fnamemodify(s:version_file, ':p:h')) endif endif if exists("g:ruby_path") let s:ruby_path = type(g:ruby_path) == type([]) ? join(g:ruby_path, ',') : g:ruby_path elseif has_key(g:ruby_version_paths, get(b:, 'ruby_version', '')) && s:execute_ruby let s:ruby_paths = g:ruby_version_paths[b:ruby_version] let s:ruby_path = s:build_path(s:ruby_paths) else if !exists('g:ruby_default_path') if has("ruby") && has("win32") ruby ::VIM::command( 'let g:ruby_default_path = split("%s",",")' % $:.join(%q{,}) ) elseif executable('ruby') && !empty($HOME) && s:execute_ruby let g:ruby_default_path = s:query_path($HOME) else let g:ruby_default_path = map(split($RUBYLIB,':'), 'v:val ==# "." ? "" : v:val') endif endif let s:ruby_paths = g:ruby_default_path let s:ruby_path = s:build_path(s:ruby_paths) endif if stridx(&l:path, s:ruby_path) == -1 let &l:path = s:ruby_path endif if exists('s:ruby_paths') && stridx(&l:tags, join(map(copy(s:ruby_paths),'v:val."/tags"'),',')) == -1 let &l:tags = &tags . ',' . join(map(copy(s:ruby_paths),'v:val."/tags"'),',') endif endfunction call SetRubyPath() if has("gui_win32") && !exists("b:browsefilter") let b:browsefilter = "Ruby Source Files (*.rb)\t*.rb\n" . \ "All Files (*.*)\t*.*\n" endif let b:undo_ftplugin = "setl fo< inc< inex< sua< def< com< cms< path< tags< kp<" \."| unlet! b:browsefilter b:match_ignorecase b:match_words b:match_skip" \."| if exists('&ofu') && has('ruby') | setl ofu< | endif" \."| if has('balloon_eval') && exists('+bexpr') | setl bexpr< | endif" if !exists("g:no_plugin_maps") && !exists("g:no_ruby_maps") nnoremap <silent> <buffer> [m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','b','n')<CR> nnoremap <silent> <buffer> ]m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','','n')<CR> nnoremap <silent> <buffer> [M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','b','n')<CR> nnoremap <silent> <buffer> ]M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','','n')<CR> xnoremap <silent> <buffer> [m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','b','v')<CR> xnoremap <silent> <buffer> ]m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','','v')<CR> xnoremap <silent> <buffer> [M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','b','v')<CR> xnoremap <silent> <buffer> ]M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','','v')<CR> nnoremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','b','n')<CR> nnoremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','','n')<CR> nnoremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','b','n')<CR> nnoremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','','n')<CR> xnoremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','b','v')<CR> xnoremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','','v')<CR> xnoremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','b','v')<CR> xnoremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','','v')<CR> let b:undo_ftplugin = b:undo_ftplugin \."| sil! exe 'unmap <buffer> [[' | sil! exe 'unmap <buffer> ]]' | sil! exe 'unmap <buffer> []' | sil! exe 'unmap <buffer> ]['" \."| sil! exe 'unmap <buffer> [m' | sil! exe 'unmap <buffer> ]m' | sil! exe 'unmap <buffer> [M' | sil! exe 'unmap <buffer> ]M'" if maparg('im','n') == '' onoremap <silent> <buffer> im :<C-U>call <SID>wrap_i('[m',']M')<CR> onoremap <silent> <buffer> am :<C-U>call <SID>wrap_a('[m',']M')<CR> xnoremap <silent> <buffer> im :<C-U>call <SID>wrap_i('[m',']M')<CR> xnoremap <silent> <buffer> am :<C-U>call <SID>wrap_a('[m',']M')<CR> let b:undo_ftplugin = b:undo_ftplugin \."| sil! exe 'ounmap <buffer> im' | sil! exe 'ounmap <buffer> am'" \."| sil! exe 'xunmap <buffer> im' | sil! exe 'xunmap <buffer> am'" endif if maparg('iM','n') == '' onoremap <silent> <buffer> iM :<C-U>call <SID>wrap_i('[[','][')<CR> onoremap <silent> <buffer> aM :<C-U>call <SID>wrap_a('[[','][')<CR> xnoremap <silent> <buffer> iM :<C-U>call <SID>wrap_i('[[','][')<CR> xnoremap <silent> <buffer> aM :<C-U>call <SID>wrap_a('[[','][')<CR> let b:undo_ftplugin = b:undo_ftplugin \."| sil! exe 'ounmap <buffer> iM' | sil! exe 'ounmap <buffer> aM'" \."| sil! exe 'xunmap <buffer> iM' | sil! exe 'xunmap <buffer> aM'" endif if maparg("\<C-]>",'n') == '' nnoremap <silent> <buffer> <C-]> :<C-U>exe v:count1."tag <C-R>=RubyCursorIdentifier()<CR>"<CR> nnoremap <silent> <buffer> g<C-]> :<C-U>exe "tjump <C-R>=RubyCursorIdentifier()<CR>"<CR> nnoremap <silent> <buffer> g] :<C-U>exe "tselect <C-R>=RubyCursorIdentifier()<CR>"<CR> nnoremap <silent> <buffer> <C-W>] :<C-U>exe v:count1."stag <C-R>=RubyCursorIdentifier()<CR>"<CR> nnoremap <silent> <buffer> <C-W><C-]> :<C-U>exe v:count1."stag <C-R>=RubyCursorIdentifier()<CR>"<CR> nnoremap <silent> <buffer> <C-W>g<C-]> :<C-U>exe "stjump <C-R>=RubyCursorIdentifier()<CR>"<CR> nnoremap <silent> <buffer> <C-W>g] :<C-U>exe "stselect <C-R>=RubyCursorIdentifier()<CR>"<CR> nnoremap <silent> <buffer> <C-W>} :<C-U>exe "ptag <C-R>=RubyCursorIdentifier()<CR>"<CR> nnoremap <silent> <buffer> <C-W>g} :<C-U>exe "ptjump <C-R>=RubyCursorIdentifier()<CR>"<CR> let b:undo_ftplugin = b:undo_ftplugin \."| sil! exe 'nunmap <buffer> <C-]>'| sil! exe 'nunmap <buffer> g<C-]>'| sil! exe 'nunmap <buffer> g]'" \."| sil! exe 'nunmap <buffer> <C-W>]'| sil! exe 'nunmap <buffer> <C-W><C-]>'" \."| sil! exe 'nunmap <buffer> <C-W>g<C-]>'| sil! exe 'nunmap <buffer> <C-W>g]'" \."| sil! exe 'nunmap <buffer> <C-W>}'| sil! exe 'nunmap <buffer> <C-W>g}'" endif if maparg("gf",'n') == '' " By using findfile() rather than gf's normal behavior, we prevent " erroneously editing a directory. nnoremap <silent> <buffer> gf :<C-U>exe <SID>gf(v:count1,"gf",'edit')<CR> nnoremap <silent> <buffer> <C-W>f :<C-U>exe <SID>gf(v:count1,"\<Lt>C-W>f",'split')<CR> nnoremap <silent> <buffer> <C-W><C-F> :<C-U>exe <SID>gf(v:count1,"\<Lt>C-W>\<Lt>C-F>",'split')<CR> nnoremap <silent> <buffer> <C-W>gf :<C-U>exe <SID>gf(v:count1,"\<Lt>C-W>gf",'tabedit')<CR> let b:undo_ftplugin = b:undo_ftplugin \."| sil! exe 'nunmap <buffer> gf' | sil! exe 'nunmap <buffer> <C-W>f' | sil! exe 'nunmap <buffer> <C-W><C-F>' | sil! exe 'nunmap <buffer> <C-W>gf'" endif endif let &cpo = s:cpo_save unlet s:cpo_save if exists("g:did_ruby_ftplugin_functions") finish endif let g:did_ruby_ftplugin_functions = 1 function! RubyBalloonexpr() if !exists('s:ri_found') let s:ri_found = executable('ri') endif if s:ri_found let line = getline(v:beval_lnum) let b = matchstr(strpart(line,0,v:beval_col),'\%(\w\|[:.]\)*$') let a = substitute(matchstr(strpart(line,v:beval_col),'^\w*\%([?!]\|\s*=\)\?'),'\s\+','','g') let str = b.a let before = strpart(line,0,v:beval_col-strlen(b)) let after = strpart(line,v:beval_col+strlen(a)) if str =~ '^\.' let str = substitute(str,'^\.','#','g') if before =~ '\]\s*$' let str = 'Array'.str elseif before =~ '}\s*$' " False positives from blocks here let str = 'Hash'.str elseif before =~ "[\"'`]\\s*$" || before =~ '\$\d\+\s*$' let str = 'String'.str elseif before =~ '\$\d\+\.\d\+\s*$' let str = 'Float'.str elseif before =~ '\$\d\+\s*$' let str = 'Integer'.str elseif before =~ '/\s*$' let str = 'Regexp'.str else let str = substitute(str,'^#','.','') endif endif let str = substitute(str,'.*\.\s*to_f\s*\.\s*','Float#','') let str = substitute(str,'.*\.\s*to_i\%(nt\)\=\s*\.\s*','Integer#','') let str = substitute(str,'.*\.\s*to_s\%(tr\)\=\s*\.\s*','String#','') let str = substitute(str,'.*\.\s*to_sym\s*\.\s*','Symbol#','') let str = substitute(str,'.*\.\s*to_a\%(ry\)\=\s*\.\s*','Array#','') let str = substitute(str,'.*\.\s*to_proc\s*\.\s*','Proc#','') if str !~ '^\w' return '' endif silent! let res = substitute(system("ri -f rdoc -T \"".str.'"'),'\n$','','') if res =~ '^Nothing known about' || res =~ '^Bad argument:' || res =~ '^More than one method' return '' endif return res else return "" endif endfunction function! s:searchsyn(pattern,syn,flags,mode) norm! m' if a:mode ==# 'v' norm! gv endif let i = 0 let cnt = v:count ? v:count : 1 while i < cnt let i = i + 1 let line = line('.') let col = col('.') let pos = search(a:pattern,'W'.a:flags) while pos != 0 && s:synname() !~# a:syn let pos = search(a:pattern,'W'.a:flags) endwhile if pos == 0 call cursor(line,col) return endif endwhile endfunction function! s:synname() return synIDattr(synID(line('.'),col('.'),0),'name') endfunction function! s:wrap_i(back,forward) execute 'norm k'.a:forward let line = line('.') execute 'norm '.a:back if line('.') == line - 1 return s:wrap_a(a:back,a:forward) endif execute 'norm jV'.a:forward.'k' endfunction function! s:wrap_a(back,forward) execute 'norm '.a:forward if line('.') < line('$') && getline(line('.')+1) ==# '' let after = 1 endif execute 'norm '.a:back while getline(line('.')-1) =~# '^\s*#' && line('.') - endwhile if exists('after') execute 'norm V'.a:forward.'j' elseif line('.') > 1 && getline(line('.')-1) =~# '^\s*$' execute 'norm kV'.a:forward else execute 'norm V'.a:forward endif endfunction function! RubyCursorIdentifier() let asciicode = '\%(\w\|[]})\"'."'".']\)\@<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)' let number = '\%(\%(\w\|[]})\"'."'".']\s*\)\@<!-\)\=\%(\<[[:digit:]_]\+\%(\.[[:digit:]_]\+\)\=\%([Ee][[:digit:]_]\+\)\=\>\|\<0[xXbBoOdD][[:xdigit:]_]\+\>\)\|'.asciicode let operator = '\%(\[\]\|<<\|<=>\|[!<>]=\=\|===\=\|[!=]\~\|>>\|\*\*\|\.\.\.\=\|=>\|[~^&|*/%+-]\)' let method = '\%(\<[_a-zA-Z]\w*\>\%([?!]\|\s*=>\@!\)\=\)' let global = '$\%([!$&"'."'".'*+,./:;<=>?@\`~]\|-\=\w\+\>\)' let symbolizable = '\%(\%(@@\=\)\w\+\>\|'.global.'\|'.method.'\|'.operator.'\)' let pattern = '\C\s*\%('.number.'\|\%(:\@<!:\)\='.symbolizable.'\)' let [lnum, col] = searchpos(pattern,'bcn',line('.')) let raw = matchstr(getline('.')[col-1 : ],pattern) let stripped = substitute(substitute(raw,'\s\+=$','=',''),'^\s*:\=','','') return stripped == '' ? expand("<cword>") : stripped endfunction function! s:gf(count,map,edit) abort if getline('.') =~# '^\s*require_relative\s*\(["'']\).*\1\s*$' let target = matchstr(getline('.'),'\(["'']\)\zs.\{-\}\ze\1') return a:edit.' %:h/'.target.'.rb' elseif getline('.') =~# '^\s*\%(require[( ]\|load[( ]\|autoload[( ]:\w\+,\)\s*\s*\%(::\)\=File\.expand_path(\(["'']\)\.\./.*\1,\s*__FILE__)\s*$' let target = matchstr(getline('.'),'\(["'']\)\.\./\zs.\{-\}\ze\1') return a:edit.' %:h/'.target.'.rb' elseif getline('.') =~# '^\s*\%(require \|load \|autoload :\w\+,\)\s*\(["'']\).*\1\s*$' let target = matchstr(getline('.'),'\(["'']\)\zs.\{-\}\ze\1') else let target = expand('<cfile>') endif let found = findfile(target, &path, a:count) if found ==# '' return 'norm! '.a:count.a:map else return a:edit.' '.fnameescape(found) endif endfunction " " Instructions for enabling "matchit" support: " " 1. Look for the latest "matchit" plugin at " " http://www.vim.org/scripts/script.php?script_id=39 " " It is also packaged with Vim, in the $VIMRUNTIME/macros directory. " " 2. Copy "matchit.txt" into a "doc" directory (e.g. $HOME/.vim/doc). " " 3. Copy "matchit.vim" into a "plugin" directory (e.g. $HOME/.vim/plugin). " " 4. Ensure this file (ftplugin/ruby.vim) is installed. " " 5. Ensure you have this line in your $HOME/.vimrc: " filetype plugin on " " 6. Restart Vim and create the matchit documentation: " " :helptags ~/.vim/doc " " Now you can do ":help matchit", and you should be able to use "%" on Ruby " keywords. Try ":echo b:match_words" to be sure. " " Thanks to Mark J. Reed for the instructions. See ":help vimrc" for the " locations of plugin directories, etc., as there are several options, and it " differs on Windows. Email gsinclair@soyabean.com.au if you need help. " " vim: nowrap sw=2 sts=2 ts=8:
Save
cmd:
run