diff --git a/runtime/ftplugin/sql.vim b/runtime/ftplugin/sql.vim
index afbdf55..efccebd 100644
--- a/runtime/ftplugin/sql.vim
+++ b/runtime/ftplugin/sql.vim
@@ -1,35 +1,198 @@
-" Vim filetype plugin file
-" Language:	SQL (Common for Oracle, Microsoft SQL Server, Sybase)
-" Version:	0.02
-" Maintainer:	David Fishburn <fishburn@ianywhere.com>
-" Last Change:	Tue May 27 2003 09:33:31
+" SQL filetype plugin file
+" Language:    SQL (Common for Oracle, Microsoft SQL Server, Sybase)
+" Version:     0.08
+" Maintainer:  David Fishburn <fishburn at ianywhere dot com>
+" Last Change: Mon Feb 21 2005 7:27:36 AM
+" Download:    http://vim.sourceforge.net/script.php?script_id=454
 
 " This file should only contain values that are common to all SQL languages
 " Oracle, Microsoft SQL Server, Sybase ASA/ASE, MySQL, and so on
 " If additional features are required create:
-" vimfiles/after/ftplugin/sql.vim
-" to override and add any of your own settings
+"        vimfiles/after/ftplugin/sql.vim (Windows)
+"        .vim/after/ftplugin/sql.vim     (Unix)
+" to override and add any of your own settings.
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
   finish
 endif
 
+let s:save_cpo = &cpo
+set cpo=
+
 " Don't load another plugin for this buffer
 let b:did_ftplugin = 1
 
+" Some standard expressions for use with the matchit strings
+let s:notend = '\%(\<end\s\+\)\@<!'
+let s:when_no_matched_or_others = '\%(\<when\>\%(\s\+\%(\%(\<not\>\s\+\)\?<matched\>\)\|\<others\>\)\@!\)'
+let s:or_replace = '\%(or\s\+replace\s\+\)\?'
+
 " Define patterns for the matchit macro
 if !exists("b:match_words")
     " SQL is generally case insensitive
     let b:match_ignorecase = 1
+
+    " Handle the following:
+    " if
+    " elseif | elsif
+    " else [if]
+    " end if
+    "
+    " [while condition] loop
+    "     leave
+    "     break
+    "     continue
+    "     exit
+    " end loop
+    "
+    " for
+    "     leave
+    "     break
+    "     continue
+    "     exit
+    " end loop
+    "
+    " do
+    "     statements
+    " doend
+    "
+    " case
+    " when 
+    " when
+    " default
+    " end case
+    "
+    " merge
+    " when not matched
+    " when matched
+    "
+    " EXCEPTION
+    " WHEN column_not_found THEN
+    " WHEN OTHERS THEN
+    "
+    " create[ or replace] procedure|function|event
+
     let b:match_words =
-		\ '\<begin\>:\<end\>\(;\)\?$,'.
-		\ '\<if\>:\<elsif\>:\<elseif\>:\<else\>:'.
-		\ '\%(\<end\s\+\)\@<!' . '\<if\>:\<end\s\+if\>,'.
-		\ '\<loop\>:\<break\>:\<continue\>:'.
-		\ '\%(\<end\s\+\)\@<!' . '\<loop\>:\<end\s\+loop\>,'.
-		\ '\<for\>:\<break\>:\<continue\>:'.
-		\ '\%(\<end\s\+\)\@<!' . '\<for\>:\<end\s\+for\>,'.
-		\ '\<case\>:\<when\>:\<default\>:'.
-		\ '\%(\<end\s\+\)\@<!' . '\<case\>:\<end\s\+case\>'
+		\ '\<begin\>:\<end\>\W*$,'.
+		\
+                \ s:notend . '\<if\>:'.
+                \ '\<elsif\>\|\<elseif\>\|\<else\>:'.
+                \ '\<end\s\+if\>,'.
+                \
+                \ '\<do\>\|'.
+                \ '\<while\>\|'.
+                \ '\%(' . s:notend . '\<loop\>\)\|'.
+                \ '\%(' . s:notend . '\<for\>\):'.
+                \ '\<exit\>\|\<leave\>\|\<break\>\|\<continue\>:'.
+                \ '\%(\<end\s\+\%(for\|loop\>\)\)\|\<doend\>,'.
+                \
+                \ '\%('. s:notend . '\<case\>\):'.
+                \ '\%('.s:when_no_matched_or_others.'\):'.
+                \ '\%(\<when\s\+others\>\|\<end\s\+case\>\),' .
+                \
+                \ '\<merge\>:' .
+                \ '\<when\s\+not\s\+matched\>:' .
+                \ '\<when\s\+matched\>,' .
+                \
+                \ '\%(\<create\s\+' . s:or_replace . '\)\?'.
+                \ '\%(function\|procedure\|event\):'.
+                \ '\<returns\?\>'
+                " \ '\<begin\>\|\<returns\?\>:'.
+                " \ '\<end\>\(;\)\?\s*$'
+                " \ '\<exception\>:'.s:when_no_matched_or_others.
+                " \ ':\<when\s\+others\>,'.
+		"
+                " \ '\%(\<exception\>\|\%('. s:notend . '\<case\>\)\):'.
+                " \ '\%(\<default\>\|'.s:when_no_matched_or_others.'\):'.
+                " \ '\%(\%(\<when\s\+others\>\)\|\<end\s\+case\>\),' .
 endif
+
+" Define how to find the macro definition of a variable using the various
+" [d, [D, [_CTRL_D and so on features
+" Match these values ignoring case
+" ie  DECLARE varname INTEGER
+let &l:define = '\c\(DECLARE\|IN\|OUT\|INOUT\)\s*'
+
+
+" Mappings to move to the next BEGIN ... END block
+" \W - no characters or digits
+nmap <buffer> <silent> ]] :call search('\c^\s*begin\>', 'W' )<CR>
+nmap <buffer> <silent> [[ :call search('\c^\s*begin\>', 'bW' )<CR>
+nmap <buffer> <silent> ][ :call search('\c^\s*end\W*$', 'W' )<CR>
+nmap <buffer> <silent> [] :call search('\c^\s*end\W*$', 'bW' )<CR>
+vmap <buffer> <silent> ]] /\c^\s*begin\><CR>
+vmap <buffer> <silent> [[ ?\c^\s*begin<CR>
+vmap <buffer> <silent> ][ /\c^\s*end\W*$<CR>
+vmap <buffer> <silent> [] ?\c^\s*end\W*$<CR>
+
+
+" Predefined SQL objects what are used by the below mappings using
+" the ]} style maps.
+" This global variable allows the users to override it's value
+" from within their vimrc.
+if !exists('g:ftplugin_sql_objects')
+    let g:ftplugin_sql_objects = 'function,procedure,event,' .
+                \ '\(existing\\|global\s\+temporary\s\+\)\?table,trigger' .
+                \ ',schema,service,publication,database,datatype,domain' .
+                \ ',index,subscription,synchronization,view,variable'
+endif
+
+let s:ftplugin_sql_objects = 
+            \ '\c^\s*' .
+            \ '\(create\s\+\(or\s\+replace\s\+\)\?\)\?' .
+            \ '\<\(' .
+            \ substitute(g:ftplugin_sql_objects, ',', '\\\\|', 'g') .
+            \ '\)\>' 
+
+" Mappings to move to the next CREATE ... block
+" map <buffer> <silent> ]} :call search(g:ftplugin_sql_objects, 'W' )<CR>
+" nmap <buffer> <silent> [{ :call search('\c^\s*\(create\s\+\(or\s\+replace\s\+\)\?\)\?\<\(function\\|procedure\\|event\\|table\\|trigger\\|schema\)\>', 'bW' )<CR>
+" exec 'nmap <buffer> <silent> ]} /'.s:ftplugin_sql_objects.'<CR>'
+exec "nmap <buffer> <silent> ]} :call search('".s:ftplugin_sql_objects."', 'W')<CR>"
+exec "nmap <buffer> <silent> [{ :call search('".s:ftplugin_sql_objects."', 'bW')<CR>"
+" Could not figure out how to use a :call search() string in visual mode
+" without it ending visual mode
+exec 'vmap <buffer> <silent> ]} /'.s:ftplugin_sql_objects.'<CR>'
+exec 'vmap <buffer> <silent> [{ ?'.s:ftplugin_sql_objects.'<CR>'
+" vmap <buffer> <silent> ]} /\c^\s*\(create\s\+\(or\s\+replace\s\+\)\?\)\?\<\(function\\|procedure\\|event\\|table\\|trigger\\|schema\)\><CR>
+" vmap <buffer> <silent> [{ ?\c^\s*\(create\s\+\(or\s\+replace\s\+\)\?\)\?\<\(function\\|procedure\\|event\\|table\\|trigger\\|schema\)\><CR>
+
+" Mappings to move to the next COMMENT
+"
+" Had to double the \ for the \| separator since this has a special
+" meaning on maps
+let b:comment_leader = '\(--\\|\/\/\\|\*\\|\/\*\\|\*\/\)'
+" Find the start of the next comment
+let b:comment_start  = '^\(\s*'.b:comment_leader.'.*\n\)\@<!'.
+            \ '\(\s*'.b:comment_leader.'\)'
+" Find the end of the previous comment
+let b:comment_end = '\(^\s*'.b:comment_leader.'.*\n\)'.
+            \ '\(^\s*'.b:comment_leader.'\)\@!'
+" Skip over the comment
+let b:comment_jump_over  = "call search('".
+            \ '^\(\s*'.b:comment_leader.'.*\n\)\@<!'.
+            \ "', 'W')"
+let b:comment_skip_back  = "call search('".
+            \ '^\(\s*'.b:comment_leader.'.*\n\)\@<!'.
+            \ "', 'bW')"
+" Move to the start and end of comments
+exec 'nnoremap <silent><buffer> ]" /'.b:comment_start.'<CR>'
+exec 'nnoremap <silent><buffer> [" /'.b:comment_end.'<CR>'
+exec 'vnoremap <silent><buffer> ]" /'.b:comment_start.'<CR>'
+exec 'vnoremap <silent><buffer> [" /'.b:comment_end.'<CR>'
+
+" Comments can be of the form:
+"   /*
+"    *
+"    */
+" or
+"   // 
+" or
+"   --
+setlocal comments=s1:/*,mb:*,ex:*/,:--,://
+
+let &cpo = s:save_cpo
+
+" vim:sw=4:ff=unix:
+
