summaryrefslogtreecommitdiff
path: root/runtime/ftplugin
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2005-09-16 21:55:43 +0000
committerBram Moolenaar <Bram@vim.org>2005-09-16 21:55:43 +0000
commit60a795aad6ade281146a5343b416f21825af5364 (patch)
treef38bf3d5e39bd321b2ff7b4d9bdf0367c8bec00b /runtime/ftplugin
parent6b730e111c329caccbb16f08c5b6bbc41d3b5690 (diff)
downloadvim-git-60a795aad6ade281146a5343b416f21825af5364.tar.gz
updated for version 7.0148v7.0148
Diffstat (limited to 'runtime/ftplugin')
-rw-r--r--runtime/ftplugin/ruby.vim125
1 files changed, 118 insertions, 7 deletions
diff --git a/runtime/ftplugin/ruby.vim b/runtime/ftplugin/ruby.vim
index e21afeee5..b262258d8 100644
--- a/runtime/ftplugin/ruby.vim
+++ b/runtime/ftplugin/ruby.vim
@@ -1,14 +1,125 @@
" Vim filetype plugin
-" Language: Ruby
-" Maintainer: Gavin Sinclair <gsinclair@soyabean.com.au>
-" Last Change: 2002/08/12
-" URL: www.soyabean.com.au/gavin/vim/index.html
+" Language: Ruby
+" Maintainer: Gavin Sinclair <gsinclair at soyabean.com.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.
+" ----------------------------------------------------------------------------
+"
+" Original matchit support thanks to Ned Konz. See his ftplugin/ruby.vim at
+" http://bike-nomad.com/vim/ruby.vim.
+" ----------------------------------------------------------------------------
" Only do this when not done yet for this buffer
if (exists("b:did_ftplugin"))
- finish
+ finish
endif
let b:did_ftplugin = 1
-" There are no known setting particularly appropriate for Ruby. Please
-" contact the maintainer if you think of some.
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Matchit support
+if exists("loaded_matchit") && !exists("b:match_words")
+ let b:match_ignorecase = 0
+
+ " TODO: improve optional do loops
+ let b:match_words =
+ \ '\%(' .
+ \ '\%(\%(\.\|\:\:\)\s*\)\@<!\<\%(class\|module\|begin\|def\|case\|for\|do\)\>' .
+ \ '\|' .
+ \ '\%(\%(^\|\.\.\.\=\|[\,;=([<>~\*/%!&^|+-]\)\s*\)\@<=\%(if\|unless\|until\|while\)\>' .
+ \ '\)' .
+ \ ':' .
+ \ '\%(' .
+ \ '\%(\%(\.\|\:\:\)\s*\)\@<!\<\%(else\|elsif\|ensure\|when\)\>' .
+ \ '\|' .
+ \ '\%(\%(^\|;\)\s*\)\@<=\<rescue\>' .
+ \ '\)' .
+ \ ':' .
+ \ '\%(\%(\.\|\:\:\)\s*\)\@<!\<end\>'
+
+ let b:match_skip =
+ \ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" .
+ \ "\\<ruby\\%(String\\|StringDelimiter\\|ASCIICode\\|Interpolation\\|" .
+ \ "NoInterpolation\\|Escape\\|Comment\\|Documentation\\)\\>'"
+
+endif
+
+setlocal formatoptions-=t formatoptions+=croql
+
+setlocal include=^\\s*\\<\\(load\\\|\w*require\\)\\>
+setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.rb','')
+setlocal suffixesadd=.rb
+
+" TODO:
+"setlocal define=^\\s*def
+
+setlocal comments=:#
+setlocal commentstring=#\ %s
+
+if !exists("s:rubypath")
+ if executable("ruby")
+ if &shellxquote == "'"
+ let s:rubypath = system('ruby -e "puts (begin; require %q{rubygems}; Gem.all_load_paths; rescue LoadError; []; end + $:).join(%q{,})"')
+ else
+ let s:rubypath = system("ruby -e 'puts (begin; require %q{rubygems}; Gem.all_load_paths; rescue LoadError; []; end + $:).join(%q{,})'")
+ endif
+ let s:rubypath = substitute(s:rubypath,',.$',',,','')
+ else
+ " If we can't call ruby to get its path, just default to using the
+ " current directory and the directory of the current file.
+ let s:rubypath = ".,,"
+ endif
+endif
+
+let &l:path = s:rubypath
+
+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< "
+ \ "| unlet! b:browsefilter b:match_ignorecase b:match_words b:match_skip"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+"
+" 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 ff=unix: