changeset 3371:8dcf3ea92b63

Updated runtime files.
author Bram Moolenaar <bram@vim.org>
date Wed, 22 Feb 2012 17:30:19 +0100
parents 56d11b2b77eb
children f1cde9cf023e
files runtime/autoload/sqlcomplete.vim runtime/compiler/erlang.vim runtime/doc/autocmd.txt runtime/doc/options.txt runtime/doc/quickref.txt runtime/doc/tags runtime/doc/todo.txt runtime/optwin.vim runtime/syntax/fasm.vim runtime/syntax/resolv.vim runtime/syntax/reva.vim runtime/syntax/sshconfig.vim
diffstat 12 files changed, 218 insertions(+), 120 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/autoload/sqlcomplete.vim
+++ b/runtime/autoload/sqlcomplete.vim
@@ -1,16 +1,31 @@
 " Vim OMNI completion script for SQL
 " Language:    SQL
 " Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com>
-" Version:     10.0
-" Last Change: 2010 Jun 11
+" Version:     12.0
+" Last Change: 2012 Feb 08
 " Usage:       For detailed help
-"              ":help sql.txt" 
-"              or ":help ft-sql-omni" 
+"              ":help sql.txt"
+"              or ":help ft-sql-omni"
 "              or read $VIMRUNTIME/doc/sql.txt
 
 " History
+" Version 12.0
+"     - Partial column name completion did not work when a table
+"       name or table alias was provided (Jonas Enberg).
+"     - Improved the handling of column completion.  First we match any
+"       columns from a previous completion.  If not matches are found, we
+"       consider the partial name to be a table or table alias for the 
+"       query and attempt to match on it.
+"
+" Version 11.0
+"     Added g:omni_sql_default_compl_type variable
+"         - You can specify which type of completion to default to
+"           when pressing <C-X><C-O>.  The entire list of available
+"           choices can be found in the calls to sqlcomplete#Map in:
+"               ftplugin/sql.vim
+"
 " Version 10.0
-"     Updated PreCacheSyntax() 
+"     Updated PreCacheSyntax()
 "         - Now returns a List of the syntax items it finds.
 "           This allows other plugins / scripts to use this list for their own
 "           purposes.  In this case XPTemplate can use them for a Choose list.
@@ -18,22 +33,22 @@
 "           warning if not.
 "         - Verifies the parameters are the correct type and displays a
 "           warning if not.
-"     Updated SQLCWarningMsg() 
+"     Updated SQLCWarningMsg()
 "         - Prepends warning message with SQLComplete so you know who issued
 "           the warning.
-"     Updated SQLCErrorMsg() 
+"     Updated SQLCErrorMsg()
 "         - Prepends error message with SQLComplete so you know who issued
 "           the error.
-"     
+"
 " Version 9.0
 "     This change removes some of the support for tables with spaces in their
-"     names in order to simplify the regexes used to pull out query table 
+"     names in order to simplify the regexes used to pull out query table
 "     aliases for more robust table name and column name code completion.
 "     Full support for "table names with spaces" can be added in again
 "     after 7.3.
 "
 " Version 8.0
-"     Incorrectly re-executed the g:ftplugin_sql_omni_key_right and g:ftplugin_sql_omni_key_left 
+"     Incorrectly re-executed the g:ftplugin_sql_omni_key_right and g:ftplugin_sql_omni_key_left
 "     when drilling in and out of a column list for a table.
 "
 " Version 7.0
@@ -44,7 +59,7 @@
 "
 " Set completion with CTRL-X CTRL-O to autoloaded function.
 " This check is in place in case this script is
-" sourced directly instead of using the autoload feature. 
+" sourced directly instead of using the autoload feature.
 if exists('&omnifunc')
     " Do not set the option if already set since this
     " results in an E117 warning.
@@ -54,9 +69,9 @@ if exists('&omnifunc')
 endif
 
 if exists('g:loaded_sql_completion')
-    finish 
+    finish
 endif
-let g:loaded_sql_completion = 100
+let g:loaded_sql_completion = 120
 
 " Maintains filename of dictionary
 let s:sql_file_table        = ""
@@ -69,7 +84,7 @@ let s:tbl_alias             = []
 let s:tbl_cols              = []
 let s:syn_list              = []
 let s:syn_value             = []
- 
+
 " Used in conjunction with the syntaxcomplete plugin
 let s:save_inc              = ""
 let s:save_exc              = ""
@@ -79,7 +94,7 @@ endif
 if exists('g:omni_syntax_group_exclude_sql')
     let s:save_exc = g:omni_syntax_group_exclude_sql
 endif
- 
+
 " Used with the column list
 let s:save_prev_table       = ""
 
@@ -110,12 +125,16 @@ if !exists('g:omni_sql_include_owner')
         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 
+            " whatever has been typed should be replaced as part of the
             " code replacement.
             let g:omni_sql_include_owner = 1
         endif
     endif
 endif
+" Default type of completion used when <C-X><C-O> is pressed
+if !exists('g:omni_sql_default_compl_type')
+    let g:omni_sql_default_compl_type = 'table'
+endif
 
 " This function is used for the 'omnifunc' option.
 function! sqlcomplete#Complete(findstart, base)
@@ -140,7 +159,7 @@ function! sqlcomplete#Complete(findstart
             let begindot = 1
         endif
         while start > 0
-            " Additional code was required to handle objects which 
+            " Additional code was required to handle objects which
             " can contain spaces like "my table name".
             if line[start - 1] !~ '\(\w\|\.\)'
                 " If the previous character is not a period or word character
@@ -150,7 +169,7 @@ function! sqlcomplete#Complete(findstart
             elseif line[start - 1] =~ '\w'
                 " If the previous character is word character continue back
                 let start -= 1
-            elseif line[start - 1] =~ '\.' && 
+            elseif line[start - 1] =~ '\.' &&
                         \ compl_type =~ 'column\|table\|view\|procedure'
                 " If the previous character is a period and we are completing
                 " an object which can be specified with a period like this:
@@ -160,7 +179,7 @@ function! sqlcomplete#Complete(findstart
                 " 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' 
+                if lastword != -1 && compl_type == 'column'
                     break
                 endif
                 " If column completion was specified stop at the "." if
@@ -171,8 +190,8 @@ function! sqlcomplete#Complete(findstart
                 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\column_csv' && 
+                if lastword == -1 &&
+                            \ compl_type =~ 'table\|view\|procedure\column_csv' &&
                             \ g:omni_sql_include_owner == 0
                     let lastword = start
                     break
@@ -202,7 +221,7 @@ function! sqlcomplete#Complete(findstart
     let compl_list = []
 
     " Default to table name completion
-    let compl_type = 'table'
+    let compl_type = g:omni_sql_default_compl_type
     " Allow maps to specify what type of object completion they want
     if exists('b:sql_compl_type')
         let compl_type = b:sql_compl_type
@@ -216,7 +235,7 @@ function! sqlcomplete#Complete(findstart
 
     if compl_type == 'table' ||
                 \ compl_type == 'procedure' ||
-                \ compl_type == 'view' 
+                \ compl_type == 'view'
 
         " This type of completion relies upon the dbext.vim plugin
         if s:SQLCCheck4dbext() == -1
@@ -254,7 +273,7 @@ function! sqlcomplete#Complete(findstart
 
         if base == ""
             " The last time we displayed a column list we stored
-            " the table name.  If the user selects a column list 
+            " the table name.  If the user selects a column list
             " without a table name of alias present, assume they want
             " the previous column list displayed.
             let base = s:save_prev_table
@@ -273,16 +292,16 @@ function! sqlcomplete#Complete(findstart
             " has entered:
             "    owner.table
             "    table.column_prefix
-            " So there are a couple of things we can do to mitigate 
+            " So there are a couple of things we can do to mitigate
             " this issue.
             "    1.  Check if the dbext plugin has the option turned
             "        on to even allow owners
             "    2.  Based on 1, if the user is showing a table list
-            "        and the DrillIntoTable (using <Right>) then 
+            "        and the DrillIntoTable (using <Right>) then
             "        this will be owner.table.  In this case, we can
-            "        check to see the table.column exists in the 
+            "        check to see the table.column exists in the
             "        cached table list.  If it does, then we have
-            "        determined the user has actually chosen 
+            "        determined the user has actually chosen
             "        owner.table, not table.column_prefix.
             let found = -1
             if g:omni_sql_include_owner == 1 && owner == ''
@@ -297,17 +316,46 @@ function! sqlcomplete#Complete(findstart
             " If the user has indicated not to use table owners at all and
             " the base ends in a '.' we know they are not providing a column
             " name, so we can shift the items appropriately.
-            if found != -1 || (g:omni_sql_include_owner == 0 && base !~ '\.$')
-                let owner  = table
-                let table  = column
-                let column = ''
+            " if found != -1 || (g:omni_sql_include_owner == 0 && base !~ '\.$')
+            "     let owner  = table
+            "     let table  = column
+            "     let column = ''
+            " endif
+        else
+            " If no "." was provided and the user asked for
+            " column level completion, first attempt the match
+            " on any previous column lists.  If the user asked
+            " for a list of columns comma separated, continue as usual.
+            if compl_type == 'column' && s:save_prev_table != ''
+                " The last time we displayed a column list we stored
+                " the table name.  If the user selects a column list
+                " without a table name of alias present, assume they want
+                " the previous column list displayed.
+                let table     = s:save_prev_table
+                let list_type = ''
+
+                let compl_list  = s:SQLCGetColumns(table, list_type)
+                if ! empty(compl_list)
+                    " If no column prefix has been provided and the table
+                    " name was provided, append it to each of the items
+                    " returned.
+                    let compl_list = filter(deepcopy(compl_list), 'v:val=~"^'.base.'"' )
+
+                    " If not empty, we have a match on columns
+                    " return the list
+                    if ! empty(compl_list)
+                        return compl_list
+                    endif
+                endif
             endif
-        else
+            " Since no columns were found to match the base supplied
+            " assume the user is trying to complete the column list
+            " for a table (and or an alias to a table).
             let table  = base
         endif
 
         " Get anything after the . and consider this the table name
-        " If an owner has been specified, then we must consider the 
+        " If an owner has been specified, then we must consider the
         " base to be a partial column name
         " let base  = matchstr( base, '^\(.*\.\)\?\zs.*' )
 
@@ -327,11 +375,11 @@ function! sqlcomplete#Complete(findstart
                 " If no column prefix has been provided and the table
                 " name was provided, append it to each of the items
                 " returned.
-                let compl_list = map(compl_list, "table.'.'.v:val")
+                let compl_list = map(compl_list, 'table.".".v:val')
                 if owner != ''
                     " If an owner has been provided append it to each of the
                     " items returned.
-                    let compl_list = map(compl_list, "owner.'.'.v:val")
+                    let compl_list = map(compl_list, 'owner.".".v:val')
                 endif
             else
                 let base = ''
@@ -361,11 +409,15 @@ function! sqlcomplete#Complete(findstart
 
     if base != ''
         " Filter the list based on the first few characters the user entered.
-        " Check if the text matches at the beginning 
-        " or 
+        " Check if the text matches at the beginning
+        "         \\(^.base.'\\)
+        " or
         " Match to a owner.table or alias.column type match
+        "         ^\\(\\w\\+\\.\\)\\?'.base.'\\)
         " or
         " Handle names with spaces "my table name"
+        "         "\\(^'.base.'\\|^\\(\\w\\+\\.\\)\\?'.base.'\\)"'
+        "
         let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|^\\(\\w\\+\\.\\)\\?'.base.'\\)"'
         " let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\)"'
         " let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|\\(\\.\\)\\?'.base.'\\)"'
@@ -384,7 +436,7 @@ function! sqlcomplete#PreCacheSyntax(...
     let syn_group_arr = []
     let syn_items     = []
 
-    if a:0 > 0 
+    if a:0 > 0
         if type(a:1) != 3
             call s:SQLCWarningMsg("Parameter is not a list. Example:['syntaxGroup1', 'syntaxGroup2']")
             return ''
@@ -407,7 +459,7 @@ endfunction
 function! sqlcomplete#ResetCacheSyntax(...)
     let syn_group_arr = []
 
-    if a:0 > 0 
+    if a:0 > 0
         if type(a:1) != 3
             call s:SQLCWarningMsg("Parameter is not a list. Example:['syntaxGroup1', 'syntaxGroup2']")
             return ''
@@ -458,7 +510,7 @@ function! sqlcomplete#DrillIntoTable()
 	" If the popup is not visible, simple perform the normal
 	" key behaviour.
 	" Must use exec since they key must be preceeded by "\"
-	" or feedkeys will simply push each character of the string 
+	" or feedkeys will simply push each character of the string
 	" rather than the "key press".
         exec 'call feedkeys("\'.g:ftplugin_sql_omni_key_right.'", "n")'
     endif
@@ -475,7 +527,7 @@ function! sqlcomplete#DrillOutOfColumns(
 	" If the popup is not visible, simple perform the normal
 	" key behaviour.
 	" Must use exec since they key must be preceeded by "\"
-	" or feedkeys will simply push each character of the string 
+	" or feedkeys will simply push each character of the string
 	" rather than the "key press".
         exec 'call feedkeys("\'.g:ftplugin_sql_omni_key_left.'", "n")'
     endif
@@ -484,16 +536,16 @@ endfunction
 
 function! s:SQLCWarningMsg(msg)
     echohl WarningMsg
-    echomsg 'SQLComplete:'.a:msg 
+    echomsg 'SQLComplete:'.a:msg
     echohl None
 endfunction
-      
+
 function! s:SQLCErrorMsg(msg)
     echohl ErrorMsg
-    echomsg 'SQLComplete:'.a:msg 
+    echomsg 'SQLComplete:'.a:msg
     echohl None
 endfunction
-      
+
 function! s:SQLCGetSyntaxList(syn_group)
     let syn_group  = a:syn_group
     let compl_list = []
@@ -504,7 +556,7 @@ function! s:SQLCGetSyntaxList(syn_group)
         " Return previously cached value
         let compl_list = s:syn_value[list_idx]
     else
-        " Request the syntax list items from the 
+        " Request the syntax list items from the
         " syntax completion plugin
         if syn_group == 'syntax'
             " Handle this special case.  This allows the user
@@ -552,7 +604,7 @@ function! s:SQLCAddAlias(table_name, tab
     let table_alias = a:table_alias
     let cols        = a:cols
 
-    if g:omni_sql_use_tbl_alias != 'n' 
+    if g:omni_sql_use_tbl_alias != 'n'
         if table_alias == ''
             if 'da' =~? g:omni_sql_use_tbl_alias
                 if table_name =~ '_'
@@ -562,13 +614,13 @@ function! s:SQLCAddAlias(table_name, tab
                     setlocal iskeyword-=_
 
                     " Get the first letter of each word
-                    " [[:alpha:]] is used instead of \w 
+                    " [[:alpha:]] is used instead of \w
                     " to catch extended accented characters
                     "
-                    let table_alias = substitute( 
-                                \ table_name, 
-                                \ '\<[[:alpha:]]\+\>_\?', 
-                                \ '\=strpart(submatch(0), 0, 1)', 
+                    let table_alias = substitute(
+                                \ table_name,
+                                \ '\<[[:alpha:]]\+\>_\?',
+                                \ '\=strpart(submatch(0), 0, 1)',
                                 \ 'g'
                                 \ )
                     " Restore original value
@@ -596,7 +648,7 @@ function! s:SQLCAddAlias(table_name, tab
     return cols
 endfunction
 
-function! s:SQLCGetObjectOwner(object) 
+function! s:SQLCGetObjectOwner(object)
     " The owner regex matches a word at the start of the string which is
     " followed by a dot, but doesn't include the dot in the result.
     " ^           - from beginning of line
@@ -609,7 +661,7 @@ function! s:SQLCGetObjectOwner(object)
     " let owner = matchstr( a:object, '^\s*\zs.*\ze\.' )
     let owner = matchstr( a:object, '^\("\|\[\)\?\zs\.\{-}\ze\("\|\]\)\?\.' )
     return owner
-endfunction 
+endfunction
 
 function! s:SQLCGetColumns(table_name, list_type)
     " Check if the table name was provided as part of the column name
@@ -636,7 +688,7 @@ function! s:SQLCGetColumns(table_name, l
     if list_idx > -1
         let table_cols = split(s:tbl_cols[list_idx], '\n')
     else
-        " Check if we have already cached the column list for this table 
+        " Check if we have already cached the column list for this table
         " by its alias, assuming the table_name provided was actually
         " the alias for the table instead
         "     select *
@@ -654,7 +706,7 @@ function! s:SQLCGetColumns(table_name, l
     " And the table ends in a "." or we are looking for a column list
     " if list_idx == -1 && (a:table_name =~ '\.' || b:sql_compl_type =~ 'column')
     " if list_idx == -1 && (a:table_name =~ '\.' || a:list_type =~ 'csv')
-    if list_idx == -1 
+    if list_idx == -1
          let saveY      = @y
          let saveSearch = @/
          let saveWScan  = &wrapscan
@@ -665,7 +717,7 @@ function! s:SQLCGetColumns(table_name, l
          setlocal nowrapscan
          " If . was entered, look at the word just before the .
          " We are looking for something like this:
-         "    select * 
+         "    select *
          "      from customer c
          "     where c.
          " So when . is pressed, we need to find 'c'
@@ -692,15 +744,15 @@ function! s:SQLCGetColumns(table_name, l
          " if query =~? '^\c\(select\)'
          if query =~? '^\(select\|update\|delete\)'
              let found = 1
-             "  \(\(\<\w\+\>\)\.\)\?   - 
+             "  \(\(\<\w\+\>\)\.\)\?   -
              " '\c\(from\|join\|,\).\{-}'  - Starting at the from clause (case insensitive)
              " '\zs\(\(\<\w\+\>\)\.\)\?' - Get the owner name (optional)
-             " '\<\w\+\>\ze' - Get the table name 
+             " '\<\w\+\>\ze' - Get the table name
              " '\s\+\<'.table_name.'\>' - Followed by the alias
              " '\s*\.\@!.*'  - Cannot be followed by a .
              " '\(\<where\>\|$\)' - Must be followed by a WHERE clause
              " '.*'  - Exclude the rest of the line in the match
-             " let table_name_new = matchstr(@y, 
+             " let table_name_new = matchstr(@y,
              "             \ '\c\(from\|join\|,\).\{-}'.
              "             \ '\zs\(\("\|\[\)\?.\{-}\("\|\]\)\.\)\?'.
              "             \ '\("\|\[\)\?.\{-}\("\|\]\)\?\ze'.
@@ -711,7 +763,16 @@ function! s:SQLCGetColumns(table_name, l
              "             \ '\(\<where\>\|$\)'.
              "             \ '.*'
              "             \ )
-             let table_name_new = matchstr(@y, 
+             "
+             "
+             " ''\c\(\<from\>\|\<join\>\|,\)\s*'  - Starting at the from clause (case insensitive)
+             " '\zs\(\("\|\[\)\?\w\+\("\|\]\)\?\.\)\?' - Get the owner name (optional)
+             " '\("\|\[\)\?\w\+\("\|\]\)\?\ze' - Get the table name
+             " '\s\+\%(as\s\+\)\?\<'.matchstr(table_name, '.\{-}\ze\.\?$').'\>' - Followed by the alias
+             " '\s*\.\@!.*'  - Cannot be followed by a .
+             " '\(\<where\>\|$\)' - Must be followed by a WHERE clause
+             " '.*'  - Exclude the rest of the line in the match
+             let table_name_new = matchstr(@y,
                          \ '\c\(\<from\>\|\<join\>\|,\)\s*'.
                          \ '\zs\(\("\|\[\)\?\w\+\("\|\]\)\?\.\)\?'.
                          \ '\("\|\[\)\?\w\+\("\|\]\)\?\ze'.
@@ -753,7 +814,7 @@ function! s:SQLCGetColumns(table_name, l
 
          " Return to previous location
          call cursor(curline, curcol)
-         
+
          if found == 0
              if g:loaded_dbext > 300
                  exec 'DBSetOption use_tbl_alias='.saveSettingAlias
@@ -762,7 +823,7 @@ function! s:SQLCGetColumns(table_name, l
              " Not a SQL statement, do not display a list
              return []
          endif
-    endif 
+    endif
 
     if empty(table_cols)
         " Specify silent mode, no messages to the user (tbl, 1)
--- a/runtime/compiler/erlang.vim
+++ b/runtime/compiler/erlang.vim
@@ -1,11 +1,13 @@
 " Vim compiler file
-" Compiler:	Erlang
-" Maintainer:	none, please volunteer!
-" Last Change:	2012 Jan 20
+" Compiler:     Erlang
+" Maintainer:	Dmitry Vasiliev <dima at hlabs dot org>
+" Last Change:	2012-02-13
 
 if exists("current_compiler")
   finish
 endif
 let current_compiler = "erlang"
 
-" TODO
+CompilerSet makeprg=erlc\ -Wall\ %
+
+CompilerSet errorformat=%f:%l:\ %m
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1,4 +1,4 @@
-*autocmd.txt*   For Vim version 7.3.  Last change: 2012 Feb 12
+*autocmd.txt*   For Vim version 7.3.  Last change: 2012 Feb 22
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -33,7 +33,7 @@ files matching *.c.  You can also use au
 features, such as editing compressed files (see |gzip-example|).  The usual
 place to put autocommands is in your .vimrc or .exrc file.
 
-							*E203* *E204* *E143*
+						*E203* *E204* *E143* *E855*
 WARNING: Using autocommands is very powerful, and may lead to unexpected side
 effects.  Be careful not to destroy your text.
 - It's a good idea to do some testing on an expendable copy of a file first.
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.3.  Last change: 2012 Feb 12
+*options.txt*	For Vim version 7.3.  Last change: 2012 Feb 22
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -5900,9 +5900,8 @@ A jump table for the options with a shor
 
 						*'shellcmdflag'* *'shcf'*
 'shellcmdflag' 'shcf'	string	(default: "-c";
-				 Win32, when 'shell' is cmd.exe: "/s /c";
-				 MS-DOS and Win32, when 'shell' neither is
-				 cmd.exe nor contains "sh" somewhere: "/c")
+				 MS-DOS and Win32, when 'shell' does not
+				 contain "sh" somewhere: "/c")
 			global
 			{not in Vi}
 	Flag passed to the shell to execute "!" and ":!" commands; e.g.,
@@ -6041,6 +6040,15 @@ A jump table for the options with a shor
 	0 and 2: use "shell 'shellcmdflag' cmd" to start external commands
 	1 and 3: use "shell cmd" to start external commands
 
+						*'shellxescape'* *'sxe'*
+'shellxescape' 'sxe'	string	(default: "";
+				 for MS-DOS and MS-Windows: "\"&|<>()@^")
+			global
+			{not in Vi}
+	When 'shellxquote' is set to "(" then the characters listed in this
+	option will be escaped with a '^' character.  This makes it possible
+	to execute most external commands with cmd.exe.
+
 						*'shellxquote'* *'sxq'*
 'shellxquote' 'sxq'	string	(default: "";
 					for Win32, when 'shell' is cmd.exe: "("
@@ -6065,16 +6073,6 @@ A jump table for the options with a shor
 	This option cannot be set from a |modeline| or in the |sandbox|, for
 	security reasons.
 
-						*'shellxescape'* *'sxe'*
-'shellxescape' 'sxe'	string	(default: "";
-				 for MS-DOS and MS-Windows: "\"&|<>()@^")
-			global
-			{not in Vi}
-	When 'shellxquote' is set to "(" then the characters listed in this
-	option will be escaped with a '^' character.  This makes it possible
-	to execute most external commands with cmd.exe.
-
-
 			*'shiftround'* *'sr'* *'noshiftround'* *'nosr'*
 'shiftround' 'sr'	boolean	(default off)
 			global
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -1,4 +1,4 @@
-*quickref.txt*  For Vim version 7.3.  Last change: 2011 Jun 12
+*quickref.txt*  For Vim version 7.3.  Last change: 2012 Feb 22
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -851,6 +851,7 @@ Short explanation of each option:		*opti
 'shellslash'	  'ssl'     use forward slash for shell file names
 'shelltemp'	  'stmp'    whether to use a temp file for shell commands
 'shelltype'	  'st'	    Amiga: influences how to use a shell
+'shellxescape'	  'sxe'     characters to escape when 'shellxquote' is (
 'shellxquote'	  'sxq'     like 'shellquote', but include redirection
 'shiftround'	  'sr'	    round indent to multiple of shiftwidth
 'shiftwidth'	  'sw'	    number of spaces to use for (auto)indent step
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -783,6 +783,7 @@
 'shellslash'	options.txt	/*'shellslash'*
 'shelltemp'	options.txt	/*'shelltemp'*
 'shelltype'	options.txt	/*'shelltype'*
+'shellxescape'	options.txt	/*'shellxescape'*
 'shellxquote'	options.txt	/*'shellxquote'*
 'shiftround'	options.txt	/*'shiftround'*
 'shiftwidth'	options.txt	/*'shiftwidth'*
@@ -852,6 +853,7 @@
 'swf'	options.txt	/*'swf'*
 'switchbuf'	options.txt	/*'switchbuf'*
 'sws'	options.txt	/*'sws'*
+'sxe'	options.txt	/*'sxe'*
 'sxq'	options.txt	/*'sxq'*
 'syn'	options.txt	/*'syn'*
 'synmaxcol'	options.txt	/*'synmaxcol'*
@@ -4241,6 +4243,7 @@ E851	gui_x11.txt	/*E851*
 E852	gui_x11.txt	/*E852*
 E853	eval.txt	/*E853*
 E854	options.txt	/*E854*
+E855	autocmd.txt	/*E855*
 E86	windows.txt	/*E86*
 E87	windows.txt	/*E87*
 E88	windows.txt	/*E88*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.3.  Last change: 2012 Feb 12
+*todo.txt*      For Vim version 7.3.  Last change: 2012 Feb 22
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -38,9 +38,15 @@ Go through more coverity reports.
 
 Discussion about canonicalization of Hebrew. (Ron Aaron, 2011 April 10)
 
+Stack trace of crash: http://vpaste.net/GBt9S
+(Alexandre Provencio)
+
 Once syntax and other runtime files have been fixed: add "set cp" to
 check.vim.  Use a function to run both with 'cp' and 'nocp'.
 
+Undo broken when pasting close to the last line. (Andrey Radev, 2012 Feb 14)
+Patch by Christian Brabandt, 2012 Feb 14.
+
 GTK: problem with 'L' in 'guioptions' changing the window width.
 (Aaron Cornelius, 2012 Feb 6)
 
@@ -48,6 +54,8 @@ Win32: When a directory name contains an
 complete the contents of the directory.  No escaping for the "!"? (Jan
 Stocker, 2012 Jan 5)
 
+Patch to speed up ga_grow(). (Dominique Pelle, 2012 Feb 13)
+
 Patch for "tab drop hoge" moving current window. (Higashi, 2012 Jan 31)
 ":tab drop buffer.c" always opens a new tab, also if buffer.c is already in an
 open window. (Herb Sitz, 2011 Nov 17)
@@ -79,6 +87,9 @@ URXVT:
 Patch for using QuickFixCmdPre for more commands. (Marcin Szamotulski, 2012
 Feb 1, update Feb 2)
 
+Patch for pasting in the Ex command line is slow. (Dominique Pelle, 2012 Feb
+19)
+
 When running Vim in silent ex mode, an existing swapfile causes Vim to wait
 for a user action without a prompt. (Maarten Billemont, 2012 Feb 3)
 Do give the prompt? Quit with an error?
@@ -87,6 +98,10 @@ When exiting with unsaved changes, selec
 dialog, there is no dialog to ask whether the existing file should be
 overwritten. (Felipe G. Nievinski, 2011 Dec 22)
 
+Patch for improved ":qa" behavior. (Hirohito Higashi, 2012 Feb 18)
+
+Recognize objcpp. (Austin Ziegler, 2012 Feb 15)
+
 7   Setting an option always sets "w_set_curswant", while this is only
     required for a few options.  Only do it for those options to avoid the
     side effect.
@@ -98,7 +113,7 @@ Carvalho merged the patch:  New version 
 
 Patch for option in 'cino' to specify more indent for continued conditions.
 (Lech Lorens, 2011 Nov 27)
-Isn't this already possible?
+Isn't this already possible?  Update 2012 Feb 15.
 
 Patch for using objcpp file type for headers files. Issue 44.
 
@@ -155,6 +170,9 @@ Plugin for Modeleasy. (Massimiliano Trip
 Updated syntax file for ssh_config, maintainer doesn't respond.
 (Leonard Ehrenfried, 2011 Sep 26)
 
+BufWinLeave triggers too late when quitting last window in a tab page. (Lech
+Lorens, 2012 Feb 21)
+
 "fC" doesn't position the cursor correctly when there are concealed
 characters.  Patch by Christian Brabandt, 2011 Oct 11)
 
@@ -959,6 +977,7 @@ Performance tests:
 - ~/vim/test/slowsearch
 - ~/vim/test/rgb.vim
 - ~/vim/text/FeiqCfg.xml (file from Netjune)
+- ~/vim/text/edl.svg  (also XML)
 - search for  a.*e*exn  in the vim executable.  Go to last line to use
   'hlsearch'.
 
--- a/runtime/optwin.vim
+++ b/runtime/optwin.vim
@@ -1,7 +1,7 @@
 " These commands create the option window.
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2011 Jun 13
+" Last Change:	2012 Feb 22
 
 " If there already is an option window, jump to that one.
 if bufwinnr("option-window") > 0
@@ -1064,6 +1064,8 @@ call append("$", "shellquote\tcharacter(
 call <SID>OptionG("shq", &shq)
 call append("$", "shellxquote\tlike 'shellquote' but include the redirection")
 call <SID>OptionG("sxq", &sxq)
+call append("$", "shellxescape\tcharacters to escape when 'shellxquote' is (")
+call <SID>OptionG("sxe", &sxe)
 call append("$", "shellcmdflag\targument for 'shell' to execute a command")
 call <SID>OptionG("shcf", &shcf)
 call append("$", "shellredir\tused to redirect command output to a file")
--- a/runtime/syntax/fasm.vim
+++ b/runtime/syntax/fasm.vim
@@ -1,10 +1,10 @@
 " Vim syntax file
 " Language:	Flat Assembler (FASM)
 " Maintainer:	Ron Aaron <ron@ronware.org>
-" Last Change:	2004 May 16
+" Last Change:	2012/02/13
 " Vim URL:	http://www.vim.org/lang.html
 " FASM Home:	http://flatassembler.net/
-" FASM Version: 1.52
+" FASM Version: 1.56
 
 if version < 600
   syntax clear
@@ -12,6 +12,9 @@ elseif exists("b:current_syntax")
   finish
 endif
 
+let s:cpo_save = &cpo
+set cpo&vim
+
 setlocal iskeyword=a-z,A-Z,48-57,.,_
 setlocal isident=a-z,A-Z,48-57,.,_
 syn case ignore
@@ -97,7 +100,7 @@ syn keyword fasmDirective 	align binary 
 syn keyword fasmDirective	elf entry executable export extern far fixups format gui
 syn keyword fasmDirective	import label ms mz native near notpageable pe public readable
 syn keyword fasmDirective	repeat resource section segment shareable stack times
-syn keyword fasmDirective	use16 use32 virtual wdm writeable
+syn keyword fasmDirective	use16 use32 virtual wdm writable writeable
 syn keyword fasmOperator 	as at defined eq eqtype from mod on ptr rva used
 
 syn match	fasmNumericOperator	"[+-/*]"
@@ -142,4 +145,8 @@ hi def link	fasmInstr keyword
 hi def link	fasmLabel label
 hi def link	fasmPrefix preproc
 let b:current_syntax = "fasm"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
 " vim: ts=8 sw=8 :
--- a/runtime/syntax/resolv.vim
+++ b/runtime/syntax/resolv.vim
@@ -1,11 +1,10 @@
 " Vim syntax file
 " Language: resolver configuration file
-" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
+" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
 " Original Maintaner: Radu Dineiu <littledragon@altern.org>
 " License: This file can be redistribued and/or modified under the same terms
 "   as Vim itself.
-" URL: http://trific.ath.cx/Ftp/vim/syntax/resolv.vim
-" Last Change: 2006-04-16
+" Last Change: 2012-02-21
 
 if version < 600
 	syntax clear
@@ -26,7 +25,8 @@ syn match resolvIPSpecial /\%(127\.\d\{1
 " General
 syn match resolvIP contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}/ contains=@resolvIPCluster
 syn match resolvIPNetmask contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\%(\%(\d\{1,4}\.\)\{,3}\d\{1,4}\)\)\?/ contains=resolvOperator,@resolvIPCluster
-syn match resolvHostname contained /\w\{-}\.[-0-9A-Za-z_\.]*/
+syn match resolvHostname contained /\w\{-}\.[-0-9A-Za-z_.]*/
+syn match resolvDomainname contained /[-0-9A-Za-z_.]\+/
 
 " Particular
 syn match resolvIPNameserver contained /\%(\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\s\|$\)\)\+/ contains=@resolvIPCluster
@@ -36,7 +36,7 @@ syn match resolvIPNetmaskSortList contai
 " Identifiers
 syn match resolvNameserver /^\s*nameserver\>/ nextgroup=resolvIPNameserver skipwhite
 syn match resolvLwserver /^\s*lwserver\>/ nextgroup=resolvIPNameserver skipwhite
-syn match resolvDomain /^\s*domain\>/ nextgroup=resolvHostname skipwhite
+syn match resolvDomain /^\s*domain\>/ nextgroup=resolvDomainname skipwhite
 syn match resolvSearch /^\s*search\>/ nextgroup=resolvHostnameSearch skipwhite
 syn match resolvSortList /^\s*sortlist\>/ nextgroup=resolvIPNetmaskSortList skipwhite
 syn match resolvOptions /^\s*options\>/ nextgroup=resolvOption skipwhite
@@ -61,6 +61,7 @@ if version >= 508 || !exists("did_config
 	HiLink resolvIP Number
 	HiLink resolvIPNetmask Number
 	HiLink resolvHostname String
+	HiLink resolvDomainname String
 	HiLink resolvOption String
 
 	HiLink resolvIPNameserver Number
--- a/runtime/syntax/reva.vim
+++ b/runtime/syntax/reva.vim
@@ -1,10 +1,10 @@
 " Vim syntax file
 " Language:	Reva Forth
-" Version:	7.1
-" Last Change:	2008/01/11
+" Version:	2011.2
+" Last Change:	2012/02/13
 " Maintainer:	Ron Aaron <ron@ronware.org>
 " URL:		http://ronware.org/reva/
-" Filetypes:	*.rf *.frt 
+" Filetypes:	*.rf *.frt
 " NOTE: 	You should also have the ftplugin/reva.vim file to set 'isk'
 
 " For version 5.x: Clear all syntax items and don't load
@@ -17,10 +17,13 @@ elseif exists("b:current_syntax")
    finish
 endif
 
+let s:cpo_save = &cpo
+set cpo&vim
+
 syn clear
 
 " Synchronization method
-syn sync ccomment 
+syn sync ccomment
 syn sync maxlines=100
 
 
@@ -39,7 +42,7 @@ syn region revaEOF start='\<|||\>' end='
 syn case match
 " basic mathematical and logical operators
 syn keyword revaoperators + - * / mod /mod negate abs min max umin umax
-syn keyword revaoperators and or xor not invert 1+ 1- 
+syn keyword revaoperators and or xor not invert 1+ 1-
 syn keyword revaoperators m+ */ */mod m* um* m*/ um/mod fm/mod sm/rem
 syn keyword revaoperators d+ d- dnegate dabs dmin dmax > < = >> << u< <>
 
@@ -53,10 +56,10 @@ syn keyword revastack >r r> r@ rdrop
 " address operations
 syn keyword revamemory @ ! +! c@ c! 2@ 2! align aligned allot allocate here free resize
 syn keyword revaadrarith chars char+ cells cell+ cell cell- 2cell+ 2cell- 3cell+ 4cell+
-syn keyword revamemblks move fill 
+syn keyword revamemblks move fill
 
 " conditionals
-syn keyword revacond if else then =if >if <if <>if if0  ;; catch throw 
+syn keyword revacond if else then =if >if <if <>if if0  ;; catch throw
 
 " iterations
 syn keyword revaloop while repeat until again
@@ -66,18 +69,18 @@ syn keyword revaloop do loop i j leave  
 syn match revaColonDef '\<noname:\|\<:\s+' contains=revaComment
 syn keyword revaEndOfColonDef ; ;inline
 syn keyword revadefine constant constant, variable create variable,
-syn keyword revadefine user value to +to defer! defer@ defer is does> immediate 
+syn keyword revadefine user value to +to defer! defer@ defer is does> immediate
 syn keyword revadefine compile literal ' [']
 
 " Built in words
 com! -nargs=+ Builtin syn keyword revaBuiltin <args>
 Builtin execute ahead interp bye >body here pad words make
 Builtin accept close cr creat delete ekey emit fsize ioerr key?
-Builtin mtime open/r open/rw read rename seek space spaces stat 
+Builtin mtime open/r open/rw read rename seek space spaces stat
 Builtin tell type type_ write (seek) (argv) (save) 0; 0drop;
 Builtin >class >lz >name >xt alias alias: appname argc asciiz, asciizl,
 Builtin body> clamp depth disassemble findprev fnvhash getenv here,
-Builtin iterate last! last@ later link lz> lzmax os parse/ peek 
+Builtin iterate last! last@ later link lz> lzmax os parse/ peek
 Builtin peek-n pop prior push put rp@ rpick save setenv slurp
 Builtin stack-empty? stack-iterate stack-size stack: THROW_BADFUNC
 Builtin THROW_BADLIB THROW_GENERIC used xt>size z,
@@ -88,21 +91,21 @@ Builtin chdir g32 k32 u32 getcwd getpid 
 Builtin (-lib) (bye) (call) (else) (find) (func) (here) (if (lib) (s0) (s^)
 Builtin (to~) (while) >in >rel ?literal appstart cold compiling? context? d0 default_class
 Builtin defer? dict dolstr dostr find-word h0 if) interp isa onexit
-Builtin onstartup pdoes pop>ebx prompt rel> rp0 s0 src srcstr state str0 then,> then> tib 
+Builtin onstartup pdoes pop>ebx prompt rel> rp0 s0 src srcstr state str0 then,> then> tib
 Builtin tp vector vector! word? xt? .ver revaver revaver# && '' 'constant 'context
 Builtin 'create 'defer 'does 'forth 'inline 'macro 'macront 'notail 'value 'variable
 Builtin (.r) (context) (create) (header) (hide) (inline) (p.r) (words~) (xfind)
 Builtin ++ -- , -2drop -2nip -link -swap . .2x .classes .contexts .funcs .libs .needs .r
 Builtin .rs .x 00; 0do 0if 1, 2, 3, 2* 2/ 2constant 2variable 3dup 4dup ;then >base >defer
 Builtin >rr ? ?do @execute @rem appdir argv as back base base! between chain cleanup-libs
-Builtin cmove> context?? ctrl-c ctx>name data: defer: defer@def dictgone do_cr eleave 
-Builtin endcase endof eval exception exec false find func: header heapgone help help/ 
+Builtin cmove> context?? ctrl-c ctx>name data: defer: defer@def dictgone do_cr eleave
+Builtin endcase endof eval exception exec false find func: header heapgone help help/
 Builtin hex# hide inline{ last lastxt lib libdir literal, makeexename mnotail ms ms@
-Builtin newclass noop nosavedict notail nul of off on p: padchar parse parseln 
-Builtin parsews rangeof rdepth remains reset reva revaused rol8 rr> scratch setclass sp 
+Builtin newclass noop nosavedict notail nul of off on p: padchar parse parseln
+Builtin parsews rangeof rdepth remains reset reva revaused rol8 rr> scratch setclass sp
 Builtin strof super> temp time&date true turnkey? undo vfunc: w! w@
 Builtin xchg xchg2 xfind xt>name xwords { {{ }} }  _+ _1+ _1- pathsep case \||
-" p[ [''] [ ['] 
+" p[ [''] [ [']
 
 
 " debugging
@@ -116,11 +119,11 @@ syn keyword revadebug .s dump see
 " syn region revaCharOps start=+."\s+ skip=+\\"+ end=+"+
 
 " char-number conversion
-syn keyword revaconversion s>d >digit digit> >single >double >number >float 
+syn keyword revaconversion s>d >digit digit> >single >double >number >float
 
 " contexts
-syn keyword revavocs forth macro inline  
-syn keyword revavocs context: 
+syn keyword revavocs forth macro inline
+syn keyword revavocs context:
 syn match revavocs /\<\~[^~ ]*/
 syn match revavocs /[^~ ]*\~\>/
 
@@ -135,7 +138,7 @@ syn match revainteger "\<'.\>"
 
 " Strings
 " syn region revaString start=+\.\?\"+ end=+"+ end=+$+
-syn region revaString start=/"/ skip=/\\"/ end=/"/ 
+syn region revaString start=/"/ skip=/\\"/ end=/"/
 
 " Comments
 syn region revaComment start='\\S\s' end='.*' contains=revaTodo
@@ -187,5 +190,7 @@ if !exists("did_reva_syntax_inits")
 endif
 
 let b:current_syntax = "reva"
+let &cpo = s:cpo_save
+unlet s:cpo_save
 
 " vim: ts=8:sw=4:nocindent:smartindent:
--- a/runtime/syntax/sshconfig.vim
+++ b/runtime/syntax/sshconfig.vim
@@ -2,9 +2,7 @@
 " Language:	OpenSSH client configuration file (ssh_config)
 " Author:	David Necas (Yeti)
 " Maintainer:   Leonard Ehrenfried <leonard.ehrenfried@web.de>	
-" Modified By:	Thilo Six
-" Originally:	2009-07-09
-" Last Change:	2011 Oct 31
+" Last Change:	2012 Feb 19
 " SSH Version:	5.9p1
 "
 
@@ -92,7 +90,8 @@ syn match sshconfigNumber "\d\+"
 syn match sshconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>"
 syn match sshconfigHostPort "\<\([-a-zA-Z0-9]\+\.\)\+[-a-zA-Z0-9]\{2,}\(:\d\+\)\?\>"
 syn match sshconfigHostPort "\<\(\x\{,4}:\)\+\x\{,4}[:/]\d\+\>"
-
+syn match sshconfigHostPort "\(Host \)\@<=.\+"
+syn match sshconfigHostPort "\(HostName \)\@<=.\+"
 
 " case off
 syn case ignore