diff --git a/runtime/autoload/sqlcomplete.vim b/runtime/autoload/sqlcomplete.vim
index 5599c0d..360f7e6 100644
--- 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 @@
 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_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 @@
 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 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 @@
             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 @@
             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 @@
                 " 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 @@
                 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 @@
     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 @@
 
     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 @@
 
         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 @@
             " 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 @@
             " 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 = ''
-            endif
+            " 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
+            " 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 @@
                 " 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 @@
 
     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 @@
     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 @@
 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 @@
 	" 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 @@
 	" 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 @@
 
 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 @@
         " 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 @@
     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 @@
                     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 @@
     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 @@
     " 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 @@
     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 @@
     " 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 @@
          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 @@
          " 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 @@
              "             \ '\(\<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 @@
 
          " 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 @@
              " 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)
diff --git a/runtime/compiler/erlang.vim b/runtime/compiler/erlang.vim
index 867ba6b..e177a27 100644
--- 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
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 8f50eb8..d6338ee 100644
--- 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 @@
 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.
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 2836be5..23ac10a 100644
--- 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 @@
 
 						*'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 @@
 	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 @@
 	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
diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt
index c14818a..1fef217 100644
--- 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 @@
 '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
diff --git a/runtime/doc/tags b/runtime/doc/tags
index ab2bf3e..8d7e1d6 100644
--- 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 @@
 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*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 925efb6..74585d7 100644
--- 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 @@
 
 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 @@
 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 @@
 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 @@
 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 @@
 
 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 @@
 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 @@
 - ~/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'.
 
diff --git a/runtime/optwin.vim b/runtime/optwin.vim
index 4ff90bb..dd36112 100644
--- 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 <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")
diff --git a/runtime/syntax/fasm.vim b/runtime/syntax/fasm.vim
index 01bdc83..696e05b 100644
--- 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 @@
   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	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	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 :
diff --git a/runtime/syntax/resolv.vim b/runtime/syntax/resolv.vim
index 6ec42d2..1c0f846 100644
--- 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 @@
 " 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 @@
 " 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 @@
 	HiLink resolvIP Number
 	HiLink resolvIPNetmask Number
 	HiLink resolvHostname String
+	HiLink resolvDomainname String
 	HiLink resolvOption String
 
 	HiLink resolvIPNameserver Number
diff --git a/runtime/syntax/reva.vim b/runtime/syntax/reva.vim
index 7e11ffe..03dfc9d 100644
--- 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 @@
    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 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 @@
 " 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 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 (-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 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 @@
 
 " 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 @@
 endif
 
 let b:current_syntax = "reva"
+let &cpo = s:cpo_save
+unlet s:cpo_save
 
 " vim: ts=8:sw=4:nocindent:smartindent:
diff --git a/runtime/syntax/sshconfig.vim b/runtime/syntax/sshconfig.vim
index c2d97dd..15e3b01 100644
--- 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 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
