updated for version 7.0e06
diff --git a/runtime/autoload/rubycomplete.vim b/runtime/autoload/rubycomplete.vim
index 0a745b9..d1c8a26 100644
--- a/runtime/autoload/rubycomplete.vim
+++ b/runtime/autoload/rubycomplete.vim
@@ -10,6 +10,7 @@
 " Ruby IRB/Complete author: Keiju ISHITSUKA(keiju@ishitsuka.com)
 " ----------------------------------------------------------------------------
 
+" {{{ requirement checks
 if !has('ruby')
     echohl ErrorMsg
     echo "Error: Required vim compiled with +ruby"
@@ -23,8 +24,17 @@
     echohl None
     finish
 endif
+" }}} requirement checks
 
+if !exists("g:rubycomplete_rails")
+    let g:rubycomplete_rails = 0
+endif
 
+if !exists("g:rubycomplete_classes_in_global")
+    let g:rubycomplete_classes_in_global = 0
+endif
+
+" {{{ vim-side support functions
 function! GetBufferRubyModule(name)
     let [snum,enum] = GetBufferRubyEntity(a:name, "module")
     return snum . '..' . enum
@@ -103,6 +113,8 @@
     return ''
 endfunction
 
+"}}} vim-side support functions
+
 function! rubycomplete#Complete(findstart, base)
      "findstart = 1 when we need to get the text length
     if a:findstart
@@ -133,6 +145,7 @@
 
 function! s:DefRuby()
 ruby << RUBYEOF
+# {{{ ruby completion
 RailsWords = [
       "has_many", "has_one",
       "belongs_to",
@@ -164,11 +177,11 @@
 
 
 def load_requires
-  @buf = VIM::Buffer.current
-  enum = @buf.line_number
+  buf = VIM::Buffer.current
+  enum = buf.line_number
   nums = Range.new( 1, enum )
   nums.each do |x|
-    ln = @buf[x]
+    ln = buf[x]
     begin
       eval( "require %s" % $1 ) if /.*require\s*(.*)$/.match( ln )
     rescue Exception
@@ -198,7 +211,7 @@
 end
 
 def get_buffer_entity(name, vimfun)
-  @buf = VIM::Buffer.current
+  buf = VIM::Buffer.current
   nums = eval( VIM::evaluate( vimfun % name ) )
   return nil if nums == nil 
   return nil if nums.min == nums.max && nums.min == 0
@@ -207,7 +220,7 @@
   classdef = ""
   nums.each do |x|
     if x != cur_line
-      ln = @buf[x] 
+      ln = buf[x] 
       classdef += "%s\n" % ln
     end
   end
@@ -215,6 +228,25 @@
   return classdef
 end
 
+def get_buffer_classes()
+  # this will be a little expensive.
+  allow_aggressive_load = VIM::evaluate('g:rubycomplete_classes_in_global')
+  return [] if allow_aggressive_load != '1'
+
+  buf = VIM::Buffer.current
+  eob = buf.length
+  ret = []
+  rg = 1..eob
+
+  rg.each do |x|
+    if /^\s*class\s*([A-Za-z0-9_-]*)(\s*<\s*([A-Za-z0-9_:-]*))?\s*/.match( buf[x] )
+      ret.push $1  
+    end
+  end
+
+  return ret
+end
+
 def load_rails()
   allow_rails = VIM::evaluate('g:rubycomplete_rails')
   return if allow_rails != '1'
@@ -233,13 +265,19 @@
         break
     end
   end
+  
+  return if pok == nil
   bootfile = pok + "/boot.rb"
-  require bootfile if pok != nil && File.exists?( bootfile )
+  if File.exists?( bootfile )
+    require bootfile 
+    VIM::evaluate('let g:rubycomplete_rails_loaded = 1') 
+  end
 end
 
 def get_rails_helpers
   allow_rails = VIM::evaluate('g:rubycomplete_rails')
-  return [] if allow_rails != '1'
+  rails_loaded = VIM::evaluate('g:rubycomplete_rails_loaded')
+  return [] if allow_rails != '1' || rails_loaded != '1'
   return RailsWords 
 end
 
@@ -404,14 +442,21 @@
         receiver = $1
         message = input
         load_buffer_class( receiver )
-        candidates = eval( "#{receiver}.instance_methods" )
-        candidates += get_rails_helpers
-        select_message(receiver, message, candidates)
+        begin
+          candidates = eval( "#{receiver}.instance_methods" )
+          candidates += get_rails_helpers
+          select_message(receiver, message, candidates)
+        rescue Exception
+          found = nil
+        end
       end
     end
     
     if inclass == nil || found == nil
       candidates = eval("self.class.constants")
+      candidates += get_buffer_classes
+      candidates.uniq!
+      candidates.sort!
       (candidates|ReservedWords).grep(/^#{Regexp.quote(input)}/)
     end
   end
@@ -459,10 +504,12 @@
   candidates.uniq!
   candidates.sort!
 end
+
+# }}} ruby completion
 RUBYEOF
 endfunction
 
+let g:rubycomplete_rails_loaded = 0
 
-let g:rubycomplete_rails = 0
 call s:DefRuby()
-" vim: set et ts=4:
+" vim:tw=78:sw=4:ts=8:ft=vim:norl:
diff --git a/runtime/autoload/sqlcomplete.vim b/runtime/autoload/sqlcomplete.vim
index b0415bc..ec158f6 100644
--- a/runtime/autoload/sqlcomplete.vim
+++ b/runtime/autoload/sqlcomplete.vim
@@ -1,8 +1,8 @@
 " Vim completion script
 " Language:    SQL
 " Maintainer:  David Fishburn <fishburn@ianywhere.com>
-" Version:     2.0
-" Last Change: Mon Apr 03 2006 10:21:36 PM
+" Version:     3.0
+" Last Change: Thu Apr 20 2006 8:47:12 PM
 
 " Set completion with CTRL-X CTRL-O to autoloaded function.
 " This check is in place in case this script is
@@ -18,7 +18,7 @@
 if exists('g:loaded_sql_completion')
     finish 
 endif
-let g:loaded_sql_completion = 1
+let g:loaded_sql_completion = 30
 
 " Maintains filename of dictionary
 let s:sql_file_table        = ""
@@ -60,6 +60,24 @@
                 \ 'sqlStatement'
                 \ ]
 endif
+" Set ignorecase to the ftplugin standard
+if !exists('g:omni_sql_ignorecase')
+    let g:omni_sql_ignorecase = &ignorecase
+endif
+" During table completion, should the table list also
+" include the owner name
+if !exists('g:omni_sql_include_owner')
+    let g:omni_sql_include_owner = 0
+    if exists('g:loaded_dbext')
+        if g:loaded_dbext >= 300
+            " New to dbext 3.00, by default the table lists include the owner
+            " name of the table.  This is used when determining how much of
+            " whatever has been typed should be replaced as part of the 
+            " code replacement.
+            let g:omni_sql_include_owner = 1
+        endif
+    endif
+endif
 
 " This function is used for the 'omnifunc' option.
 function! sqlcomplete#Complete(findstart, base)
@@ -81,15 +99,27 @@
         while start > 0
             if line[start - 1] =~ '\w'
                 let start -= 1
-            elseif line[start - 1] =~ '\.' && compl_type =~ 'column'
-                " If the completion type is column then assume we are looking
-                " for column completion column_type can be either 
-                " 'column' or 'column_csv'
-                if lastword == -1 && compl_type == 'column'
-                    " Do not replace the table name prefix or alias
-                    " if completing only a single column name
+            elseif line[start - 1] =~ '\.' && 
+                        \ compl_type =~ 'column\|table\|view\|procedure'
+                " If lastword has already been set for column completion
+                " break from the loop, since we do not also want to pickup
+                " a table name if it was also supplied.
+                if lastword != -1 && compl_type =~ 'column'
+                    break
+                endif
+                " Assume we are looking for column completion
+                " column_type can be either 'column' or 'column_csv'
+                if lastword == -1 && compl_type =~ 'column'
                     let lastword = start
                 endif
+                " If omni_sql_include_owner = 0, do not include the table
+                " name as part of the substitution, so break here
+                if lastword == -1 && 
+                            \ compl_type =~ 'table\|view\|procedure' && 
+                            \ g:omni_sql_include_owner == 0
+                    let lastword = start
+                    break
+                endif
                 let start -= 1
             else
                 break
@@ -144,6 +174,14 @@
         if s:sql_file_{compl_type} != ""
             if filereadable(s:sql_file_{compl_type})
                 let compl_list = readfile(s:sql_file_{compl_type})
+                " let dic_list = readfile(s:sql_file_{compl_type})
+                " if !empty(dic_list)
+                "     for elem in dic_list
+                "         let kind = (compl_type=='table'?'m':(compl_type=='procedure'?'f':'v'))
+                "         let item = {'word':elem, 'menu':elem, 'kind':kind, 'info':compl_type}
+                "         let compl_list += [item]
+                "     endfor
+                " endif
             endif
         endif
     elseif compl_type == 'column'
@@ -203,8 +241,8 @@
     if base != ''
         " Filter the list based on the first few characters the user
         " entered
-        let expr = 'v:val =~ "^'.base.'"'
-        let compl_list = filter(copy(compl_list), expr)
+        let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "^'.base.'"'
+        let compl_list = filter(deepcopy(compl_list), expr)
     endif
 
     if exists('b:sql_compl_savefunc') && b:sql_compl_savefunc != ""
@@ -297,8 +335,8 @@
         " Leave time for the user to read the error message
         :sleep 2
         return -1
-    elseif g:loaded_dbext < 210
-        let msg = "The dbext plugin must be at least version 2.10 " .
+    elseif g:loaded_dbext < 300
+        let msg = "The dbext plugin must be at least version 3.00 " .
                     \ " for dynamic SQL completion"
         call s:SQLCErrorMsg(msg)
         " Leave time for the user to read the error message
@@ -363,7 +401,7 @@
     let table_alias  = ''
     let move_to_top  = 1
 
-    if g:loaded_dbext >= 210
+    if g:loaded_dbext >= 300
         let saveSettingAlias = DB_listOption('use_tbl_alias')
         exec 'DBSetOption use_tbl_alias=n'
     endif
@@ -479,7 +517,7 @@
          call cursor(curline, curcol)
          
          if found == 0
-             if g:loaded_dbext > 201
+             if g:loaded_dbext > 300
                  exec 'DBSetOption use_tbl_alias='.saveSettingAlias
              endif
 
@@ -502,7 +540,7 @@
 
     endif
 
-    if g:loaded_dbext > 201
+    if g:loaded_dbext > 300
         exec 'DBSetOption use_tbl_alias='.saveSettingAlias
     endif
 
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index 8555788..ac807a4 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -1,4 +1,4 @@
-*motion.txt*    For Vim version 7.0e.  Last change: 2006 Apr 18
+*motion.txt*    For Vim version 7.0e.  Last change: 2006 Apr 22
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -769,6 +769,7 @@
 						*:marks*
 :marks			List all the current marks (not a motion command).
 			The |'(|, |')|, |'{| and |'}| marks are not listed.
+			The first column is number zero.
 			{not in Vi}
 						*E283*
 :marks {arg}		List the marks that are mentioned in {arg} (not a
diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt
index 5a37a8d..3c021d8 100644
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1,4 +1,4 @@
-*pattern.txt*   For Vim version 7.0e.  Last change: 2006 Apr 02
+*pattern.txt*   For Vim version 7.0e.  Last change: 2006 Apr 22
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -342,6 +342,50 @@
 
 
 ==============================================================================
+3. Magic							*/magic*
+
+Some characters in the pattern are taken literally.  They match with the same
+character in the text.  When preceded with a backslash however, these
+characters get a special meaning.
+
+Other characters have a special meaning without a backslash.  They need to be
+preceded with a backslash to match literally.
+
+If a character is taken literally or not depends on the 'magic' option and the
+items mentioned next.
+							*/\m* */\M*
+Use of "\m" makes the pattern after it be interpreted as if 'magic' is set,
+ignoring the actual value of the 'magic' option.
+Use of "\M" makes the pattern after it be interpreted as if 'nomagic' is used.
+							*/\v* */\V*
+Use of "\v" means that in the pattern after it all ASCII characters except
+'0'-'9', 'a'-'z', 'A'-'Z' and '_' have a special meaning.  "very magic"
+
+Use of "\V" means that in the pattern after it only the backslash has a
+special meaning.  "very nomagic"
+
+Examples:
+after:	  \v	   \m	    \M	     \V		matches ~
+		'magic' 'nomagic'
+	  $	   $	    $	     \$		matches end-of-line
+	  .	   .	    \.	     \.		matches any character
+	  *	   *	    \*	     \*		any number of the previous atom
+	  ()	   \(\)     \(\)     \(\)	grouping into an atom
+	  |	   \|	    \|	     \|		separating alternatives
+	  \a	   \a	    \a	     \a		alphabetic character
+	  \\	   \\	    \\	     \\		literal backslash
+	  \.	   \.	    .	     .		literal dot
+	  \{	   {	    {	     {		literal '{'
+	  a	   a	    a	     a		literal 'a'
+
+{only Vim supports \m, \M, \v and \V}
+
+It is recommended to always keep the 'magic' option at the default setting,
+which is 'magic'.  This avoids portability problems.  To make a pattern immune
+to the 'magic' option being set or not, put "\m" or "\M" at the start of the
+pattern.
+
+==============================================================================
 4. Overview of pattern items				*pattern-overview*
 
 Overview of multi items.				*/multi* *E61* *E62*
@@ -486,51 +530,6 @@
 
 
 ==============================================================================
-3. Magic							*/magic*
-
-Some characters in the pattern are taken literally.  They match with the same
-character in the text.  When preceded with a backslash however, these
-characters get a special meaning.
-
-Other characters have a special meaning without a backslash.  They need to be
-preceded with a backslash to match literally.
-
-If a character is taken literally or not depends on the 'magic' option and the
-items mentioned next.
-							*/\m* */\M*
-Use of "\m" makes the pattern after it be interpreted as if 'magic' is set,
-ignoring the actual value of the 'magic' option.
-Use of "\M" makes the pattern after it be interpreted as if 'nomagic' is used.
-							*/\v* */\V*
-Use of "\v" means that in the pattern after it all ASCII characters except
-'0'-'9', 'a'-'z', 'A'-'Z' and '_' have a special meaning.  "very magic"
-
-Use of "\V" means that in the pattern after it only the backslash has a
-special meaning.  "very nomagic"
-
-Examples:
-after:	  \v	   \m	    \M	     \V		matches ~
-		'magic' 'nomagic'
-	  $	   $	    $	     \$		matches end-of-line
-	  .	   .	    \.	     \.		matches any character
-	  *	   *	    \*	     \*		any number of the previous atom
-	  ()	   \(\)     \(\)     \(\)	grouping into an atom
-	  |	   \|	    \|	     \|		separating alternatives
-	  \a	   \a	    \a	     \a		alphabetic character
-	  \\	   \\	    \\	     \\		literal backslash
-	  \.	   \.	    .	     .		literal dot
-	  \{	   {	    {	     {		literal '{'
-	  a	   a	    a	     a		literal 'a'
-
-{only Vim supports \m, \M, \v and \V}
-
-It is recommended to always keep the 'magic' option at the default setting,
-which is 'magic'.  This avoids portability problems.  To make a pattern immune
-to the 'magic' option being set or not, put "\m" or "\M" at the start of the
-pattern.
-
-
-==============================================================================
 5. Multi items						*pattern-multi-items*
 
 An atom can be followed by an indication of how many times the atom can be
diff --git a/runtime/doc/pi_tar.txt b/runtime/doc/pi_tar.txt
index aa7e3f7..6c54891 100644
--- a/runtime/doc/pi_tar.txt
+++ b/runtime/doc/pi_tar.txt
@@ -1,4 +1,4 @@
-*tar.txt*	For Vim version 7.0e.  Last change: 2006 Mar 24
+*pi_tar.txt*	For Vim version 7.0e.  Last change: 2006 Apr 22
 
        	       	       +====================+
        	       	       | Tar File Interface |
diff --git a/runtime/doc/pi_zip.txt b/runtime/doc/pi_zip.txt
index 253639b..26d9482 100644
--- a/runtime/doc/pi_zip.txt
+++ b/runtime/doc/pi_zip.txt
@@ -1,4 +1,4 @@
-*zip.txt*	For Vim version 7.0e.  Last change: 2006 Apr 10
+*pi_zip.txt*	For Vim version 7.0e.  Last change: 2006 Apr 22
 
 				+====================+
 				| Zip File Interface |
diff --git a/runtime/doc/sql.txt b/runtime/doc/sql.txt
index cf95616..58f806a 100644
--- a/runtime/doc/sql.txt
+++ b/runtime/doc/sql.txt
@@ -1,4 +1,4 @@
-*sql.txt*   	For Vim version 7.0e.  Last change: Mon Apr 03 2006 10:34:00 PM
+*sql.txt*   	For Vim version 7.0e.  Last change: Fri Apr 21 2006 10:39:11 PM
 
 by David Fishburn
 
@@ -82,7 +82,7 @@
 
     create[ or replace] procedure|function|event
     returns
-<
+ 
 
 1.2 Text Object Motions		        	*sql-object-motions*
 -----------------------
@@ -96,7 +96,7 @@
     [[              move backwards to the previous 'begin'
     ][              move forward to the next 'end'
     []              move backwards to the previous 'end'
-<
+ 
 
 1.3 Predefined Object Motions                   *sql-predefined-objects*
 -----------------------------
@@ -111,7 +111,7 @@
     let g:ftplugin_sql_objects = 'function,procedure,event,table,trigger' .
                 \ ',schema,service,publication,database,datatype,domain' .
                 \ ',index,subscription,synchronization,view,variable'
-<                
+                 
 The following |Normal| mode and |Visual| mode maps have been created which use
 the above list: >
     ]}              move forward to the next 'create <object name>'
@@ -128,14 +128,14 @@
     end;
 
     create index i1 on t1 (c1);
-<
+ 
 The default setting for g:ftplugin_sql_objects is: >
     let g:ftplugin_sql_objects = 'function,procedure,event,' .
                 \ '\\(existing\\\\|global\\s\\+temporary\\s\\+\\)\\\{,1}' .
                 \ 'table,trigger' .
                 \ ',schema,service,publication,database,datatype,domain' .
                 \ ',index,subscription,synchronization,view,variable'
-<
+ 
 The above will also handle these cases: >
     create table t1 (
         ...
@@ -146,7 +146,7 @@
     create global temporary table t3 (
         ...
     );
-<
+ 
 By default, the ftplugin only searches for CREATE statements.  You can also
 override this via your |vimrc| with the following: >
     let g:ftplugin_sql_statements = 'create,alter'
@@ -157,7 +157,7 @@
     3.  /*
          *
          */
-<         
+          
 The following |Normal| mode and |Visual| mode maps have been created to work
 with comments: >
     ]"              move forward to the beginning of a comment
@@ -170,7 +170,7 @@
 Vim's feature to find macro definitions, |'define'|, is supported using this
 regular expression: >
     \c\<\(VARIABLE\|DECLARE\|IN\|OUT\|INOUT\)\>
-<
+ 
 This addresses the following code: >
     CREATE VARIABLE myVar1 INTEGER;
 
@@ -187,11 +187,11 @@
           FROM T1
          WHERE c4 = myVar1;
     END;
-<
+ 
 Place your cursor on "myVar1" on this line: >
          WHERE c4 = myVar1;
                      ^
-<
+ 
 Press any of the following keys: >
     [d
     [D
@@ -235,7 +235,7 @@
 able to flip between the various vendors rules (indent, syntax) on a per
 buffer basis, at any time.  The ftplugin/sql.vim file defines this function: >
     SQLSetType
-<
+ 
 Executing this function without any parameters will set the indent and syntax
 scripts back to their defaults, see |sql-type-default|.  If you have turned
 off Vi's compatibility mode, |'compatible'|, you can use the <Tab> key to
@@ -252,12 +252,12 @@
     :SQLSetType sqlanywhere
     :SQLSetType sqlinformix
     :SQLSetType mysql
-<
+ 
 The easiest approach is to the use <Tab> character which will first complete
 the command name (SQLSetType), after a space and another <Tab>, display a list
 of available Vim script names: >
     :SQL<Tab><space><Tab>
-<
+ 
 
 2.2 SQL Dialect Default		        	*sql-type-default*
 -----------------------
@@ -267,10 +267,10 @@
     let g:sql_type_default = 'sqlanywhere'
     let g:sql_type_default = 'sqlinformix'
     let g:sql_type_default = 'mysql'
-<
+ 
 If you added the following to your |vimrc|: >
     let g:sql_type_default = 'sqlinformix'
-<
+ 
 The next time edit a SQL file the following scripts will be automatically 
 loaded by Vim: >
     ftplugin/sql.vim
@@ -299,7 +299,7 @@
     Windows
         $VIM/vimfiles/syntax/sqlite.vim
         $VIM/vimfiles/indent/sqlite.vim
-<
+ 
 No changes are necessary to the SQLSetType function.  It will automatically
 pickup the new SQL files and load them when you issue the SQLSetType command. 
 
@@ -330,11 +330,11 @@
     imap <buffer> <C-C>o <C-\><C-O>:call sqlcomplete#Map('sqlOption')<CR><C-X><C-O>
     imap <buffer> <C-C>T <C-\><C-O>:call sqlcomplete#Map('sqlType')<CR><C-X><C-O>
     imap <buffer> <C-C>s <C-\><C-O>:call sqlcomplete#Map('sqlStatement')<CR><C-X><C-O>
-< 
+  
 The static maps (which are based on the syntax highlight groups) follow this
 format: >
     imap <buffer> <C-C>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword')<CR><C-X><C-O>
-<
+ 
 This command breaks down as: >
     imap                   - Create an insert map
     <buffer>               - Only for this buffer
@@ -362,7 +362,7 @@
                              plugin will also cache this result until Vim is
                              restarted.  The syntax list is retrieved using
                              the syntaxcomplete plugin.
-<
+ 
 Using the 'syntax' keyword is a special case.  This instructs the
 syntaxcomplete plugin to retrieve all syntax items.  So this will effectively
 work for any of Vim's SQL syntax files.  At the time of writing this includes
@@ -382,7 +382,7 @@
          - Isolation_level, On_error, Qualify_owners, Fire_triggers, ...
      Types
          - Integer, Char, Varchar, Date, DateTime, Timestamp, ...
-<
+ 
  
 4.2 Dynamic Mode  		                *sql-completion-dynamic*
 ----------------
@@ -402,7 +402,7 @@
          - All stored procedures for all schema owners
      Column List
          - For the selected table, the columns that are part of the table
-<
+ 
 To enable the popup, while in INSERT mode, use the following key combinations
 for each group (where <C-C> means hold the CTRL key down while pressing 
 the space bar):
@@ -425,7 +425,7 @@
 fast.  If new tables or columns are added to the database it may become 
 necessary to clear the plugins cache.  The default map for this is: >
     imap <buffer> <C-C>R <C-\><C-O>:call sqlcomplete#Map('ResetCache')<CR><C-X><C-O>
-<
+ 
  
 4.3 SQL Tutorial				*sql-completion-tutorial*
 ----------------
@@ -436,10 +436,10 @@
      b) You are introduced to some of the more common features
      c) Show how to customize it to your preferences
      d) Demonstrate "Best of Use" of the plugin (easiest way to configure).
-<
+ 
 First, create a new buffer: >
      :e tutorial.sql
-<
+ 
 
 Static features
 ---------------
@@ -461,7 +461,7 @@
 (sqlanywhere.vim) has support for this: >
      BEGIN
         DECLARE customer_id <C-C>T <-- Choose a type from the list
-< 
+  
 
 Dynamic features
 ----------------
@@ -484,7 +484,7 @@
 popup window and the table name already chosen when the list became active. >
  
  4.3.1 Table Completion:			*sql-completion-tables*
-<
+ 
 Press <C-C>t to display a list of tables from within the database you
 have connected via the dbext plugin.  
 NOTE: All of the SQL completion popups support typing a prefix before pressing
@@ -492,7 +492,7 @@
 beginning with those characters.  >
  
  4.3.2 Column Completion:			*sql-completion-columns*
-<
+ 
 The SQL completion plugin can also display a list of columns for particular
 tables.  The column completion is trigger via <C-C>c.
 
@@ -503,7 +503,7 @@
 a key and create this mapping (see |sql-completion-maps| for further 
 details on where to create this imap): >
     imap <buffer> <your_keystroke> <CR><C-\><C-O>:call sqlcomplete#Map('column')<CR><C-X><C-O>
-<
+ 
 Example of using column completion:
      - Press <C-C>t again to display the list of tables.  
      - When the list is displayed in the completion window, press <C-Right>,
@@ -561,7 +561,7 @@
             employee e,
             site_options so
       where c.
-<
+ 
 In INSERT mode after typing the final "c." which is an alias for the
 "customer" table, you can press either <C-C>c or <C-X><C-O>.  This will
 popup a list of columns for the customer table.  It does this by looking back
@@ -572,12 +572,12 @@
  
  
  4.3.3 Procedure Completion:			*sql-completion-procedures*
-<
+ 
 Similar to the table list, <C-C>p, will display a list of stored
 procedures stored within the database. >
  
  4.3.4 View Completion:				*sql-completion-views*
-<
+ 
 Similar to the table list, <C-C>v, will display a list of views in the
 database.
 
@@ -615,7 +615,32 @@
                    use mixed case then the first letter of the table is used: >
                    mytablename --> m
                    MYTABLENAME --> M
-<
+ 
+    omni_sql_ignorecase
+<       - Default: Current setting for|ignorecase|
+        - Valid settings are 0 or 1.  
+        - When entering a few letters before initiating completion, the list
+          will be filtered to display only the entries which begin with the
+          list of characters.  When this option is set to 0, the list will be
+          filtered using case sensitivity. >
+ 
+    omni_sql_include_owner
+<       - Default: 0, unless dbext.vim 3.00 has been installed
+        - Valid settings are 0 or 1.  
+        - When completing tables, procedure or views and using dbext.vim 3.00 
+          or higher the list of objects will also include the owner name.
+          When completing these objects and omni_sql_include_owner is enabled
+          the owner name will be be replaced. >
+ 
+    omni_sql_precache_syntax_groups
+<       - Default: 
+          ['syntax','sqlKeyword','sqlFunction','sqlOption','sqlType','sqlStatement']
+        - sqlcomplete can be used in conjunction with other completion
+          plugins.  This is outlined at |sql-completion-filetypes|.  When the 
+          filetype is changed temporarily to SQL, the sqlcompletion plugin
+          will cache the syntax groups listed in the List specified in this
+          option.
+>
  
 4.5 SQL Maps	        			*sql-completion-maps*
 ------------
@@ -642,7 +667,8 @@
 
 Dynamic Maps
 ------------
-These are maps which use populate the completion list using the dbext.vim plugin. >
+These are maps which use populate the completion list using the dbext.vim
+plugin. >
     <C-C>t  
 <       - Displays a list of tables. >
     <C-C>p
@@ -683,7 +709,7 @@
 your platform (often a case on *nix) you define the following variable in
 your |vimrc|: >
     let g:omni_sql_no_default_maps = 1
-< 
+  
 Do no edit ftplugin/sql.vim directly!  If you change this file your changes
 will be over written on future updates.  Vim has a special directory structure
 which allows you to make customizations without changing the files that are
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 2ea8a9e..64a5a64 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -259,6 +259,7 @@
 'grepformat'	options.txt	/*'grepformat'*
 'grepprg'	options.txt	/*'grepprg'*
 'gtl'	options.txt	/*'gtl'*
+'gtt'	options.txt	/*'gtt'*
 'guicursor'	options.txt	/*'guicursor'*
 'guifont'	options.txt	/*'guifont'*
 'guifontset'	options.txt	/*'guifontset'*
@@ -267,6 +268,7 @@
 'guioptions'	options.txt	/*'guioptions'*
 'guipty'	options.txt	/*'guipty'*
 'guitablabel'	options.txt	/*'guitablabel'*
+'guitabtooltip'	options.txt	/*'guitabtooltip'*
 'hardtabs'	vi_diff.txt	/*'hardtabs'*
 'helpfile'	options.txt	/*'helpfile'*
 'helpheight'	options.txt	/*'helpheight'*
@@ -3198,6 +3200,7 @@
 CTRL-W_c	windows.txt	/*CTRL-W_c*
 CTRL-W_d	tagsrch.txt	/*CTRL-W_d*
 CTRL-W_f	windows.txt	/*CTRL-W_f*
+CTRL-W_gF	windows.txt	/*CTRL-W_gF*
 CTRL-W_g]	windows.txt	/*CTRL-W_g]*
 CTRL-W_g_CTRL-]	windows.txt	/*CTRL-W_g_CTRL-]*
 CTRL-W_gf	windows.txt	/*CTRL-W_gf*
@@ -4006,6 +4009,8 @@
 E788	autocmd.txt	/*E788*
 E789	syntax.txt	/*E789*
 E79	message.txt	/*E79*
+E790	undo.txt	/*E790*
+E791	mbyte.txt	/*E791*
 E80	message.txt	/*E80*
 E800	arabic.txt	/*E800*
 E81	map.txt	/*E81*
@@ -6298,6 +6303,7 @@
 netrw-sexplore	pi_netrw.txt	/*netrw-sexplore*
 netrw-sort	pi_netrw.txt	/*netrw-sort*
 netrw-sortsequence	pi_netrw.txt	/*netrw-sortsequence*
+netrw-starpat	pi_netrw.txt	/*netrw-starpat*
 netrw-starstar	pi_netrw.txt	/*netrw-starstar*
 netrw-start	pi_netrw.txt	/*netrw-start*
 netrw-transparent	pi_netrw.txt	/*netrw-transparent*
@@ -6504,6 +6510,8 @@
 pi_netrw.txt	pi_netrw.txt	/*pi_netrw.txt*
 pi_paren.txt	pi_paren.txt	/*pi_paren.txt*
 pi_spec.txt	pi_spec.txt	/*pi_spec.txt*
+pi_tar.txt	pi_tar.txt	/*pi_tar.txt*
+pi_zip.txt	pi_zip.txt	/*pi_zip.txt*
 plaintex.vim	syntax.txt	/*plaintex.vim*
 plsql	sql.txt	/*plsql*
 plugin	usr_05.txt	/*plugin*
@@ -7246,7 +7254,6 @@
 tar-manual	pi_tar.txt	/*tar-manual*
 tar-options	pi_tar.txt	/*tar-options*
 tar-usage	pi_tar.txt	/*tar-usage*
-tar.txt	pi_tar.txt	/*tar.txt*
 tcl	if_tcl.txt	/*tcl*
 tcl-beep	if_tcl.txt	/*tcl-beep*
 tcl-buffer	if_tcl.txt	/*tcl-buffer*
@@ -7858,7 +7865,6 @@
 zip-history	pi_zip.txt	/*zip-history*
 zip-manual	pi_zip.txt	/*zip-manual*
 zip-usage	pi_zip.txt	/*zip-usage*
-zip.txt	pi_zip.txt	/*zip.txt*
 zj	fold.txt	/*zj*
 zk	fold.txt	/*zk*
 zl	scroll.txt	/*zl*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 08e85d8..e239ba7 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0e.  Last change: 2006 Apr 21
+*todo.txt*      For Vim version 7.0e.  Last change: 2006 Apr 22
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,16 +30,11 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Win32: Crash when adding many menu entries. (Karl Waedt)
-
 Crash in "z=" when the change triggers checking out the file, FileChangedRO
 event.  Problem in move_lines()?  FileChangedShell also involved? (Neil Bird)
 Added a few checks for valid buffer, did that help?
 
-Fix coverity false positives?
-
 Add more tests for all new functionality in Vim 7.  Especially new functions.
-    :undojoin
 
 Win32: Describe how to do debugging. (George Reilly)
 
@@ -209,6 +204,10 @@
 8   GTK 2: Combining UTF-8 characters not displayed properly in menus (Mikolaj
     Machowski)  They are displayed as separate characters.  Problem in
     creating a label?
+8   GTK2: selecting button in confirm dialog with keys and hitting Enter
+    doesn't select that button. (Steve Hall)
+    It's possible to set the default button but it's not clear how to obtain
+    the currently selected (highlighted) button.
 8   GTK 2: Combining UTF-8 characters are sometimes not drawn properly.
     Depends on the font size, "monospace 13" has the problem.  Vim seems to do
     everything right, must be a GTK bug.  Is there a way to work around it?
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index d9a9c1e..8b23125 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 7.0e.  Last change: 2006 Mar 25
+*various.txt*   For Vim version 7.0e.  Last change: 2006 Apr 22
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -819,7 +819,7 @@
   languages in the specified directory.
 
 ==============================================================================
-4. Using Vim like less or more					*less*
+3. Using Vim like less or more					*less*
 
 If you use the less or more program to view a file, you don't get syntax
 highlighting.  Thus you would like to use Vim instead.  You can do this by
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 1aa93b6..1a82a1d 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0e.  Last change: 2006 Apr 21
+*version7.txt*  For Vim version 7.0e.  Last change: 2006 Apr 22
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -2572,7 +2572,7 @@
 
 Added CTRL-W gF: open file under cursor in new tab page and jump to the line
 number following the file name.
-Added 'guitabtooltip', but it's not implemented anywhere yet.
+Added 'guitabtooltip'.  Implemented for Win32 (Yegappan Lakshmanan).
 
 Added "throw" to 'debug' option: thow an exception for error messages even
 whey they would otherwise be ignored.
@@ -2582,5 +2582,17 @@
 
 Motif: default to using XpmAttributes instead of XpmAttributes_21.
 
+A few more changes for 64 bit MS-Windows. (George Reilly)
+
+Got ml_get errors when doing "o" and selecting in other window where there are
+less line shorter than the cursor position in the other window.  ins_mouse()
+was using position in wrong window.
+
+Win32 GUI: Crash when giving a lot of messages during startup.  Allocate twice
+as much memory for the dialog template.
+
+Fixed a few leaks and wrong pointer use reported by coverity.
+
+When showing menus the mode character was sometimes wrong.
 
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/indent/fortran.vim b/runtime/indent/fortran.vim
index 465412b..94b9da1 100644
--- a/runtime/indent/fortran.vim
+++ b/runtime/indent/fortran.vim
@@ -1,8 +1,8 @@
 " Vim indent file
 " Language:	Fortran95 (and Fortran90, Fortran77, F and elf90)
-" Version:	0.36
+" Version:	0.37
 " URL:		http://www.unb.ca/chem/ajit/indent/fortran.vim
-" Last Change:	2006 Apr. 02
+" Last Change:	2006 Apr. 22
 " Maintainer:	Ajit J. Thakkar <ajit@unb.ca>; <http://www.unb.ca/chem/ajit/>
 " Usage:	Do :help fortran-indent from Vim
 
@@ -14,6 +14,7 @@
 
 setlocal indentkeys+==~end,=~case,=~if,=~else,=~do,=~where,=~elsewhere,=~select
 setlocal indentkeys+==~endif,=~enddo,=~endwhere,=~endselect
+setlocal indentkeys+==~type,=~interface
 
 " Determine whether this is a fixed or free format source file
 " if this hasn't been done yet
@@ -81,20 +82,25 @@
   endif
 
   "Add a shiftwidth to statements following if, else, case,
-  "where and elsewhere statements
+  "where, elsewhere, type and interface statements
   if prevstat =~? '^\s*\(\d\+\s\)\=\s*\(else\|case\|where\|elsewhere\)\>'
+	\ ||prevstat =~? '^\s*\(\d\+\s\)\=\s*\(type\|interface\)\>'
 	\ || prevstat =~? '^\s*\(\d\+\s\)\=\s*\(\a\w*\s*:\)\=\s*if\>'
      let ind = ind + &sw
     " Remove unwanted indent after logical and arithmetic ifs
     if prevstat =~? '\<if\>' && prevstat !~? '\<then\>'
       let ind = ind - &sw
     endif
+    " Remove unwanted indent after type( statements
+    if prevstat =~? '\<type\s*('
+      let ind = ind - &sw
+    endif
   endif
 
   "Subtract a shiftwidth from else, elsewhere, case, end if,
-  " end where and end select statements
+  " end where, end select, end interface and end type statements
   if getline(v:lnum) =~? '^\s*\(\d\+\s\)\=\s*'
-	\. '\(else\|elsewhere\|case\|end\s*\(if\|where\|select\)\)\>'
+	\. '\(else\|elsewhere\|case\|end\s*\(if\|where\|select\|interface\|type\)\)\>'
     let ind = ind - &sw
     " Fix indent for case statement immediately after select
     if prevstat =~? '\<select\>'
diff --git a/runtime/indent/python.vim b/runtime/indent/python.vim
index 4b8e81b..cda6ec7 100644
--- a/runtime/indent/python.vim
+++ b/runtime/indent/python.vim
@@ -2,7 +2,7 @@
 " Language:		Python
 " Maintainer:		Bram Moolenaar <Bram@vim.org>
 " Original Author:	David Bustos <bustos@caltech.edu>
-" Last Change:		2006 Apr 21
+" Last Change:		2006 Apr 22
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
diff --git a/runtime/syntax/doxygen.vim b/runtime/syntax/doxygen.vim
index 4ae3a93..5e3126e 100644
--- a/runtime/syntax/doxygen.vim
+++ b/runtime/syntax/doxygen.vim
@@ -185,11 +185,20 @@
   syn region doxygenVerbatimRegion contained matchgroup=doxygenOther start=+\<verbatim\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<endverbatim\>+ contains=doxygenVerbatimRegionSpecial,doxygenContinueComment,doxygenErrorComment
   syn match doxygenVerbatimRegionSpecial contained +[\\@]\(endverbatim\>\)\@=+
 
-  let b:doxygen_syntax_save=b:current_syntax
-  unlet b:current_syntax
+  if exists('b:current_syntax') 
+    let b:doxygen_syntax_save=b:current_syntax
+    unlet b:current_syntax
+  endif
+
   syn include @Dotx syntax/dot.vim
-  let b:current_syntax=b:doxygen_syntax_save
-  unlet b:doxygen_syntax_save
+
+  if exists('b:doxygen_syntax_save') 
+    let b:current_syntax=b:doxygen_syntax_save
+    unlet b:doxygen_syntax_save
+  else
+    unlet b:current_syntax
+  endif
+
   syn region doxygenDotRegion contained matchgroup=doxygenOther start=+\<dot\>+ matchgroup=doxygenOther end=+[\\@]\@<=\<enddot\>+ contains=doxygenDotRegionSpecial,doxygenErrorComment,doxygenContinueComment,@Dotx
   syn match doxygenDotRegionSpecial contained +[\\@]\(enddot\>\)\@=+
 
diff --git a/runtime/syntax/fortran.vim b/runtime/syntax/fortran.vim
index 4dd014e..1d160f2 100644
--- a/runtime/syntax/fortran.vim
+++ b/runtime/syntax/fortran.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	Fortran95 (and Fortran90, Fortran77, F and elf90)
-" Version:	0.87
+" Version:	0.88
 " URL:		http://www.unb.ca/chem/ajit/syntax/fortran.vim
-" Last Change:	2006 Apr. 04
+" Last Change:	2006 Apr. 22
 " Maintainer:	Ajit J. Thakkar (ajit AT unb.ca); <http://www.unb.ca/chem/ajit/>
 " Usage:	Do :help fortran-syntax from Vim
 " Credits:
@@ -279,7 +279,7 @@
 syn match   fortran77OperatorR	"\.\s*[gl][et]\s*\."
 syn match   fortran77OperatorR	"\.\s*\(eq\|ne\)\s*\."
 
-if b:fortran_dialect == "f95"
+if b:fortran_dialect == "f95" || b:fortran_dialect == "F"
   syn keyword fortranRepeat		forall
   syn match fortranRepeat		"\<end\s*forall"
   syn keyword fortran95Intrinsic	null cpu_time