diff --git a/runtime/ftplugin/ruby.vim b/runtime/ftplugin/ruby.vim
index 66cfcc7..630d260 100644
--- a/runtime/ftplugin/ruby.vim
+++ b/runtime/ftplugin/ruby.vim
@@ -4,10 +4,10 @@
 " Info:			$Id$
 " URL:			http://vim-ruby.rubyforge.org
 " Anon CVS:		See above site
-" Release Coordinator:	Doug Kearns <dougkearns@gmail.com>
+" Release Coordinator:  Doug Kearns <dougkearns@gmail.com>
 " ----------------------------------------------------------------------------
 "
-" Original matchit support thanks to Ned Konz.	See his ftplugin/ruby.vim at
+" Original matchit support thanks to Ned Konz.  See his ftplugin/ruby.vim at
 "   http://bike-nomad.com/vim/ruby.vim.
 " ----------------------------------------------------------------------------
 
@@ -20,31 +20,37 @@
 let s:cpo_save = &cpo
 set cpo&vim
 
+if has("gui_running") && !has("gui_win32")
+  setlocal keywordprg=ri\ -T
+else
+  setlocal keywordprg=ri
+endif
+
 " 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_words =
+	\ '\%(' .
+	\     '\%(\%(\.\|\:\:\)\s*\|\:\)\@<!\<\%(class\|module\|begin\|def\|case\|for\|do\)\>' .
+	\   '\|' .
+	\     '\%(\%(^\|\.\.\.\=\|[{\:\,;([<>~\*/%&^|+-]\|\%(\<[_[\:lower\:]][_[\:alnum\:]]*\)\@<![!=?]\)\s*\)\@<=\%(if\|unless\|while\|until\)\>' .
+	\ '\)' .
+	\ ':' .
+	\ '\%(' .
+	\     '\%(\%(\.\|\:\:\)\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\\)\\>'"
+	\ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" .
+	\ "\\<ruby\\%(String\\|StringDelimiter\\|ASCIICode\\|Interpolation\\|" .
+	\ "NoInterpolation\\|Escape\\|Comment\\|Documentation\\)\\>'"
 
 endif
 
@@ -54,10 +60,16 @@
 setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.rb','')
 setlocal suffixesadd=.rb
 
-if version >= 700
+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
 
@@ -65,7 +77,10 @@
 setlocal commentstring=#\ %s
 
 if !exists("s:rubypath")
-  if executable("ruby")
+  if has("ruby") && has("win32")
+    ruby VIM::command( 'let s:rubypath = "%s"' % ($: + begin; require %q{rubygems}; Gem.all_load_paths.sort.uniq; rescue LoadError; []; end).join(%q{,}) )
+    let s:rubypath = '.,' . substitute(s:rubypath, '\%(^\|,\)\.\%(,\|$\)', ',,', '')
+  elseif executable("ruby")
     let s:code = "print ($: + begin; require %q{rubygems}; Gem.all_load_paths.sort.uniq; rescue LoadError; []; end).join(%q{,})"
     if &shellxquote == "'"
       let s:rubypath = system('ruby -e "' . s:code . '"')
@@ -84,21 +99,78 @@
 
 if has("gui_win32") && !exists("b:browsefilter")
   let b:browsefilter = "Ruby Source Files (*.rb)\t*.rb\n" .
-		     \ "All Files (*.*)\t*.*\n"
+                     \ "All Files (*.*)\t*.*\n"
 endif
 
-let b:undo_ftplugin = "setl fo< inc< inex< sua< def< com< cms< path< "
+let b:undo_ftplugin = "setl fo< inc< inex< sua< def< com< cms< path< 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"
 
 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 simple -T \"".str.'"'),'\n$','','')
+    if res =~ '^Nothing known about' || res =~ '^Bad argument:'
+      return ''
+    endif
+    return res
+  else
+    return ""
+  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
+"         http://www.vim.org/scripts/script.php?script_id=39
 "
 "    It is also packaged with Vim, in the $VIMRUNTIME/macros directory.
 "
@@ -109,16 +181,16 @@
 " 4. Ensure this file (ftplugin/ruby.vim) is installed.
 "
 " 5. Ensure you have this line in your $HOME/.vimrc:
-"	  filetype plugin on
+"         filetype plugin on
 "
 " 6. Restart Vim and create the matchit documentation:
 "
-"	  :helptags ~/.vim/doc
+"         :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.
+"    keywords.  Try ":echo b:match_words" to be sure.
 "
-" Thanks to Mark J. Reed for the instructions.	See ":help vimrc" for the
+" 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.
 "
