diff --git a/runtime/ftplugin/sql.vim b/runtime/ftplugin/sql.vim
index efccebd..d2e6ee5 100644
--- a/runtime/ftplugin/sql.vim
+++ b/runtime/ftplugin/sql.vim
@@ -1,10 +1,13 @@
 " SQL filetype plugin file
 " Language:    SQL (Common for Oracle, Microsoft SQL Server, Sybase)
-" Version:     0.08
+" Version:     1.0
 " Maintainer:  David Fishburn <fishburn at ianywhere dot com>
-" Last Change: Mon Feb 21 2005 7:27:36 AM
+" Last Change: Wed Jan 11 2006 10:04:55 AM
 " Download:    http://vim.sourceforge.net/script.php?script_id=454
 
+" For more details please use:
+"        :h sql.txt
+"
 " 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:
@@ -12,6 +15,22 @@
 "        .vim/after/ftplugin/sql.vim     (Unix)
 " to override and add any of your own settings.
 
+
+" This file also creates a command, SQLSetType, which allows you to change
+" SQL dialects on the fly.  For example, if I open an Oracle SQL file, it
+" is color highlighted appropriately.  If I open an Informix SQL file, it
+" will still be highlighted according to Oracles settings.  By running:
+"     :SQLSetType sqlinformix
+"
+" All files called sqlinformix.vim will be loaded from the indent and syntax
+" directories.  This allows you to easily flip SQL dialects on a per file
+" basis.  NOTE: you can also use completion:
+"     :SQLSetType <tab>
+"
+" To change the default dialect, add the following to your vimrc:
+"    let g:sql_type_default = 'sqlanywhere'
+
+
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
   finish
@@ -20,8 +39,146 @@
 let s:save_cpo = &cpo
 set cpo=
 
+" Functions/Commands to allow the user to change SQL syntax dialects
+" through the use of :SQLSetType <tab> for completion.
+" This works with both Vim 6 and 7.
+
+if !exists("*SQL_SetType")
+    " NOTE: You cannot use function! since this file can be 
+    " sourced from within this function.  That will result in
+    " an error reported by Vim.
+    function SQL_GetList(ArgLead, CmdLine, CursorPos)
+
+        if !exists('s:sql_list')
+            " Grab a list of files that contain "sql" in their names
+            let list_indent   = globpath(&runtimepath, 'indent/*sql*')
+            let list_syntax   = globpath(&runtimepath, 'syntax/*sql*')
+            let list_ftplugin = globpath(&runtimepath, 'ftplugin/*sql*')
+
+            let sqls = "\n".list_indent."\n".list_syntax."\n".list_ftplugin."\n"
+
+            " Strip out everything (path info) but the filename
+            " Regex
+            "    From between two newline characters
+            "    Non-greedily grab all characters
+            "    Followed by a valid filename \w\+\.\w\+ (sql.vim)
+            "    Followed by a newline, but do not include the newline
+            "
+            "    Replace it with just the filename (get rid of PATH)
+            "
+            "    Recursively, since there are many filenames that contain
+            "    the word SQL in the indent, syntax and ftplugin directory
+            let sqls = substitute( sqls, 
+                        \ '[\n]\%(.\{-}\)\(\w\+\.\w\+\)\n\@=', 
+                        \ '\1\n', 
+                        \ 'g'
+                        \ )
+
+            " Remove duplicates, since sqlanywhere.vim can exist in the
+            " sytax, indent and ftplugin directory, yet we only want
+            " to display the option once
+            let index = match(sqls, '.\{-}\ze\n')
+            while index > -1
+                " Get the first filename
+                let file = matchstr(sqls, '.\{-}\ze\n', index)
+                " Recursively replace any *other* occurrence of that
+                " filename with nothing (ie remove it)
+                let sqls = substitute(sqls, '\%>'.(index+strlen(file)).'c\<'.file.'\>\n', '', 'g')
+                " Move on to the next filename
+                let index = match(sqls, '.\{-}\ze\n', (index+strlen(file)+1))
+            endwhile
+
+            " Sort the list if using version 7
+            if v:version >= 700
+                let mylist = split(sqls, "\n")
+                let mylist = sort(mylist)
+                let sqls   = join(mylist, "\n")
+            endif
+
+            let s:sql_list = sqls
+        endif
+
+        return s:sql_list
+
+    endfunction
+
+    function SQL_SetType(name)
+
+        " User has decided to override default SQL scripts and
+        " specify a vendor specific version 
+        " (ie Oracle, Informix, SQL Anywhere, ...)
+        " So check for an remove any settings that prevent the
+        " scripts from being executed, and then source the 
+        " appropriate Vim scripts.
+        if exists("b:did_ftplugin")
+            unlet b:did_ftplugin
+        endif
+        if exists("b:current_syntax")
+            " echomsg 'SQLSetType - clearing syntax'
+            syntax clear
+        endif
+        if exists("b:did_indent")
+            " echomsg 'SQLSetType - clearing indent'
+            unlet b:did_indent
+            " Set these values to their defaults
+            setlocal indentkeys&
+            setlocal indentexpr&
+        endif
+
+        " Ensure the name is in the correct format
+        let new_sql_type = substitute(a:name, 
+                    \ '\s*\([^\.]\+\)\(\.\w\+\)\?', '\L\1', '')
+
+        " Do not specify a buffer local variable if it is 
+        " the default value
+        if new_sql_type == 'sql'
+          let new_sql_type = 'sqloracle'
+        endif
+        let b:sql_type_override = new_sql_type
+
+        " Vim will automatically source the correct files if we
+        " change the filetype.  You cannot do this with setfiletype
+        " since that command will only execute if a filetype has
+        " not already been set.  In this case we want to override
+        " the existing filetype.
+        let &filetype = 'sql'
+    endfunction
+    command! -nargs=* -complete=custom,SQL_GetList SQLSetType :call SQL_SetType(<q-args>)
+
+endif
+
+if exists("b:sql_type_override")
+    " echo 'sourcing buffer ftplugin/'.b:sql_type_override.'.vim'
+    if globpath(&runtimepath, 'ftplugin/'.b:sql_type_override.'.vim') != ''
+        exec 'runtime ftplugin/'.b:sql_type_override.'.vim'
+    " else
+    "     echomsg 'ftplugin/'.b:sql_type_override.' not exist, using default'
+    endif
+elseif exists("g:sql_type_default")
+    " echo 'sourcing global ftplugin/'.g:sql_type_default.'.vim'
+    if globpath(&runtimepath, 'ftplugin/'.g:sql_type_default.'.vim') != ''
+        exec 'runtime ftplugin/'.g:sql_type_default.'.vim'
+    " else
+    "     echomsg 'ftplugin/'.g:sql_type_default.'.vim not exist, using default'
+    endif
+endif
+
+" If the above runtime command succeeded, do not load the default settings
+if exists("b:did_ftplugin")
+  finish
+endif
+
+let b:undo_ftplugin = "setl comments<"
+
 " Don't load another plugin for this buffer
-let b:did_ftplugin = 1
+let b:did_ftplugin     = 1
+let b:current_ftplugin = 'sql'
+
+" Win32 can filter files in the browse dialog
+if has("gui_win32") && !exists("b:browsefilter")
+    let b:browsefilter = "SQL Files (*.sql)\t*.sql\n" .
+	  \ "All Files (*.*)\t*.*\n"
+endif
 
 " Some standard expressions for use with the matchit strings
 let s:notend = '\%(\<end\s\+\)\@<!'
@@ -112,69 +269,78 @@
 " [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*'
+let &l:define = '\c\<\(VARIABLE\|DECLARE\|IN\|OUT\|INOUT\)\>'
 
 
 " 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>
+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>
 
 
+" By default only look for CREATE statements, but allow
+" the user to override
+if !exists('g:ftplugin_sql_statements')
+    let g:ftplugin_sql_statements = 'create'
+endif
+
 " 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.
+" Note, you cannot use \?, since these patterns can be used to search
+" backwards, you must use \{,1}
 if !exists('g:ftplugin_sql_objects')
     let g:ftplugin_sql_objects = 'function,procedure,event,' .
-                \ '\(existing\\|global\s\+temporary\s\+\)\?table,trigger' .
+                \ '\\(existing\\\\|global\\s\\+temporary\\s\\+\\)\\\{,1}' .
+                \ 'table,trigger' .
                 \ ',schema,service,publication,database,datatype,domain' .
                 \ ',index,subscription,synchronization,view,variable'
 endif
 
+" Replace all ,'s with bars, except ones with numbers after them.
+" This will most likely be a \{,1} string.
 let s:ftplugin_sql_objects = 
-            \ '\c^\s*' .
-            \ '\(create\s\+\(or\s\+replace\s\+\)\?\)\?' .
-            \ '\<\(' .
-            \ substitute(g:ftplugin_sql_objects, ',', '\\\\|', 'g') .
-            \ '\)\>' 
+            \ '\\c^\\s*' .
+            \ '\\(\\(' .
+            \ substitute(g:ftplugin_sql_statements, ',\d\@!', '\\\\\\|', 'g') .
+            \ '\\)\\s\\+\\(or\\s\\+replace\\\s\+\\)\\{,1}\\)\\{,1}' .
+            \ '\\<\\(' .
+            \ substitute(g:ftplugin_sql_objects, ',\d\@!', '\\\\\\|', '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
+" Unfortunately, this will add a entry to the search history
 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 = '\(--\\|\/\/\\|\*\\|\/\*\\|\*\/\)'
+let b:comment_leader = '\\(--\\\|\\/\\/\\\|\\*\\\|\\/\\*\\\|\\*\\/\\)'
 " Find the start of the next comment
-let b:comment_start  = '^\(\s*'.b:comment_leader.'.*\n\)\@<!'.
-            \ '\(\s*'.b:comment_leader.'\)'
+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.'\)\@!'
+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\)\@<!'.
+            \ '^\\(\\s*'.b:comment_leader.'.*\\n\\)\\@<!'.
             \ "', 'W')"
 let b:comment_skip_back  = "call search('".
-            \ '^\(\s*'.b:comment_leader.'.*\n\)\@<!'.
+            \ '^\\(\\s*'.b:comment_leader.'.*\\n\\)\\@<!'.
             \ "', 'bW')"
 " Move to the start and end of comments
 exec 'nnoremap <silent><buffer> ]" /'.b:comment_start.'<CR>'
@@ -187,11 +353,29 @@
 "    *
 "    */
 " or
-"   // 
-" or
 "   --
+" or
+"   // 
 setlocal comments=s1:/*,mb:*,ex:*/,:--,://
 
+" Set completion with CTRL-X CTRL-O to autoloaded function.
+if exists('&omnifunc')
+    " This is used by the sqlcomplete.vim plugin
+    " Source it for it's global functions
+    runtime autoload/syntaxcomplete.vim 
+
+    setlocal omnifunc=sqlcomplete#Complete
+    " Prevent the intellisense plugin from loading
+    let b:sql_vis = 1
+    imap <buffer> <c-space>t <C-O>:let b:sql_compl_type='table'<CR><C-X><C-O>
+    imap <buffer> <c-space>p <C-O>:let b:sql_compl_type='procedure'<CR><C-X><C-O>
+    imap <buffer> <c-space>v <C-O>:let b:sql_compl_type='view'<CR><C-X><C-O>
+    imap <buffer> <c-space>c <C-O>:let b:sql_compl_type='column'<CR><C-X><C-O>
+    imap <buffer> <c-space>f <C-O>:let b:sql_compl_type='function'<CR><C-X><C-O>
+    imap <buffer> <c-space>o <C-O>:let b:sql_compl_type='option'<CR><C-X><C-O>
+    imap <buffer> <c-right> <C-O>:let b:sql_compl_type='column'<CR><C-X><C-O>
+endif
+
 let &cpo = s:save_cpo
 
 " vim:sw=4:ff=unix:
