From 34feacbccea905d3a71ccf9175d872c50f370705 Mon Sep 17 00:00:00 2001
From: Bram Moolenaar <Bram@vim.org>
Date: Wed, 5 Dec 2012 19:01:43 +0100
Subject: [PATCH] Update runtime files.

---
 runtime/autoload/sqlcomplete.vim              | 133 ++++++--
 runtime/autoload/syntaxcomplete.vim           | 114 ++++---
 runtime/doc/eval.txt                          |  25 +-
 runtime/doc/tags                              |   2 +
 runtime/doc/todo.txt                          |  52 ++-
 runtime/doc/uganda.txt                        |   3 +-
 runtime/doc/various.txt                       |  50 +--
 runtime/ftplugin/sql.vim                      | 157 +++++----
 runtime/indent/sqlanywhere.vim                |  96 +++---
 runtime/indent/yaml.vim                       | 132 ++++++++
 runtime/lang/menu_cs_cz.iso_8859-2.vim        | 237 ++++++++------
 runtime/lang/menu_cs_cz.latin1.vim            |   2 +-
 runtime/lang/menu_cs_cz.utf-8.vim             | 308 ++++++++++++++++++
 .../lang/menu_czech_czech_republic.1250.vim   | 235 +++++++------
 .../lang/menu_czech_czech_republic.ascii.vim  | 237 ++++++++------
 15 files changed, 1236 insertions(+), 547 deletions(-)
 create mode 100644 runtime/indent/yaml.vim
 create mode 100644 runtime/lang/menu_cs_cz.utf-8.vim

diff --git a/runtime/autoload/sqlcomplete.vim b/runtime/autoload/sqlcomplete.vim
index 360f7e6cec..f830965c41 100644
--- a/runtime/autoload/sqlcomplete.vim
+++ b/runtime/autoload/sqlcomplete.vim
@@ -1,23 +1,43 @@
 " Vim OMNI completion script for SQL
 " Language:    SQL
 " Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com>
-" Version:     12.0
-" Last Change: 2012 Feb 08
+" Version:     14.0
+" Last Change: 2012 Dec 04
+" Homepage:    http://www.vim.org/scripts/script.php?script_id=1572
 " Usage:       For detailed help
 "              ":help sql.txt"
 "              or ":help ft-sql-omni"
 "              or read $VIMRUNTIME/doc/sql.txt
 
 " History
-" Version 12.0
+"
+" Version 14.0 (Dec 2012)
+"     - BF: Added check for cpo
+"
+" Version 13.0 (Dec 2012)
+"     - NF: When completing column lists or drilling into a table
+"           and g:omni_sql_include_owner is enabled, the
+"           only the table name would be replaced with the column
+"           list instead of the table name and owner (if specified).
+"     - NF: When completing column lists using table aliases
+"           and g:omni_sql_include_owner is enabled, account
+"           for the owner name when looking up the table
+"           list instead of the table name and owner (if specified).
+"     - BF: When completing column lists or drilling into a table
+"           and g:omni_sql_include_owner is enabled, the
+"           column list could often not be found for the table.
+"     - BF: When OMNI popped up, possibly the wrong word
+"           would be replaced for column and column list options.
+"
+" Version 12.0 (Feb 2012)
 "     - 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 
+"       consider the partial name to be a table or table alias for the
 "       query and attempt to match on it.
 "
-" Version 11.0
+" Version 11.0 (Jan 2012)
 "     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
@@ -40,7 +60,7 @@
 "         - Prepends error message with SQLComplete so you know who issued
 "           the error.
 "
-" Version 9.0
+" Version 9.0 (May 2010)
 "     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
 "     aliases for more robust table name and column name code completion.
@@ -51,10 +71,10 @@
 "     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
+" Version 7.0 (Jan 2010)
 "     Better handling of object names
 "
-" Version 6.0
+" Version 6.0 (Apr 2008)
 "     Supports object names with spaces "my table name"
 "
 " Set completion with CTRL-X CTRL-O to autoloaded function.
@@ -71,7 +91,9 @@ endif
 if exists('g:loaded_sql_completion')
     finish
 endif
-let g:loaded_sql_completion = 120
+let g:loaded_sql_completion = 130
+let s:keepcpo= &cpo
+set cpo&vim
 
 " Maintains filename of dictionary
 let s:sql_file_table        = ""
@@ -137,6 +159,13 @@ if !exists('g:omni_sql_default_compl_type')
 endif
 
 " This function is used for the 'omnifunc' option.
+" It is called twice by omni and it is responsible
+" for returning the completion list of items.
+" But it must also determine context of what to complete
+" and what to "replace" with the completion.
+" The a:base, is replaced directly with what the user
+" chooses from the choices.
+" The s:prepend provides context for the completion.
 function! sqlcomplete#Complete(findstart, base)
 
     " Default to table name completion
@@ -145,6 +174,7 @@ function! sqlcomplete#Complete(findstart, base)
     if exists('b:sql_compl_type')
         let compl_type = b:sql_compl_type
     endif
+    let begindot = 0
 
     " First pass through this function determines how much of the line should
     " be replaced by whatever is chosen from the completion list
@@ -153,7 +183,6 @@ function! sqlcomplete#Complete(findstart, base)
         let line     = getline('.')
         let start    = col('.') - 1
         let lastword = -1
-        let begindot = 0
         " Check if the first character is a ".", for column completion
         if line[start - 1] == '.'
             let begindot = 1
@@ -179,7 +208,10 @@ function! sqlcomplete#Complete(findstart, base)
                 " 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.
+                " Unless g:omni_sql_include_owner == 1, then we can
+                " include the ownername.
                 if lastword != -1 && compl_type == 'column'
+                            \ && g:omni_sql_include_owner == 0
                     break
                 endif
                 " If column completion was specified stop at the "." if
@@ -191,7 +223,7 @@ function! sqlcomplete#Complete(findstart, base)
                 " 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' &&
+                            \ compl_type =~ '\<\(table\|view\|procedure\|column\|column_csv\)\>' &&
                             \ g:omni_sql_include_owner == 0
                     let lastword = start
                     break
@@ -288,6 +320,12 @@ function! sqlcomplete#Complete(findstart, base)
             let table  = matchstr( base, '^\(.*\.\)\?\zs.*\ze\..*' )
             let column = matchstr( base, '.*\.\zs.*' )
 
+            if g:omni_sql_include_owner == 1 && owner == '' && table != '' && column != ''
+                let owner  = table
+                let table  = column
+                let column = ''
+            endif
+
             " It is pretty well impossible to determine if the user
             " has entered:
             "    owner.table
@@ -370,7 +408,16 @@ function! sqlcomplete#Complete(findstart, base)
                 let list_type     = 'csv'
             endif
 
-            let compl_list  = s:SQLCGetColumns(table, list_type)
+            " If we are including the OWNER for the objects, then for
+            " table completion, if we have it, it should be included
+            " as there can be the same table names in a database yet
+            " with different owner names.
+            if g:omni_sql_include_owner == 1 && owner != '' && table != ''
+                let compl_list  = s:SQLCGetColumns(owner.'.'.table, list_type)
+            else
+                let compl_list  = s:SQLCGetColumns(table, list_type)
+            endif
+
             if column != ''
                 " If no column prefix has been provided and the table
                 " name was provided, append it to each of the items
@@ -393,11 +440,14 @@ function! sqlcomplete#Complete(findstart, base)
         endif
     elseif compl_type == 'resetCache'
         " Reset all cached items
-        let s:tbl_name  = []
-        let s:tbl_alias = []
-        let s:tbl_cols  = []
-        let s:syn_list  = []
-        let s:syn_value = []
+        let s:tbl_name           = []
+        let s:tbl_alias          = []
+        let s:tbl_cols           = []
+        let s:syn_list           = []
+        let s:syn_value          = []
+        let s:sql_file_table     = ""
+        let s:sql_file_procedure = ""
+        let s:sql_file_view      = ""
 
         let msg = "All SQL cached items have been removed."
         call s:SQLCWarningMsg(msg)
@@ -423,12 +473,27 @@ function! sqlcomplete#Complete(findstart, base)
         " let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|\\(\\.\\)\\?'.base.'\\)"'
         " let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|\\([^.]*\\)\\?'.base.'\\)"'
         let compl_list = filter(deepcopy(compl_list), expr)
+
+        if empty(compl_list) && compl_type == 'table' && base =~ '\.$'
+            " It is possible we could be looking for column name completion
+            " and the user simply hit C-X C-O to lets try it as well
+            " since we had no hits with the tables.
+            " If the base ends with a . it is hard to know if we are
+            " completing table names or column names.
+            let list_type = ''
+
+            let compl_list  = s:SQLCGetColumns(base, list_type)
+        endif
     endif
 
     if exists('b:sql_compl_savefunc') && b:sql_compl_savefunc != ""
         let &omnifunc = b:sql_compl_savefunc
     endif
 
+    if empty(compl_list)
+        call s:SQLCWarningMsg( 'Could not find type['.compl_type.'] using prepend[.'.s:prepended.'] base['.a:base.']' )
+    endif
+
     return compl_list
 endfunc
 
@@ -664,8 +729,26 @@ function! s:SQLCGetObjectOwner(object)
 endfunction
 
 function! s:SQLCGetColumns(table_name, list_type)
+    if a:table_name =~ '\.'
+        " Check if the owner/creator has been specified
+        let owner  = matchstr( a:table_name, '^\zs.*\ze\..*\..*' )
+        let table  = matchstr( a:table_name, '^\(.*\.\)\?\zs.*\ze\..*' )
+        let column = matchstr( a:table_name, '.*\.\zs.*' )
+
+        if g:omni_sql_include_owner == 1 && owner == '' && table != '' && column != ''
+            let owner  = table
+            let table  = column
+            let column = ''
+        endif
+    else
+        let owner  = ''
+        let table  = matchstr(a:table_name, '^["\[\]a-zA-Z0-9_ ]\+\ze\.\?')
+        let column = ''
+    endif
+
     " Check if the table name was provided as part of the column name
-    let table_name   = matchstr(a:table_name, '^["\[\]a-zA-Z0-9_ ]\+\ze\.\?')
+    " let table_name   = matchstr(a:table_name, '^["\[\]a-zA-Z0-9_ ]\+\ze\.\?')
+    let table_name   = table
     let table_cols   = []
     let table_alias  = ''
     let move_to_top  = 1
@@ -786,7 +869,12 @@ function! s:SQLCGetColumns(table_name, list_type)
 
              if table_name_new != ''
                  let table_alias = table_name
-                 let table_name  = matchstr( table_name_new, '^\(.*\.\)\?\zs.*\ze' )
+                 if g:omni_sql_include_owner == 1
+                    let table_name  = matchstr( table_name_new, '^\zs\(.\{-}\.\)\?\(.\{-}\.\)\?.*\ze' )
+                 else
+                     " let table_name  = matchstr( table_name_new, '^\(.*\.\)\?\zs.*\ze' )
+                    let table_name  = matchstr( table_name_new, '^\(.\{-}\.\)\?\zs\(.\{-}\.\)\?.*\ze' )
+                 endif
 
                  let list_idx = index(s:tbl_name, table_name, 0, &ignorecase)
                  if list_idx > -1
@@ -828,7 +916,8 @@ function! s:SQLCGetColumns(table_name, list_type)
     if empty(table_cols)
         " Specify silent mode, no messages to the user (tbl, 1)
         " Specify do not comma separate (tbl, 1, 1)
-        let table_cols_str = DB_getListColumn(table_name, 1, 1)
+        " let table_cols_str = DB_getListColumn(table_name, 1, 1)
+        let table_cols_str = DB_getListColumn((owner!=''?owner.'.':'').table_name, 1, 1)
 
         if table_cols_str != ""
             let s:tbl_name  = add( s:tbl_name,  table_name )
@@ -854,3 +943,7 @@ function! s:SQLCGetColumns(table_name, list_type)
 
     return table_cols
 endfunction
+"  Restore:
+let &cpo= s:keepcpo
+unlet s:keepcpo
+" vim: ts=4 fdm=marker
diff --git a/runtime/autoload/syntaxcomplete.vim b/runtime/autoload/syntaxcomplete.vim
index 9a1474f5ef..e3ea0e2d81 100644
--- a/runtime/autoload/syntaxcomplete.vim
+++ b/runtime/autoload/syntaxcomplete.vim
@@ -1,22 +1,26 @@
 " Vim completion script
 " Language:    All languages, uses existing syntax highlighting rules
 " Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com>
-" Version:     10.0
-" Last Change: 2012 Oct 20
-" Usage:       For detailed help, ":help ft-syntax-omni" 
+" Version:     11.0
+" Last Change: 2012 Dec 04
+" Usage:       For detailed help, ":help ft-syntax-omni"
 
 " History
 "
+" Version 11.0
+"     Corrected which characters required escaping during
+"     substitution calls.
+"
 " Version 10.0
 "     Cycle through all the character ranges specified in the
 "     iskeyword option and build a list of valid word separators.
-"     Prior to this change, only actual characters were used, 
-"     where for example ASCII "45" == "-".  If "45" were used 
-"     in iskeyword the hyphen would not be picked up.  
+"     Prior to this change, only actual characters were used,
+"     where for example ASCII "45" == "-".  If "45" were used
+"     in iskeyword the hyphen would not be picked up.
 "     This introduces a new option, since the character ranges
 "     specified could be multibyte:
 "         let g:omni_syntax_use_single_byte = 1
-"     This by default will only allow single byte ASCII 
+"     This by default will only allow single byte ASCII
 "     characters to be added and an additional check to ensure
 "     the charater is printable (see documentation for isprint).
 "
@@ -32,7 +36,7 @@
 " Version 7.0
 "     Updated syntaxcomplete#OmniSyntaxList()
 "         - Looking up the syntax groups defined from a syntax file
-"           looked for only 1 format of {filetype}GroupName, but some 
+"           looked for only 1 format of {filetype}GroupName, but some
 "           syntax writers use this format as well:
 "               {b:current_syntax}GroupName
 "           OmniSyntaxList() will now check for both if the first
@@ -40,11 +44,11 @@
 "
 " Version 6.0
 "     Added syntaxcomplete#OmniSyntaxList()
-"         - Allows other plugins to use this for their own 
+"         - Allows other plugins to use this for their own
 "           purposes.
 "         - It will return a List of all syntax items for the
-"           syntax group name passed in.  
-"         - XPTemplate for SQL will use this function via the 
+"           syntax group name passed in.
+"         - XPTemplate for SQL will use this function via the
 "           sqlcomplete plugin to populate a Choose box.
 "
 " Version 5.0
@@ -54,7 +58,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.
@@ -64,9 +68,9 @@ if exists('+omnifunc')
 endif
 
 if exists('g:loaded_syntax_completion')
-    finish 
+    finish
 endif
-let g:loaded_syntax_completion = 100
+let g:loaded_syntax_completion = 110
 
 " Turn on support for line continuations when creating the script
 let s:cpo_save = &cpo
@@ -190,7 +194,7 @@ endfunc
 function! syntaxcomplete#OmniSyntaxList(...)
     if a:0 > 0
         let parms = []
-        if 3 == type(a:1) 
+        if 3 == type(a:1)
             let parms = a:1
         elseif 1 == type(a:1)
             let parms = split(a:1, ',')
@@ -204,7 +208,7 @@ endfunc
 function! OmniSyntaxList(...)
     let list_parms = []
     if a:0 > 0
-        if 3 == type(a:1) 
+        if 3 == type(a:1)
             let list_parms = a:1
         elseif 1 == type(a:1)
             let list_parms = split(a:1, ',')
@@ -240,18 +244,18 @@ function! OmniSyntaxList(...)
 
     let saveL = @l
     let filetype = substitute(&filetype, '\.', '_', 'g')
-    
+
     if empty(list_parms)
         " Default the include group to include the requested syntax group
         let syntax_group_include_{filetype} = ''
         " Check if there are any overrides specified for this filetype
         if exists('g:omni_syntax_group_include_'.filetype)
             let syntax_group_include_{filetype} =
-                        \ substitute( g:omni_syntax_group_include_{filetype},'\s\+','','g') 
+                        \ substitute( g:omni_syntax_group_include_{filetype},'\s\+','','g')
             let list_parms = split(g:omni_syntax_group_include_{filetype}, ',')
             if syntax_group_include_{filetype} =~ '\w'
-                let syntax_group_include_{filetype} = 
-                            \ substitute( syntax_group_include_{filetype}, 
+                let syntax_group_include_{filetype} =
+                            \ substitute( syntax_group_include_{filetype},
                             \ '\s*,\s*', '\\|', 'g'
                             \ )
             endif
@@ -261,11 +265,11 @@ function! OmniSyntaxList(...)
     endif
 
     " Loop through all the syntax groupnames, and build a
-    " syntax file which contains these names.  This can 
+    " syntax file which contains these names.  This can
     " work generically for any filetype that does not already
     " have a plugin defined.
     " This ASSUMES the syntax groupname BEGINS with the name
-    " of the filetype.  From my casual viewing of the vim7\syntax 
+    " of the filetype.  From my casual viewing of the vim7\syntax
     " directory this is true for almost all syntax definitions.
     " As an example, the SQL syntax groups have this pattern:
     "     sqlType
@@ -278,7 +282,7 @@ function! OmniSyntaxList(...)
     let syntax_full = "\n".@l
     let @l = saveL
 
-    if syntax_full =~ 'E28' 
+    if syntax_full =~ 'E28'
                 \ || syntax_full =~ 'E411'
                 \ || syntax_full =~ 'E415'
                 \ || syntax_full =~ 'No Syntax items'
@@ -288,7 +292,7 @@ function! OmniSyntaxList(...)
     let filetype = substitute(&filetype, '\.', '_', 'g')
 
     let list_exclude_groups = []
-    if a:0 > 0 
+    if a:0 > 0
         " Do nothing since we have specific a specific list of groups
     else
         " Default the exclude group to nothing
@@ -296,11 +300,11 @@ function! OmniSyntaxList(...)
         " Check if there are any overrides specified for this filetype
         if exists('g:omni_syntax_group_exclude_'.filetype)
             let syntax_group_exclude_{filetype} =
-                        \ substitute( g:omni_syntax_group_exclude_{filetype},'\s\+','','g') 
+                        \ substitute( g:omni_syntax_group_exclude_{filetype},'\s\+','','g')
             let list_exclude_groups = split(g:omni_syntax_group_exclude_{filetype}, ',')
-            if syntax_group_exclude_{filetype} =~ '\w' 
-                let syntax_group_exclude_{filetype} = 
-                            \ substitute( syntax_group_exclude_{filetype}, 
+            if syntax_group_exclude_{filetype} =~ '\w'
+                let syntax_group_exclude_{filetype} =
+                            \ substitute( syntax_group_exclude_{filetype},
                             \ '\s*,\s*', '\\|', 'g'
                             \ )
             endif
@@ -317,14 +321,14 @@ function! OmniSyntaxList(...)
     while ftindex > -1
         let ft_part_name = matchstr( &filetype, '\w\+', ftindex )
 
-        " Syntax rules can contain items for more than just the current 
+        " Syntax rules can contain items for more than just the current
         " filetype.  They can contain additional items added by the user
         " via autocmds or their vimrc.
         " Some syntax files can be combined (html, php, jsp).
         " We want only items that begin with the filetype we are interested in.
         let next_group_regex = '\n' .
                     \ '\zs'.ft_part_name.'\w\+\ze'.
-                    \ '\s\+xxx\s\+' 
+                    \ '\s\+xxx\s\+'
         let index    = 0
         let index    = match(syntax_full, next_group_regex, index)
 
@@ -338,11 +342,11 @@ function! OmniSyntaxList(...)
             "     syn keyword {syntax_filename}Keyword  values ...
             "     let b:current_syntax = "mysql"
             " So, we will make the format of finding the syntax group names
-            " a bit more flexible and look for both if the first fails to 
+            " a bit more flexible and look for both if the first fails to
             " find a match.
             let next_group_regex = '\n' .
                         \ '\zs'.b:current_syntax.'\w\+\ze'.
-                        \ '\s\+xxx\s\+' 
+                        \ '\s\+xxx\s\+'
             let index    = 0
             let index    = match(syntax_full, next_group_regex, index)
         endif
@@ -356,9 +360,9 @@ function! OmniSyntaxList(...)
                     let get_syn_list = 0
                 endif
             endfor
-        
+
             " This code is no longer needed in version 6.0 since we have
-            " augmented the syntax list command to only retrieve the syntax 
+            " augmented the syntax list command to only retrieve the syntax
             " groups we are interested in.
             "
             " if get_syn_list == 1
@@ -370,7 +374,7 @@ function! OmniSyntaxList(...)
             " endif
 
             if get_syn_list == 1
-                " Pass in the full syntax listing, plus the group name we 
+                " Pass in the full syntax listing, plus the group name we
                 " are interested in.
                 let extra_syn_list = s:SyntaxCSyntaxGroupItems(group_name, syntax_full)
                 let syn_list = syn_list . extra_syn_list . "\n"
@@ -424,7 +428,7 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
     "     \|           - 2nd potential match
     "     \%$          - matches end of the file or string
     "     \)           - end a group
-    let syntax_group = matchstr(a:syntax_full, 
+    let syntax_group = matchstr(a:syntax_full,
                 \ "\n".a:group_name.'\s\+xxx\s\+\zs.\{-}\ze\(\n\w\|\%$\)'
                 \ )
 
@@ -434,42 +438,42 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
 
         " We only want the words for the lines begining with
         " containedin, but there could be other items.
-        
+
         " Tried to remove all lines that do not begin with contained
         " but this does not work in all cases since you can have
         "    contained nextgroup=...
         " So this will strip off the ending of lines with known
         " keywords.
-        let syn_list = substitute( 
+        let syn_list = substitute(
                     \    syntax_group, '\<\('.
                     \    substitute(
                     \      escape(s:syn_remove_words, '\\/.*$^~[]')
                     \      , ',', '\\|', 'g'
                     \    ).
                     \    '\).\{-}\%($\|'."\n".'\)'
-                    \    , "\n", 'g' 
+                    \    , "\n", 'g'
                     \  )
 
         " Now strip off the newline + blank space + contained.
         " Also include lines with nextgroup=@someName skip_key_words syntax_element
-        let syn_list = substitute( 
+        let syn_list = substitute(
                     \    syn_list, '\%(^\|\n\)\@<=\s*\<\(contained\|nextgroup=\)'
-                    \    , "", 'g' 
+                    \    , "", 'g'
                     \ )
 
         " This can leave lines like this
         "     =@vimMenuList  skipwhite onoremenu
         " Strip the special option keywords first
         "     :h :syn-skipwhite*
-        let syn_list = substitute( 
+        let syn_list = substitute(
                     \    syn_list, '\<\(skipwhite\|skipnl\|skipempty\)\>'
-                    \    , "", 'g' 
+                    \    , "", 'g'
                     \ )
 
         " Now remove the remainder of the nextgroup=@someName lines
-        let syn_list = substitute( 
+        let syn_list = substitute(
                     \    syn_list, '\%(^\|\n\)\@<=\s*\(@\w\+\)'
-                    \    , "", 'g' 
+                    \    , "", 'g'
                     \ )
 
         if b:omni_syntax_use_iskeyword == 0
@@ -484,17 +488,17 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
                 " Numeric values convert to their ASCII equivalent using the
                 " nr2char() function.
                 "     &       38
-                "     *       42 
+                "     *       42
                 "     +       43
-                "     -       45 
+                "     -       45
                 "     ^       94
-                " Iterate through all numeric specifications and convert those 
+                " Iterate through all numeric specifications and convert those
                 " to their ascii equivalent ensuring the character is printable.
                 " If so, add it to the list.
                 let accepted_chars = ''
                 for item in split(&iskeyword, ',')
                     if item =~ '-'
-                        " This is a character range (ie 47-58), 
+                        " This is a character range (ie 47-58),
                         " cycle through each character within the range
                         let [b:start, b:end] = split(item, '-')
                         for range_item in range( b:start, b:end )
@@ -520,7 +524,11 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
                     endif
                 endfor
                 " Escape special regex characters
-                let accepted_chars = escape(accepted_chars, '\\/.*$^~[]' )
+                " Looks like the wrong chars are escaped.  In a collection,
+                "      :h /[]
+                "      only `]', `\', `-' and `^' are special:
+                " let accepted_chars = escape(accepted_chars, '\\/.*$^~[]' )
+                let accepted_chars = escape(accepted_chars, ']\-^' )
                 " Remove all characters that are not acceptable
                 let syn_list = substitute( syn_list, '[^A-Za-z'.accepted_chars.']', ' ', 'g' )
             else
@@ -534,7 +542,11 @@ function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full )
                 " Remove all commas
                 let accept_chars = substitute(accept_chars, ',', '', 'g')
                 " Escape special regex characters
-                let accept_chars = escape(accept_chars, '\\/.*$^~[]' )
+                " Looks like the wrong chars are escaped.  In a collection,
+                "      :h /[]
+                "      only `]', `\', `-' and `^' are special:
+                " let accept_chars = escape(accept_chars, '\\/.*$^~[]' )
+                let accept_chars = escape(accept_chars, ']\-^' )
                 " Remove all characters that are not acceptable
                 let syn_list = substitute( syn_list, '[^0-9A-Za-z_'.accept_chars.']', ' ', 'g' )
             endif
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 2bcd21e3e6..6057d61a38 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 7.3.  Last change: 2012 Nov 21
+*eval.txt*	For Vim version 7.3.  Last change: 2012 Dec 05
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -4874,8 +4874,27 @@ round({expr})							*round()*
 			echo round(-4.5)
 <			-5.0
 		{only available when compiled with the |+float| feature}
-		
-		
+
+screencol()							*screencol()*
+		The result is a Number, which is the current screen column of
+		the cursor. The leftmost column has number 1.
+		This function is mainly used for testing.
+
+		Note: Always returns the current screen column, thus if used
+		in a command (e.g. ":echo screencol()") it will return the
+		column inside the command line, which is 1 when the command is
+		executed. To get the cursor position in the file use one of
+		the following mappings: >
+			nnoremap <expr> GG ":echom ".screencol()."\n"
+			nnoremap <silent> GG :echom screencol()<CR>
+<
+screenrow()							*screenrow()*
+		The result is a Number, which is the current screen row of the
+		cursor.  The top line has number one.
+		This function is mainly used for testing.
+
+		Note: Same restrictions as with |screencol()|.
+
 search({pattern} [, {flags} [, {stopline} [, {timeout}]]])	*search()*
 		Search for regexp pattern {pattern}.  The search starts at the
 		cursor position (you can use |cursor()| to set it).
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 9e33ec746b..5af1e18a06 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -7481,6 +7481,8 @@ save-file	editing.txt	/*save-file*
 save-settings	starting.txt	/*save-settings*
 scheme.vim	syntax.txt	/*scheme.vim*
 scp	pi_netrw.txt	/*scp*
+screencol()	eval.txt	/*screencol()*
+screenrow()	eval.txt	/*screenrow()*
 script	usr_41.txt	/*script*
 script-here	if_perl.txt	/*script-here*
 script-local	map.txt	/*script-local*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index da8810279c..47dbce6dd3 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 Nov 28
+*todo.txt*      For Vim version 7.3.  Last change: 2012 Dec 05
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -34,6 +34,10 @@ not be repeated below, unless there is extra information.
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+On external command get the message: 
+     SIGCHLD handler called (some thread has SIGCHLD unblocked)
+From MzScheme
+
 Go through more coverity reports.
 
 Discussion about canonicalization of Hebrew. (Ron Aaron, 2011 April 10)
@@ -49,19 +53,10 @@ The CompleteDone autocommand needs some info passed to it:
 - The word that was selected (empty if abandoned complete)
 - Type of completion: tag, omnifunc, user func.
 
-Patch for Tab behavior with 'conceal'. (Dominique Pelle, 2012 Mar 18)
-Patch to test functionality of 'conceal' with tabs. (Simon Ruderich, 2012 Sep
-5)  Update with screencol() and screenrow() functions: Sep 7.
-
-Patch for undefined integer behavior. (Dominique Pelle, 2012 Nov 4, second one)
-
-Patch to have Python interface not depend on multi-byte.
-
-Patch to fix justify.vim. (James McCoy, 2012 Nov 23)
+Patch for matchit.vim. (Mike Morearty, 2012 Nov 28)
 
-mouse_sgr is not ordered alphabetically in :version output.
-Docs list mouse_urxvt as normal feature, should be big. (Hayaki Saito, 2012
-Aug 16)
+Patch to fix that the QuitPre autocommand clears the quitmore flag. (Techlive
+Zheng, 2012 Nov 28)
 
 ":gundo" command: global undo.  Undoes changes spread over multiple files in
 the order they were made.  Also ":gredo".  Both with a count.  Useful when
@@ -70,6 +65,8 @@ tests fail after making changes and you forgot in which files.
 Patch to make updating tabline faster. (Arseny Kapoulkine, 2012 Oct 3)
 Also remove the "rc" variable.
 
+Patch to make "- register not always used. (Christian Brabandt, 2012 Nov 28)
+
 Crash with vimdiff. (Don Cruickshank, 2012 Sep 23)
 
 Patch to support subdirectories for help files. (Charles Campbell, 2012 Nov
@@ -84,6 +81,10 @@ Update Oct 2.
 Patch to fix :s command with confirm and typing "a". (Christian Brabandt, 2012
 Oct 28)
 
+/[^\n] does match at a line break.  Expected to do the same as /.
+Patch by Christian Brabandt, 2012 Dec 1.
+Test files in archive in another message.
+
 Patch to make multibyte input work on Win32 console when codepage differs from
 'encoding'. (Ken Takata, 2012 Sep 29)
 
@@ -190,7 +191,7 @@ When there are no command line arguments ":next" and ":argu" give E163, which
 is confusing.  Should say "the argument list is empty".
 
 URXVT:
-- will get stuck if byte sequence does not containe expected semicolon.
+- will get stuck if byte sequence does not contain the expected semicolon.
 - Use urxvt mouse support also in xterm.  Explanations:
   http://www.midnight-commander.org/ticket/2662
 
@@ -221,8 +222,6 @@ Patch Sep 18.
 Patch for IME problems. Remove hacking code for old IM. (Yukihiro Nakadaira,
 2012 Jul 20)
 
-/[^\n] does match at a line break.  Expected to do the same as /.
-
 Patch for has('unnamedplus') docs. (Tony Mechelynck, 2011 Sep 27)
 And one for gui_x11.txt.
 
@@ -289,12 +288,6 @@ On MS-Windows a temp dir with a & init causes system() to fail. (Ben Fritz,
 'list' is set.  (Dennis Preiser)
 Patch 7.3.116 was the wrong solution.
 Christian Brabandt has another incomplete patch. (2011 Jul 13)
-Also: Alignment in help with tabs gets messed up, esp. at ":help index".
-Probably need to make a tab work like there was no concealing.  Possibly with
-an option.  Like line wrapping works as if there is no concealing.
-Patch by Dominique Pelle, Also fixes "fC" problem.
-    "fC" doesn't position the cursor correctly when there are concealed
-    characters.  Patch by Christian Brabandt, 2011 Oct 11)
 
 With concealed text mouse click doesn't put the cursor in the right position.
 (Herb Sitz)  Fix by Christian Brabandt, 2011 Jun 16.  Doesn't work properly,
@@ -358,9 +351,6 @@ Christoph Ebersbach, 2011 Jul 3)
 
 Windows keys not set properly on Windows 7?  (cncyber, 2010 Aug 26)
 
-This line hangs Vim, because of syntax HL:
-call append(line, "INFO  ....12....18....24....30....36....42....48....54....60....66....72....78%$")
-
 When using a Vim server, a # in the path causes an error message.
 (Jeff Lanzarotta, 2011 Feb 17)
 
@@ -413,9 +403,6 @@ mapping, how to restore the script ID?
 Bug in try/catch: return with invalid compare throws error that isn't caught.
 (ZyX, 2011 Jan 26)
 
-Highlighting stops working after changing it many times.  Script to reproduce
-it: Pablo Contreras, 2010 Oct 12  Windows XP and 7.  Font is never freed?
-
 When setting a local option value from the global value, add a script ID that
 indicates this, so that ":verbose set" can give a hint.  Check with options in
 the help file.
@@ -642,6 +629,11 @@ Add local time at start of --startuptime output.
 Requires configure check for localtime().
 Use format year-month-day hr:min:sec.
 
+Patch to add "combine" to :syntax, combines highlight attributes. (Nate
+Soares, 2012 Dec 3)
+
+Patch to make ":hi link" also take arguments. (Nate Soares, 2012 Dec 4)
+
 Shell not recognized properly if it ends in "csh -f". (James Vega, 2009 Nov 3)
 Find tail?  Might have a / in argument.  Find space?  Might have space in
 path.
@@ -1295,10 +1287,6 @@ pointer in long and seek offset in 64 bit var.
 
 Win32: patch for fullscreen mode. (Liushaolin, 2008 April 17)
 
-Win32: When there is 4 Gbyte of memory mch_avail_mem() doesn't work properly.
-Unfinished patch by Jelle Geerts, 2008 Aug 24.
-Let mch_avail_mem() return Kbyte instead?
-
 Win32: When 'shell' is bash shellescape() doesn't always do the right thing.
 Depends on 'shellslash', 'shellquote' and 'shellxquote', but shellescape()
 only takes 'shellslash' into account.
diff --git a/runtime/doc/uganda.txt b/runtime/doc/uganda.txt
index 82481dc27b..d1ed213413 100644
--- a/runtime/doc/uganda.txt
+++ b/runtime/doc/uganda.txt
@@ -1,4 +1,4 @@
-*uganda.txt*    For Vim version 7.3.  Last change: 2012 May 28
+*uganda.txt*    For Vim version 7.3.  Last change: 2012 Dec 02
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -238,6 +238,7 @@ Canada:		Contact Kibaale Children's Fund (KCF) in Surrey, Canada.  They
 Holland:	Transfer to the account of "Stichting ICCF Holland" in Lisse.
 		This will allow for tax deduction if you live in Holland.
 			Postbank, nr. 4548774
+			IBAN: NL95 INGB 0004 5487 74
 
 Germany:	It is possible to make donations that allow for a tax return.
 		Check the ICCF web site for the latest information:
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index f4107e6e7c..d339adc4d1 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 7.3.  Last change: 2012 Aug 03
+*various.txt*   For Vim version 7.3.  Last change: 2012 Dec 05
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -353,75 +353,75 @@ N  *+mouseshape*	|'mouseshape'|
 B  *+mouse_dec*		Unix only: Dec terminal mouse handling |dec-mouse|
 N  *+mouse_gpm*		Unix only: Linux console mouse handling |gpm-mouse|
 B  *+mouse_netterm*	Unix only: netterm mouse handling |netterm-mouse|
-N  *+mouse_pterm*		QNX only: pterm mouse handling |qnx-terminal|
+N  *+mouse_pterm*	QNX only: pterm mouse handling |qnx-terminal|
 N  *+mouse_sysmouse*	Unix only: *BSD console mouse handling |sysmouse|
 B  *+mouse_sgr*		Unix only: sgr mouse handling |sgr-mouse|
-N  *+mouse_urxvt*		Unix only: urxvt mouse handling |urxvt-mouse|
-N  *+mouse_xterm*		Unix only: xterm mouse handling |xterm-mouse|
-B  *+multi_byte*		16 and 32 bit characters |multibyte|
+B  *+mouse_urxvt*	Unix only: urxvt mouse handling |urxvt-mouse|
+N  *+mouse_xterm*	Unix only: xterm mouse handling |xterm-mouse|
+B  *+multi_byte*	16 and 32 bit characters |multibyte|
    *+multi_byte_ime*	Win32 input method for multibyte chars |multibyte-ime|
-N  *+multi_lang*		non-English language support |multi-lang|
+N  *+multi_lang*	non-English language support |multi-lang|
 m  *+mzscheme*		Mzscheme interface |mzscheme|
 m  *+mzscheme/dyn*	Mzscheme interface |mzscheme-dynamic| |/dyn|
 m  *+netbeans_intg*	|netbeans|
-m  *+ole*			Win32 GUI only: |ole-interface|
-N  *+path_extra*		Up/downwards search in 'path' and 'tags'
+m  *+ole*		Win32 GUI only: |ole-interface|
+N  *+path_extra*	Up/downwards search in 'path' and 'tags'
 m  *+perl*		Perl interface |perl|
 m  *+perl/dyn*		Perl interface |perl-dynamic| |/dyn|
 N  *+persistent_undo*	Persistent undo |undo-persistence|
-   *+postscript*		|:hardcopy| writes a PostScript file
+   *+postscript*	|:hardcopy| writes a PostScript file
 N  *+printer*		|:hardcopy| command
 H  *+profile*		|:profile| command
 m  *+python*		Python 2 interface |python|
-m  *+python/dyn*		Python 2 interface |python-dynamic| |/dyn|
+m  *+python/dyn*	Python 2 interface |python-dynamic| |/dyn|
 m  *+python3*		Python 3 interface |python|
-m  *+python3/dyn*		Python 3 interface |python-dynamic| |/dyn|
+m  *+python3/dyn*	Python 3 interface |python-dynamic| |/dyn|
 N  *+quickfix*		|:make| and |quickfix| commands
 N  *+reltime*		|reltime()| function, 'hlsearch'/'incsearch' timeout,
 			'redrawtime' option
 B  *+rightleft*		Right to left typing |'rightleft'|
 m  *+ruby*		Ruby interface |ruby|
 m  *+ruby/dyn*		Ruby interface |ruby-dynamic| |/dyn|
-N  *+scrollbind*		|'scrollbind'|
+N  *+scrollbind*	|'scrollbind'|
 B  *+signs*		|:sign|
-N  *+smartindent*		|'smartindent'|
+N  *+smartindent*	|'smartindent'|
 m  *+sniff*		SniFF interface |sniff|
-N  *+startuptime*		|--startuptime| argument
-N  *+statusline*		Options 'statusline', 'rulerformat' and special
+N  *+startuptime*	|--startuptime| argument
+N  *+statusline*	Options 'statusline', 'rulerformat' and special
 			formats of 'titlestring' and 'iconstring'
 m  *+sun_workshop*	|workshop|
 N  *+syntax*		Syntax highlighting |syntax|
    *+system()*		Unix only: opposite of |+fork|
-N  *+tag_binary*		binary searching in tags file |tag-binary-search|
+N  *+tag_binary*	binary searching in tags file |tag-binary-search|
 N  *+tag_old_static*	old method for static tags |tag-old-static|
 m  *+tag_any_white*	any white space allowed in tags file |tag-any-white|
-m  *+tcl*			Tcl interface |tcl|
+m  *+tcl*		Tcl interface |tcl|
 m  *+tcl/dyn*		Tcl interface |tcl-dynamic| |/dyn|
    *+terminfo*		uses |terminfo| instead of termcap
 N  *+termresponse*	support for |t_RV| and |v:termresponse|
-N  *+textobjects*		|text-objects| selection
+N  *+textobjects*	|text-objects| selection
    *+tgetent*		non-Unix only: able to use external termcap
 N  *+title*		Setting the window 'title' and 'icon'
 N  *+toolbar*		|gui-toolbar|
 N  *+user_commands*	User-defined commands. |user-commands|
 N  *+viminfo*		|'viminfo'|
 N  *+vertsplit*		Vertically split windows |:vsplit|
-N  *+virtualedit*		|'virtualedit'|
+N  *+virtualedit*	|'virtualedit'|
 S  *+visual*		Visual mode |Visual-mode|
-N  *+visualextra*		extra Visual mode commands |blockwise-operators|
+N  *+visualextra*	extra Visual mode commands |blockwise-operators|
 N  *+vreplace*		|gR| and |gr|
-N  *+wildignore*		|'wildignore'|
+N  *+wildignore*	|'wildignore'|
 N  *+wildmenu*		|'wildmenu'|
 S  *+windows*		more than one window
-m  *+writebackup*		|'writebackup'| is default on
-m  *+xim*			X input method |xim|
+m  *+writebackup*	|'writebackup'| is default on
+m  *+xim*		X input method |xim|
    *+xfontset*		X fontset support |xfontset|
 m  *+xpm_w32*		Win32 GUI only: pixmap support |w32-xpm-support|
    *+xsmp*		XSMP (X session management) support
    *+xsmp_interact*	interactive XSMP (X session management) support
 N  *+xterm_clipboard*	Unix only: xterm clipboard handling
-m  *+xterm_save*		save and restore xterm screen |xterm-screens|
-N  *+X11*			Unix only: can restore window title |X11|
+m  *+xterm_save*	save and restore xterm screen |xterm-screens|
+N  *+X11*		Unix only: can restore window title |X11|
 
 							*/dyn* *E370* *E448*
 			To some of the features "/dyn" is added when the
diff --git a/runtime/ftplugin/sql.vim b/runtime/ftplugin/sql.vim
index c13dcf1869..39028f318d 100644
--- a/runtime/ftplugin/sql.vim
+++ b/runtime/ftplugin/sql.vim
@@ -1,8 +1,8 @@
 " SQL filetype plugin file
 " Language:    SQL (Common for Oracle, Microsoft SQL Server, Sybase)
-" Version:     8.0
+" Version:     10.0
 " Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com>
-" Last Change: 2012 May 18
+" Last Change: 2012 Dec 04
 " Download:    http://vim.sourceforge.net/script.php?script_id=454
 
 " For more details please use:
@@ -30,34 +30,48 @@
 " To change the default dialect, add the following to your vimrc:
 "    let g:sql_type_default = 'sqlanywhere'
 "
-" This file also creates a command, SQLGetType, which allows you to 
+" This file also creates a command, SQLGetType, which allows you to
 " determine what the current dialect is in use.
 "     :SQLGetType
 "
 " History
 "
+" Version 10.0 (Dec 2012)
+"
+" NF: Changed all maps to use noremap instead of must map
+" NF: Changed all visual maps to use xnoremap instead of vnoremap as they
+"     should only be used in visual mode and not select mode.
+" BF: Most of the maps were using doubled up backslashes before they were
+"     changed to using the search() function, which meant they no longer
+"     worked.
+"
+" Version 9.0
+"
+" NF: Completes 'b:undo_ftplugin'
+" BF: Correctly set cpoptions when creating script
+"
 " Version 8.0
-" 
+"
 " NF: Improved the matchit plugin regex (Talek)
 "
 " Version 7.0
-" 
+"
 " NF: Calls the sqlcomplete#ResetCacheSyntax() function when calling
 "     SQLSetType.
 "
 " Version 6.0
-" 
+"
 " NF: Adds the command SQLGetType
 "
 " Version 5.0
-" 
-" NF: Adds the ability to choose the keys to control SQL completion, just add 
+"
+" NF: Adds the ability to choose the keys to control SQL completion, just add
 "     the following to your .vimrc:
 "    let g:ftplugin_sql_omni_key       = '<C-C>'
 "    let g:ftplugin_sql_omni_key_right = '<Right>'
 "    let g:ftplugin_sql_omni_key_left  = '<Left>'
 "
-" BF: format-options - Auto-wrap comments using textwidth was turned off 
+" BF: format-options - Auto-wrap comments using textwidth was turned off
 "                      by mistake.
 
 
@@ -81,7 +95,7 @@ setlocal formatoptions+=c
 " This works with both Vim 6 and 7.
 
 if !exists("*SQL_SetType")
-    " NOTE: You cannot use function! since this file can be 
+    " NOTE: You cannot use function! since this file can be
     " sourced from within this function.  That will result in
     " an error reported by Vim.
     function SQL_GetList(ArgLead, CmdLine, CursorPos)
@@ -105,9 +119,9 @@ if !exists("*SQL_SetType")
             "
             "    Recursively, since there are many filenames that contain
             "    the word SQL in the indent, syntax and ftplugin directory
-            let sqls = substitute( sqls, 
-                        \ '[\n]\%(.\{-}\)\(\w\+\.\w\+\)\n\@=', 
-                        \ '\1\n', 
+            let sqls = substitute( sqls,
+                        \ '[\n]\%(.\{-}\)\(\w\+\.\w\+\)\n\@=',
+                        \ '\1\n',
                         \ 'g'
                         \ )
 
@@ -142,10 +156,10 @@ if !exists("*SQL_SetType")
     function SQL_SetType(name)
 
         " User has decided to override default SQL scripts and
-        " specify a vendor specific version 
+        " specify a vendor specific version
         " (ie Oracle, Informix, SQL Anywhere, ...)
         " So check for an remove any settings that prevent the
-        " scripts from being executed, and then source the 
+        " scripts from being executed, and then source the
         " appropriate Vim scripts.
         if exists("b:did_ftplugin")
             unlet b:did_ftplugin
@@ -163,10 +177,10 @@ if !exists("*SQL_SetType")
         endif
 
         " Ensure the name is in the correct format
-        let new_sql_type = substitute(a:name, 
+        let new_sql_type = substitute(a:name,
                     \ '\s*\([^\.]\+\)\(\.\w\+\)\?', '\L\1', '')
 
-        " Do not specify a buffer local variable if it is 
+        " Do not specify a buffer local variable if it is
         " the default value
         if new_sql_type == 'sql'
           let new_sql_type = 'sqloracle'
@@ -203,10 +217,10 @@ endif
 
 if !exists("*SQL_GetType")
     function SQL_GetType()
-        if exists('b:sql_type_override') 
+        if exists('b:sql_type_override')
             echomsg "Current SQL dialect in use:".b:sql_type_override
         else
-            echomsg "Current SQL dialect in use:".g:sql_type_default        
+            echomsg "Current SQL dialect in use:".g:sql_type_default
         endif
     endfunction
     command! -nargs=0 SQLGetType :call SQL_GetType()
@@ -233,7 +247,8 @@ if exists("b:did_ftplugin")
   finish
 endif
 
-let b:undo_ftplugin = "setl comments<"
+let b:undo_ftplugin = "setl comments< formatoptions< define< omnifunc<" .
+		    \ " | unlet! b:browsefilter b:match_words"
 
 " Don't load another plugin for this buffer
 let b:did_ftplugin     = 1
@@ -280,7 +295,7 @@ if !exists("b:match_words")
     " doend
     "
     " case
-    " when 
+    " when
     " when
     " default
     " end case
@@ -296,8 +311,10 @@ if !exists("b:match_words")
     " create[ or replace] procedure|function|event
                 " \ '^\s*\<\%(do\|for\|while\|loop\)\>.*:'.
 
-    let b:match_words =
-		\ '\<begin\>:\<end\>\W*$,'.
+    " For ColdFusion support
+    setlocal matchpairs+=<:>
+    let b:match_words = &matchpairs .
+		\ ',\<begin\>:\<end\>\W*$,'.
 		\
                 \ s:notend . '\<if\>:'.
                 \ '\<elsif\>\|\<elseif\>\|\<else\>:'.
@@ -337,14 +354,14 @@ let &l:define = '\c\<\(VARIABLE\|DECLARE\|IN\|OUT\|INOUT\)\>'
 
 " Mappings to move to the next BEGIN ... END block
 " \W - no characters or digits
-nmap <buffer> <silent> ]] :call search('\\c^\\s*begin\\>', 'W' )<CR>
-nmap <buffer> <silent> [[ :call search('\\c^\\s*begin\\>', 'bW' )<CR>
-nmap <buffer> <silent> ][ :call search('\\c^\\s*end\\W*$', 'W' )<CR>
-nmap <buffer> <silent> [] :call search('\\c^\\s*end\\W*$', 'bW' )<CR>
-vmap <buffer> <silent> ]] :<C-U>exec "normal! gv"<Bar>call search('\\c^\\s*begin\\>', 'W' )<CR>
-vmap <buffer> <silent> [[ :<C-U>exec "normal! gv"<Bar>call search('\\c^\\s*begin\\>', 'bW' )<CR>
-vmap <buffer> <silent> ][ :<C-U>exec "normal! gv"<Bar>call search('\\c^\\s*end\\W*$', 'W' )<CR>
-vmap <buffer> <silent> [] :<C-U>exec "normal! gv"<Bar>call search('\\c^\\s*end\\W*$', 'bW' )<CR>
+nnoremap <buffer> <silent> ]] :call search('\c^\s*begin\>', 'W' )<CR>
+nnoremap <buffer> <silent> [[ :call search('\c^\s*begin\>', 'bW' )<CR>
+nnoremap <buffer> <silent> ][ :call search('\c^\s*end\W*$', 'W' )<CR>
+nnoremap <buffer> <silent> [] :call search('\c^\s*end\W*$', 'bW' )<CR>
+xnoremap <buffer> <silent> ]] :<C-U>exec "normal! gv"<Bar>call search('\c^\s*begin\>', 'W' )<CR>
+xnoremap <buffer> <silent> [[ :<C-U>exec "normal! gv"<Bar>call search('\c^\s*begin\>', 'bW' )<CR>
+xnoremap <buffer> <silent> ][ :<C-U>exec "normal! gv"<Bar>call search('\c^\s*end\W*$', 'W' )<CR>
+xnoremap <buffer> <silent> [] :<C-U>exec "normal! gv"<Bar>call search('\c^\s*end\W*$', 'bW' )<CR>
 
 
 " By default only look for CREATE statements, but allow
@@ -361,7 +378,7 @@ endif
 " backwards, you must use \{,1}
 if !exists('g:ftplugin_sql_objects')
     let g:ftplugin_sql_objects = 'function,procedure,event,' .
-                \ '\\(existing\\\\|global\\s\\+temporary\\s\\+\\)\\\{,1}' .
+                \ '\(existing\\|global\s\+temporary\s\+\)\{,1}' .
                 \ 'table,trigger' .
                 \ ',schema,service,publication,database,datatype,domain' .
                 \ ',index,subscription,synchronization,view,variable'
@@ -382,47 +399,47 @@ endif
 
 " Replace all ,'s with bars, except ones with numbers after them.
 " This will most likely be a \{,1} string.
-let s:ftplugin_sql_objects = 
-            \ '\\c^\\s*' .
-            \ '\\(\\(' .
-            \ substitute(g:ftplugin_sql_statements, ',\d\@!', '\\\\\\|', 'g') .
-            \ '\\)\\s\\+\\(or\\s\\+replace\\\s\+\\)\\{,1}\\)\\{,1}' .
-            \ '\\<\\(' .
-            \ substitute(g:ftplugin_sql_objects, ',\d\@!', '\\\\\\|', 'g') .
-            \ '\\)\\>' 
+let s:ftplugin_sql_objects =
+            \ '\c^\s*' .
+            \ '\(\(' .
+            \ substitute(g:ftplugin_sql_statements, ',\d\@!', '\\\\|', 'g') .
+            \ '\)\s\+\(or\s\+replace\s\+\)\{,1}\)\{,1}' .
+            \ '\<\(' .
+            \ substitute(g:ftplugin_sql_objects, ',\d\@!', '\\\\|', 'g') .
+            \ '\)\>'
 
 " Mappings to move to the next CREATE ... block
-exec "nmap <buffer> <silent> ]} :call search('".s:ftplugin_sql_objects."', 'W')<CR>"
-exec "nmap <buffer> <silent> [{ :call search('".s:ftplugin_sql_objects."', 'bW')<CR>"
+exec "nnoremap <buffer> <silent> ]} :call search('".s:ftplugin_sql_objects."', 'W')<CR>"
+exec "nnoremap <buffer> <silent> [{ :call search('".s:ftplugin_sql_objects."', 'bW')<CR>"
 " Could not figure out how to use a :call search() string in visual mode
 " without it ending visual mode
 " Unfortunately, this will add a entry to the search history
-exec 'vmap <buffer> <silent> ]} /'.s:ftplugin_sql_objects.'<CR>'
-exec 'vmap <buffer> <silent> [{ ?'.s:ftplugin_sql_objects.'<CR>'
+exec 'xnoremap <buffer> <silent> ]} /'.s:ftplugin_sql_objects.'<CR>'
+exec 'xnoremap <buffer> <silent> [{ ?'.s:ftplugin_sql_objects.'<CR>'
 
 " Mappings to move to the next COMMENT
 "
 " Had to double the \ for the \| separator since this has a special
 " meaning on maps
-let b:comment_leader = '\\(--\\\|\\/\\/\\\|\\*\\\|\\/\\*\\\|\\*\\/\\)'
+let b:comment_leader = '\(--\\|\/\/\\|\*\\|\/\*\\|\*\/\)'
 " Find the start of the next comment
-let b:comment_start  = '^\\(\\s*'.b:comment_leader.'.*\\n\\)\\@<!'.
-            \ '\\(\\s*'.b:comment_leader.'\\)'
+let b:comment_start  = '^\(\s*'.b:comment_leader.'.*\n\)\@<!'.
+            \ '\(\s*'.b:comment_leader.'\)'
 " Find the end of the previous comment
-let b:comment_end = '\\(^\\s*'.b:comment_leader.'.*\\n\\)'.
-            \ '\\(^\\s*'.b:comment_leader.'\\)\\@!'
+let b:comment_end = '\(^\s*'.b:comment_leader.'.*\n\)'.
+            \ '\(^\s*'.b:comment_leader.'\)\@!'
 " Skip over the comment
 let b:comment_jump_over  = "call search('".
-            \ '^\\(\\s*'.b:comment_leader.'.*\\n\\)\\@<!'.
+            \ '^\(\s*'.b:comment_leader.'.*\n\)\@<!'.
             \ "', 'W')"
 let b:comment_skip_back  = "call search('".
-            \ '^\\(\\s*'.b:comment_leader.'.*\\n\\)\\@<!'.
+            \ '^\(\s*'.b:comment_leader.'.*\n\)\@<!'.
             \ "', 'bW')"
 " Move to the start and end of comments
 exec 'nnoremap <silent><buffer> ]" :call search('."'".b:comment_start."'".', "W" )<CR>'
 exec 'nnoremap <silent><buffer> [" :call search('."'".b:comment_end."'".', "W" )<CR>'
-exec 'vnoremap <silent><buffer> ]" :<C-U>exec "normal! gv"<Bar>call search('."'".b:comment_start."'".', "W" )<CR>'
-exec 'vnoremap <silent><buffer> [" :<C-U>exec "normal! gv"<Bar>call search('."'".b:comment_end."'".', "W" )<CR>'
+exec 'xnoremap <silent><buffer> ]" :<C-U>exec "normal! gv"<Bar>call search('."'".b:comment_start."'".', "W" )<CR>'
+exec 'xnoremap <silent><buffer> [" :<C-U>exec "normal! gv"<Bar>call search('."'".b:comment_end."'".', "W" )<CR>'
 
 " Comments can be of the form:
 "   /*
@@ -431,7 +448,7 @@ exec 'vnoremap <silent><buffer> [" :<C-U>exec "normal! gv"<Bar>call search('."'"
 " or
 "   --
 " or
-"   // 
+"   //
 setlocal comments=s1:/*,mb:*,ex:*/,:--,://
 
 " Set completion with CTRL-X CTRL-O to autoloaded function.
@@ -443,7 +460,7 @@ if exists('&omnifunc')
 
     " This is used by the sqlcomplete.vim plugin
     " Source it for it's global functions
-    runtime autoload/syntaxcomplete.vim 
+    runtime autoload/syntaxcomplete.vim
 
     setlocal omnifunc=sqlcomplete#Complete
     " Prevent the intellisense plugin from loading
@@ -451,32 +468,32 @@ if exists('&omnifunc')
     if !exists('g:omni_sql_no_default_maps')
         " Static maps which use populate the completion list
         " using Vim's syntax highlighting rules
-        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'a <C-\><C-O>:call sqlcomplete#Map("syntax")<CR><C-X><C-O>'
-        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'k <C-\><C-O>:call sqlcomplete#Map("sqlKeyword")<CR><C-X><C-O>'
-        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'f <C-\><C-O>:call sqlcomplete#Map("sqlFunction")<CR><C-X><C-O>'
-        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'o <C-\><C-O>:call sqlcomplete#Map("sqlOption")<CR><C-X><C-O>'
-        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'T <C-\><C-O>:call sqlcomplete#Map("sqlType")<CR><C-X><C-O>'
-        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'s <C-\><C-O>:call sqlcomplete#Map("sqlStatement")<CR><C-X><C-O>'
+        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'a <C-\><C-O>:call sqlcomplete#Map("syntax")<CR><C-X><C-O>'
+        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'k <C-\><C-O>:call sqlcomplete#Map("sqlKeyword")<CR><C-X><C-O>'
+        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'f <C-\><C-O>:call sqlcomplete#Map("sqlFunction")<CR><C-X><C-O>'
+        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'o <C-\><C-O>:call sqlcomplete#Map("sqlOption")<CR><C-X><C-O>'
+        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'T <C-\><C-O>:call sqlcomplete#Map("sqlType")<CR><C-X><C-O>'
+        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'s <C-\><C-O>:call sqlcomplete#Map("sqlStatement")<CR><C-X><C-O>'
         " Dynamic maps which use populate the completion list
         " using the dbext.vim plugin
-        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'t <C-\><C-O>:call sqlcomplete#Map("table")<CR><C-X><C-O>'
-        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'p <C-\><C-O>:call sqlcomplete#Map("procedure")<CR><C-X><C-O>'
-        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'v <C-\><C-O>:call sqlcomplete#Map("view")<CR><C-X><C-O>'
-        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'c <C-\><C-O>:call sqlcomplete#Map("column")<CR><C-X><C-O>'
-        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'l <C-\><C-O>:call sqlcomplete#Map("column_csv")<CR><C-X><C-O>'
+        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'t <C-\><C-O>:call sqlcomplete#Map("table")<CR><C-X><C-O>'
+        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'p <C-\><C-O>:call sqlcomplete#Map("procedure")<CR><C-X><C-O>'
+        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'v <C-\><C-O>:call sqlcomplete#Map("view")<CR><C-X><C-O>'
+        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'c <C-\><C-O>:call sqlcomplete#Map("column")<CR><C-X><C-O>'
+        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'l <C-\><C-O>:call sqlcomplete#Map("column_csv")<CR><C-X><C-O>'
         " The next 3 maps are only to be used while the completion window is
         " active due to the <CR> at the beginning of the map
-        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'L <C-Y><C-\><C-O>:call sqlcomplete#Map("column_csv")<CR><C-X><C-O>'
+        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'L <C-Y><C-\><C-O>:call sqlcomplete#Map("column_csv")<CR><C-X><C-O>'
         " <C-Right> is not recognized on most Unix systems, so only create
         " these additional maps on the Windows platform.
         " If you would like to use these maps, choose a different key and make
         " the same map in your vimrc.
         " if has('win32')
-        exec 'imap <buffer> '.g:ftplugin_sql_omni_key_right.' <C-R>=sqlcomplete#DrillIntoTable()<CR>'
-        exec 'imap <buffer> '.g:ftplugin_sql_omni_key_left.'  <C-R>=sqlcomplete#DrillOutOfColumns()<CR>'
+        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key_right.' <C-R>=sqlcomplete#DrillIntoTable()<CR>'
+        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key_left.'  <C-R>=sqlcomplete#DrillOutOfColumns()<CR>'
         " endif
         " Remove any cached items useful for schema changes
-        exec 'imap <buffer> '.g:ftplugin_sql_omni_key.'R <C-\><C-O>:call sqlcomplete#Map("resetCache")<CR><C-X><C-O>'
+        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'R <C-\><C-O>:call sqlcomplete#Map("resetCache")<CR><C-X><C-O>'
     endif
 
     if b:sql_compl_savefunc != ""
diff --git a/runtime/indent/sqlanywhere.vim b/runtime/indent/sqlanywhere.vim
index afc312f8e0..edc9650ad7 100644
--- a/runtime/indent/sqlanywhere.vim
+++ b/runtime/indent/sqlanywhere.vim
@@ -1,8 +1,8 @@
 " Vim indent file
 " Language:    SQL
-" Maintainer:  David Fishburn <fishburn at ianywhere dot com>
-" Last Change: Mon Apr 02 2007 9:13:47 AM
-" Version:     1.5
+" Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com>
+" Last Change: 2012 Dec 05
+" Version:     3.0
 " Download:    http://vim.sourceforge.net/script.php?script_id=495
 
 " Notes:
@@ -18,6 +18,17 @@
 " Known Issues:
 "    The Oracle MERGE statement does not have an end tag associated with
 "    it, this can leave the indent hanging to the right one too many.
+"
+" History:
+"    3.0 (Dec 2012)
+"        Added cpo check
+"
+"    2.0
+"        Added the FOR keyword to SQLBlockStart to handle (Alec Tica):
+"            for i in 1..100 loop
+"              |<-- I expect to have indentation here
+"            end loop;
+"
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
@@ -25,6 +36,8 @@ if exists("b:did_indent")
 endif
 let b:did_indent     = 1
 let b:current_indent = "sqlanywhere"
+let s:keepcpo= &cpo
+set cpo&vim
 
 setlocal indentkeys-=0{
 setlocal indentkeys-=0}
@@ -44,20 +57,13 @@ setlocal indentkeys+==~end,=~else,=~elseif,=~elsif,0=~when,0=)
 " in the indentkeys is typed
 setlocal indentexpr=GetSQLIndent()
 
-" Only define the functions once.
-if exists("*GetSQLIndent")
-    finish
-endif
-let s:keepcpo= &cpo
-set cpo&vim
-
 " List of all the statements that start a new block.
 " These are typically words that start a line.
 " IS is excluded, since it is difficult to determine when the
 " ending block is (especially for procedures/functions).
 let s:SQLBlockStart = '^\s*\%('.
-            \ 'if\|else\|elseif\|elsif\|'.
-                \ 'while\|loop\|do\|'.
+                \ 'if\|else\|elseif\|elsif\|'.
+                \ 'while\|loop\|do\|for\|'.
                 \ 'begin\|'.
                 \ 'case\|when\|merge\|exception'.
                 \ '\)\>'
@@ -66,7 +72,7 @@ let s:SQLBlockEnd = '^\s*\(end\)\>'
 " The indent level is also based on unmatched paranethesis
 " If a line has an extra "(" increase the indent
 " If a line has an extra ")" decrease the indent
-function s:CountUnbalancedParan( line, paran_to_check )
+function! s:CountUnbalancedParan( line, paran_to_check )
     let l = a:line
     let lp = substitute(l, '[^(]', '', 'g')
     let l = a:line
@@ -88,7 +94,7 @@ function s:CountUnbalancedParan( line, paran_to_check )
 endfunction
 
 " Unindent commands based on previous indent level
-function s:CheckToIgnoreRightParan( prev_lnum, num_levels )
+function! s:CheckToIgnoreRightParan( prev_lnum, num_levels )
     let lnum = a:prev_lnum
     let line = getline(lnum)
     let ends = 0
@@ -151,7 +157,7 @@ endfunction
 "         something;
 "    WHEN ...
 " Should return indent level of exception.
-function s:GetStmtStarterIndent( keyword, curr_lnum )
+function! s:GetStmtStarterIndent( keyword, curr_lnum )
     let lnum  = a:curr_lnum
 
     " Default - reduce indent by 1
@@ -193,7 +199,7 @@ endfunction
 
 
 " Check if the line is a comment
-function s:IsLineComment(lnum)
+function! s:IsLineComment(lnum)
     let rc = synIDattr(
                 \ synID(a:lnum,
                 \     match(getline(a:lnum), '\S')+1, 0)
@@ -205,7 +211,7 @@ endfunction
 
 
 " Check if the column is a comment
-function s:IsColComment(lnum, cnum)
+function! s:IsColComment(lnum, cnum)
     let rc = synIDattr(synID(a:lnum, a:cnum, 0), "name")
                 \           =~? "comment"
 
@@ -215,7 +221,7 @@ endfunction
 
 " Instead of returning a column position, return
 " an appropriate value as a factor of shiftwidth.
-function s:ModuloIndent(ind)
+function! s:ModuloIndent(ind)
     let ind = a:ind
 
     if ind > 0
@@ -231,7 +237,7 @@ endfunction
 
 
 " Find correct indent of a new line based upon the previous line
-function GetSQLIndent()
+function! GetSQLIndent()
     let lnum = v:lnum
     let ind = indent(lnum)
 
@@ -242,35 +248,27 @@ function GetSQLIndent()
     "     return ind
     " endif
 
-    " while 1
-        " Get previous non-blank line
-        let prevlnum = prevnonblank(lnum - 1)
-        if prevlnum <= 0
-            return ind
-        endif
+    " Get previous non-blank line
+    let prevlnum = prevnonblank(lnum - 1)
+    if prevlnum <= 0
+        return ind
+    endif
 
-        if s:IsLineComment(prevlnum) == 1
-            if getline(v:lnum) =~ '^\s*\*'
-                let ind = s:ModuloIndent(indent(prevlnum))
-                return ind + 1
-            endif
-            " If the previous line is a comment, then return -1
-            " to tell Vim to use the formatoptions setting to determine
-            " the indent to use
-            " But only if the next line is blank.  This would be true if
-            " the user is typing, but it would not be true if the user
-            " is reindenting the file
-            if getline(v:lnum) =~ '^\s*$'
-                return -1
-            endif
+    if s:IsLineComment(prevlnum) == 1
+        if getline(v:lnum) =~ '^\s*\*'
+            let ind = s:ModuloIndent(indent(prevlnum))
+            return ind + 1
         endif
-
-    "     let prevline = getline(prevlnum)
-    "     if prevline !~ '^\s*$'
-    "         " echom 'previous non blank - break: ' . prevline
-    "         break
-    "     endif
-    " endwhile
+        " If the previous line is a comment, then return -1
+        " to tell Vim to use the formatoptions setting to determine
+        " the indent to use
+        " But only if the next line is blank.  This would be true if
+        " the user is typing, but it would not be true if the user
+        " is reindenting the file
+        if getline(v:lnum) =~ '^\s*$'
+            return -1
+        endif
+    endif
 
     " echom 'PREVIOUS INDENT: ' . indent(prevlnum) . '  LINE: ' . getline(prevlnum)
 
@@ -384,7 +382,7 @@ function GetSQLIndent()
     return s:ModuloIndent(ind)
 endfunction
 
-let &cpo = s:keepcpo
+"  Restore:
+let &cpo= s:keepcpo
 unlet s:keepcpo
-
-" vim:sw=4:
+" vim: ts=4 fdm=marker sw=4
diff --git a/runtime/indent/yaml.vim b/runtime/indent/yaml.vim
new file mode 100644
index 0000000000..1d03715773
--- /dev/null
+++ b/runtime/indent/yaml.vim
@@ -0,0 +1,132 @@
+" Vim indent file
+" Language:         YAML
+" Maintainer:       Nikolai Pavlov <zyx.vim@gmail.com>
+
+" Only load this indent file when no other was loaded.
+if exists('b:did_indent')
+  finish
+endif
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+let b:did_indent = 1
+
+setlocal indentexpr=GetYAMLIndent(v:lnum)
+setlocal indentkeys=!^F,o,O,0#,0},0],<:>,-
+setlocal nosmartindent
+
+let b:undo_indent = 'setlocal indentexpr< indentkeys< smartindent<'
+
+" Only define the function once.
+if exists('*GetYAMLIndent')
+    finish
+endif
+
+if exists('*shiftwidth')
+    let s:shiftwidth = function('shiftwidth')
+else
+    function s:shiftwidth()
+        return &shiftwidth
+    endfunction
+endif
+
+function s:FindPrevLessIndentedLine(lnum, ...)
+    let prevlnum = prevnonblank(a:lnum-1)
+    let curindent = a:0 ? a:1 : indent(a:lnum)
+    while           prevlnum
+                \&&  indent(prevlnum) >=  curindent
+                \&& getline(prevlnum) !~# '^\s*#'
+        let prevlnum = prevnonblank(prevlnum-1)
+    endwhile
+    return prevlnum
+endfunction
+
+function s:FindPrevLEIndentedLineMatchingRegex(lnum, regex)
+    let plilnum = s:FindPrevLessIndentedLine(a:lnum, indent(a:lnum)+1)
+    while plilnum && getline(plilnum) !~# a:regex
+        let plilnum = s:FindPrevLessIndentedLine(plilnum)
+    endwhile
+    return plilnum
+endfunction
+
+let s:mapkeyregex='\v^\s*%(\''%([^'']|'''')*\'''.
+                \        '|\"%([^"\\]|\\.)*\"'.
+                \        '|%(%(\:\ )@!.)*)\:%(\ |$)'
+let s:liststartregex='\v^\s*%(\-%(\ |$))'
+
+function GetYAMLIndent(lnum)
+    if a:lnum == 1 || !prevnonblank(a:lnum-1)
+        return 0
+    endif
+
+    let prevlnum = prevnonblank(a:lnum-1)
+    let previndent = indent(prevlnum)
+
+    let line = getline(a:lnum)
+    if line =~# '^\s*#' && getline(a:lnum-1) =~# '^\s*#'
+        " Comment blocks should have identical indent
+        return previndent
+    elseif line =~# '^\s*[\]}]'
+        " Lines containing only closing braces should have previous indent
+        return indent(s:FindPrevLessIndentedLine(a:lnum))
+    endif
+
+    " Ignore comment lines when calculating indent
+    while getline(prevlnum) =~# '^\s*#'
+        let prevlnum = prevnonblank(prevlnum-1)
+        if !prevlnum
+            return previndent
+        endif
+    endwhile
+
+    let prevline = getline(prevlnum)
+    let previndent = indent(prevlnum)
+
+    " Any examples below assume that shiftwidth=2
+    if prevline =~# '\v[{[:]$|[:-]\ [|>][+\-]?%(\s+\#.*|\s*)$'
+        " Mapping key:
+        "     nested mapping: ...
+        "
+        " - {
+        "     key: [
+        "         list value
+        "     ]
+        " }
+        "
+        " - |-
+        "     Block scalar without indentation indicator
+        return previndent+s:shiftwidth()
+    elseif prevline =~# '\v[:-]\ [|>]%(\d+[+\-]?|[+\-]?\d+)%(\#.*|\s*)$'
+        " - |+2
+        "   block scalar with indentation indicator
+        "#^^ indent+2, not indent+shiftwidth
+        return previndent + str2nr(matchstr(prevline,
+                    \'\v([:-]\ [|>])@<=[+\-]?\d+%([+\-]?%(\s+\#.*|\s*)$)@='))
+    elseif prevline =~# '\v\"%([^"\\]|\\.)*\\$'
+        "    "Multiline string \
+        "     with escaped end"
+        let qidx = match(prevline, '\v\"%([^"\\]|\\.)*\\')
+        return virtcol([prevlnum, qidx+1])
+    elseif line =~# s:liststartregex
+        " List line should have indent equal to previous list line unless it was 
+        " caught by one of the previous rules
+        return indent(s:FindPrevLEIndentedLineMatchingRegex(a:lnum,
+                    \                                       s:liststartregex))
+    elseif line =~# s:mapkeyregex
+        " Same for line containing mapping key
+        return indent(s:FindPrevLEIndentedLineMatchingRegex(a:lnum,
+                    \                                       s:mapkeyregex))
+    elseif prevline =~# '^\s*- '
+        " - List with
+        "   multiline scalar
+        return previndent+2
+    elseif prevline =~# s:mapkeyregex
+        " Mapping with: value
+        "     that is multiline scalar
+        return previndent+s:shiftwidth()
+    endif
+    return previndent
+endfunction
+
+let &cpo = s:save_cpo
diff --git a/runtime/lang/menu_cs_cz.iso_8859-2.vim b/runtime/lang/menu_cs_cz.iso_8859-2.vim
index 88cf7e2528..410d548ee1 100644
--- a/runtime/lang/menu_cs_cz.iso_8859-2.vim
+++ b/runtime/lang/menu_cs_cz.iso_8859-2.vim
@@ -1,32 +1,38 @@
-" Menu Translations:	Czech for ISO-8859-2
-" Maintainer:		Jiri Brezina <brzj@seznam.cz>
-" vim:set foldmethod=marker:
-" $Revision: 1.3 $
-" $Date: 2005/12/19 22:08:24 $
+" Menu Translations:    Czech (ISO-8859-2)
+" Maintainer:           Jiri Sedlak <jiri_sedlak@users.sourceforge.net>
+" Previous maintainer:  Jiri Brezina
+" Based on:             menu.vim (2012-10-21)
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
-  finish
+   finish
 endif
+
 let did_menu_trans = 1
 let s:keepcpo= &cpo
 set cpo&vim
 
-scriptencoding ISO-8859-2
+scriptencoding iso-8859-2
 
 " {{{ File menu
 menutrans &File				&Soubor
 menutrans &Open\.\.\.<Tab>:e		&Otevøít\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	Otevøít\ v\ no&vém\ oknì\.\.\.<Tab>:sp
+menutrans Open\ Tab\.\.\.<Tab>:tabnew	Otevøít\ tab\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		&Nový<Tab>:enew
 menutrans &Close<Tab>:close		&Zavøít<Tab>:close
 menutrans &Save<Tab>:w			&Ulo¾it<Tab>:w
 menutrans Save\ &As\.\.\.<Tab>:sav	Ulo¾it\ &jako\.\.\.<Tab>:sav
-menutrans Split\ &Diff\ with\.\.\.	Rozdìlit\ okno\ -\ &Diff\.\.\.
-menutrans Split\ Patched\ &By\.\.\.	Rozdìlit\ okno\ -\ &Patch\.\.\.
-menutrans &Print			&Tisk
-menutrans Sa&ve-Exit<Tab>:wqa		U&lo¾it\ -\ Konec<Tab>:wqa
-menutrans E&xit<Tab>:qa			&Konec<Tab>:qa
+if has("printer") || has("unix")
+   menutrans &Print			&Tisk
+endif
+menutrans Sa&ve-Exit<Tab>:wqa		U&lo¾it\ a\ ukonèit<Tab>:wqa
+menutrans E&xit<Tab>:qa			&Ukonèit<Tab>:qa
+
+if has("diff")
+   menutrans Split\ &Diff\ with\.\.\.	Rozdìlit\ okno\ -\ &Diff\.\.\.
+   menutrans Split\ Patched\ &By\.\.\.	Rozdìlit\ okno\ -\ &Patch\.\.\.
+endif
 " }}}
 
 " {{{ Edit menu
@@ -39,24 +45,32 @@ menutrans &Copy<Tab>"+y			&Kop
 menutrans &Paste<Tab>"+gP		V&lo¾it<Tab>"+gP
 menutrans Put\ &Before<Tab>[p		Vlo¾it\ &pøed<Tab>[p
 menutrans Put\ &After<Tab>]p		Vlo¾i&t\ za<Tab>]p
-menutrans &Delete<Tab>x			&Smazat<Tab>x
+if has("win32") || has("win16")
+   menutrans &Delete<Tab>x			&Smazat<Tab>x
+endif
 menutrans &Select\ All<Tab>ggVG		Vy&brat\ v¹e<Tab>ggVG
-menutrans &Find\.\.\.			&Hledat\.\.\.
-menutrans Find\ and\ Rep&lace\.\.\.	&Nahradit\.\.\.
-menutrans Options\.\.\.			Volb&y\.\.\.
+if has("win32")  || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_motif")
+   menutrans &Find\.\.\.			&Hledat\.\.\.
+   menutrans Find\ and\ Rep&lace\.\.\.	&Nahradit\.\.\.
+else
+   menutrans Find<Tab>/ &Hledat<Tab>/
+   menutrans Find\ and\ Rep&lace<Tab>:%s  &Nahradit<Tab>:%s
+   menutrans Find\ and\ Rep&lace<Tab>:s   &Nahradit<Tab>:s
+endif
 menutrans Settings\ &Window		Nastav&ení\ okna
-	" {{{2 Edit -1
+" {{{2 Edit -1
+menutrans Startup\ &Settings  Poèáteèní\ &nastavení
 menutrans &Global\ Settings				&Globální\ nastavení
 menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	&Pøepnout\ zvýraznìní\ vzoru<Tab>:set\ hls!
 menutrans Toggle\ &Ignore-case<Tab>:set\ ic!		Pøepnout\ ignorování\ &VERZÁLEK<Tab>:set\ ic!
 menutrans Toggle\ &Showmatch<Tab>:set\ sm!		Pøepnout\ &Showmatch\ \{\(\[\])\}<Tab>:set\ sm!
 menutrans &Context\ lines				Zobrazit\ konte&xt\ kurzoru
 menutrans &Virtual\ Edit				Virtuální\ p&ozice\ kurzoru
-	menutrans Never						Nikdy
-	menutrans Block\ Selection				Výbìr\ Bloku
-	menutrans Insert\ mode					Insert\ mód
-	menutrans Block\ and\ Insert				Blok\ a\ Insert
-	menutrans Always					V¾dycky
+menutrans Never						Nikdy
+menutrans Block\ Selection				Výbìr\ Bloku
+menutrans Insert\ mode					Insert\ mód
+menutrans Block\ and\ Insert				Blok\ a\ Insert
+menutrans Always					V¾dycky
 menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!		Pøepnout\ Insert\ mó&d<Tab>:set\ im!
 menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!		Pøepnout\ kompatibilní\ re¾im\ s\ 'vi'<Tab>:set\ cp!
 menutrans Search\ &Path\.\.\.				Nastavit\ &cestu\ k\ prohledávání\.\.\.
@@ -65,9 +79,10 @@ menutrans Toggle\ &Toolbar				P
 menutrans Toggle\ &Bottom\ Scrollbar			Pø&epnout\ dolní\ rolovací\ li¹tu
 menutrans Toggle\ &Left\ Scrollbar			Pøepnout\ &levou\ rolovací\ li¹tu
 menutrans Toggle\ &Right\ Scrollbar			Pøepnout\ p&ravou\ rolovací\ li¹tu
-	" {{{2 Edit -2
+" {{{2 Edit -2
 menutrans F&ile\ Settings				Nastavení\ so&uboru
 menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!	Pøepnout\ èíslování\ øá&dkù<Tab>:set\ nu!
+menutrans Toggle\ relati&ve\ Line\ Numbering<Tab>:set\ rnu! Pøepnout\ relativní\ èíslování\ øá&dkù<Tab>:set\ rnu!
 menutrans Toggle\ &List\ Mode<Tab>:set\ list!		Pøepnout\ &List\ mód<Tab>:set\ list!
 menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!		Pøepnout\ zala&mování\ øádkù<Tab>:set\ wrap!
 menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!	Pøepnout\ zl&om\ ve\ slovì<Tab>:set\ lbr!
@@ -78,10 +93,12 @@ menutrans &Shiftwidth					Nastav&it\ 
 menutrans Soft\ &Tabstop				Nastavit\ Soft\ &Tabstop
 menutrans Te&xt\ Width\.\.\.				©íøka\ te&xtu\.\.\.
 menutrans &File\ Format\.\.\.				&Formát\ souboru\.\.\.
-	" {{{2 Edit -3
+" {{{2 Edit -3
 menutrans C&olor\ Scheme		Barevné\ s&chéma
 menutrans &Keymap			Klávesová\ m&apa
-menutrans Select\ Fo&nt\.\.\.		Vybrat\ pís&mo\.\.\.
+if has("win32") || has("win16") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac")
+   menutrans Select\ Fo&nt\.\.\.		Vybrat\ pís&mo\.\.\.
+endif
 " }}}1
 
 " {{{ Programming menu
@@ -90,46 +107,52 @@ menutrans &Jump\ to\ this\ tag<Tab>g^]	&Sko
 menutrans Jump\ &back<Tab>^T		Skoèit\ &zpìt<Tab>^T
 menutrans Build\ &Tags\ File		&Vytvoøit\ soubor\ tagù
 
-menutrans &Spelling			&Kontrola\ pravopisu
-menutrans &Spell\ Check\ On		Kontrola\ pravopisu\ &zapnuta
-menutrans Spell\ Check\ &Off		Kontrola\ pravopisu\ &vypnuta
-menutrans To\ Next\ error<Tab>]s	&Dal¹í\ chyba<Tab>]s
-menutrans To\ Previous\ error<Tab>[s	&Pøedchozí\ chyba<Tab>[s
-menutrans Suggest\ Corrections<Tab>z?	&Návrh\ oprav<Tab>z?
-menutrans Repeat\ correction<Tab>:spellrepall	Zopakovat\ &opravu<Tab>:spellrepall
-menutrans Set\ language\ to\ "en"	Nastav\ jazyk\ na\ "en"
-menutrans Set\ language\ to\ "en_au"	Nastav\ jazyk\ na\ "en_au"
-menutrans Set\ language\ to\ "en_ca"	Nastav\ jazyk\ na\ "en_ca"
-menutrans Set\ language\ to\ "en_gb"	Nastav\ jazyk\ na\ "en_gb"
-menutrans Set\ language\ to\ "en_nz"	Nastav\ jazyk\ na\ "en_nz"
-menutrans Set\ language\ to\ "en_us"	Nastav\ jazyk\ na\ "en_us"
-menutrans Set\ language\ to\ "cz"	Nastav\ jazyk\ na\ "cz"
-menutrans Set\ language\ to\ "cs_cz"	Nastav\ jazyk\ na\ "cs_cz"
-menutrans &Find\ More\ Languages	Nalézt\ dal¹í\ &jazyky
+if has("spell")
+   menutrans &Spelling			&Kontrola\ pravopisu
+   menutrans &Spell\ Check\ On		&Zapnout\ kontrolu\ pravopisu
+   menutrans Spell\ Check\ &Off		&Vypnout \kontrolu\ pravopisu
+   menutrans To\ &Next\ error<Tab>]s	&Dal¹í\ chyba<Tab>]s
+   menutrans To\ &Previous\ error<Tab>[s	&Pøedchozí\ chyba<Tab>[s
+   menutrans Suggest\ &Corrections<Tab>z=	&Navrhnout\ opravy<Tab>z=
+   menutrans &Repeat\ correction<Tab>:spellrepall	Zopakovat\ &opravu<Tab>:spellrepall
+   menutrans Set\ language\ to\ "en"	Nastavit\ jazyk\ na\ "en"
+   menutrans Set\ language\ to\ "en_au"	Nastavit\ jazyk\ na\ "en_au"
+   menutrans Set\ language\ to\ "en_ca"	Nastavit\ jazyk\ na\ "en_ca"
+   menutrans Set\ language\ to\ "en_gb"	Nastavit\ jazyk\ na\ "en_gb"
+   menutrans Set\ language\ to\ "en_nz"	Nastavit\ jazyk\ na\ "en_nz"
+   menutrans Set\ language\ to\ "en_us"	Nastavit\ jazyk\ na\ "en_us"
+   menutrans &Find\ More\ Languages	Nalézt\ dal¹í\ &jazyky
+   let g:menutrans_set_lang_to = "Nastavit jazyk na"
+endif
 
-menutrans &Folding			&Foldy
-menutrans &Enable/Disable\ folds<Tab>zi &Ano/Ne<Tab>zi
-menutrans &View\ Cursor\ Line<Tab>zv	&Zobrazit\ øádek\ kurzoru<Tab>zv
-menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx		Zo&brazit\ pouze\ øádek\ kurzoru\ <Tab>zMzx
-menutrans C&lose\ more\ folds<Tab>zm	&Vyjmout\ jednu\ úroveò\ foldù<Tab>zm
-menutrans &Close\ all\ folds<Tab>zM	Zavøí&t\ v¹echny\ foldy<Tab>zM
-menutrans O&pen\ more\ folds<Tab>zr	Pøidat\ jedn&u\ úroveò\ foldù<Tab>zr
-menutrans &Open\ all\ folds<Tab>zR	&Otevøít\ v¹echny\ foldy<Tab>zR
-menutrans Fold\ Met&hod			Metoda\ &skládání
-	"menutrans M&anual			&Ruènì
-	"menutrans I&ndent			&Odsazení
-	"menutrans E&xpression			&Výraz
-	"menutrans S&yntax			&Syntax
-	"menutrans &Diff			&Diff
-	"menutrans Ma&rker			Ma&rker
-menutrans Create\ &Fold<Tab>zf		Vytvoøit\ &fold<Tab>zf
-menutrans &Delete\ Fold<Tab>zd		Vymazat\ fol&d<Tab>zd
-menutrans Delete\ &All\ Folds<Tab>zD	V&ymazat\ v¹echny\ foldy<Tab>zD
-menutrans Fold\ col&umn\ width		Sloupec\ zob&razení\ foldù
+if has("Folding")   
+   menutrans &Folding			&Skládání
+   menutrans &Enable/Disable\ folds<Tab>zi &Ano/Ne<Tab>zi
+   menutrans &View\ Cursor\ Line<Tab>zv	Zobrazit\ øádek\ &kurzoru<Tab>zv
+   menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx		Zobrazit\ &pouze\ øádek\ kurzoru\ <Tab>zMzx
+   menutrans C&lose\ more\ folds<Tab>zm	Slo¾it\ &jednu\ úroveò\ skladù<Tab>zm
+   menutrans &Close\ all\ folds<Tab>zM	Slo¾it\ v¹echny\ sklady<Tab>zM
+   menutrans O&pen\ more\ folds<Tab>zr	Pøidat\ jednu\ úroveò\ skladù<Tab>zr
+   menutrans &Open\ all\ folds<Tab>zR	&Otevøít\ v¹echny\ sklady<Tab>zR
+   menutrans Fold\ Met&hod			&Metoda\ skládání
+   menutrans M&anual			&Ruènì
+   menutrans I&ndent			&Odsazení
+   menutrans E&xpression	&Výraz
+   menutrans S&yntax			&Syntaxe
+   menutrans &Diff			&Rozdíly
+   menutrans Ma&rker			&Znaèky
+   menutrans Create\ &Fold<Tab>zf		Vytvoøit\ &sklad<Tab>zf
+   menutrans &Delete\ Fold<Tab>zd		Vymazat\ skla&d<Tab>zd
+   menutrans Delete\ &All\ Folds<Tab>zD	Vymazat\ v¹echny\ sklady<Tab>zD
+   menutrans Fold\ col&umn\ width		Sloupec\ zob&razení\ skladù
+endif
+
+if has("diff")
+   menutrans &Update			&Obnovit
+   menutrans &Get\ Block			&Sejmout\ Blok
+   menutrans &Put\ Block			&Vlo¾it\ Blok
+endif
 
-menutrans &Update			&Obnovit
-menutrans &Get\ Block			&Sejmout\ Blok
-menutrans &Put\ Block			&Vlo¾it\ Blok
 menutrans &Make<Tab>:make		&Make<Tab>:make
 menutrans &List\ Errors<Tab>:cl		Výpis\ &chyb<Tab>:cl
 menutrans L&ist\ Messages<Tab>:cl!	Výp&is\ zpráv<Tab>:cl!
@@ -142,7 +165,7 @@ menutrans SeT\ Compiler			Nas&taven
 menutrans &Update<Tab>:cwin		O&bnovit<Tab>:cwin
 menutrans &Open<Tab>:copen		&Otevøít<Tab>:copen
 menutrans &Close<Tab>:cclose		&Zavøít<Tab>:cclose
-menutrans &Set\ Compiler		N&astavit\ kompilátor
+menutrans Se&T\ Compiler		N&astavit\ kompilátor
 
 menutrans &Convert\ to\ HEX<Tab>:%!xxd	Pøevést\ do\ ¹estnáctkového\ formát&u<Tab>:%!xxd
 menutrans Conve&rt\ back<Tab>:%!xxd\ -r Pø&evést\ zpìt<Tab>:%!xxd\ -r
@@ -170,7 +193,6 @@ menutrans &Delete		Z&ru
 menutrans &Alternate		&Zmìnit
 menutrans &Next			&Dal¹í
 menutrans &Previous		&Pøedchozí
-menutrans [No\ File]		[®ádný\ soubor]
 " }}}
 
 " {{{ Menu Window
@@ -221,6 +243,8 @@ menutrans &Paste		&Vlo
 menutrans &Delete		&Smazat
 menutrans Select\ Blockwise	Vybrat\ blokovì
 menutrans Select\ &Word		Vybrat\ &slovo
+menutrans Select\ Pa&ragraph Vybrat\ &odstavec
+menutrans Select\ &Sentence   Vybrat\ vì&tu
 menutrans Select\ &Line		Vybrat\ &øádek
 menutrans Select\ &Block	Vybrat\ &blok
 menutrans Select\ &All		Vybrat\ &v¹e
@@ -228,42 +252,57 @@ menutrans Select\ &All		Vybrat\ &v
 
 " {{{ The GUI toolbar
 if has("toolbar")
-  if exists("*Do_toolbar_tmenu")
-    delfun Do_toolbar_tmenu
-  endif
-  fun Do_toolbar_tmenu()
-    tmenu ToolBar.Open		Otevøít soubor
-    tmenu ToolBar.Save		Ulo¾it soubor
-    tmenu ToolBar.SaveAll		Ulo¾it v¹echny soubory
-    tmenu ToolBar.Print		Tisk
-    tmenu ToolBar.Undo		Zpìt
-    tmenu ToolBar.Redo		Zru¹it vrácení
-    tmenu ToolBar.Cut		Vyøíznout
-    tmenu ToolBar.Copy		Kopírovat
-    tmenu ToolBar.Paste		Vlo¾it
-    tmenu ToolBar.Find		Hledat...
-    tmenu ToolBar.FindNext	Hledat dal¹í
-    tmenu ToolBar.FindPrev	Hledat pøedchozí
-    tmenu ToolBar.Replace		Nahradit...
-    if 0	" disabled; These are in the Windows menu
-      tmenu ToolBar.New		Nové okno
-      tmenu ToolBar.WinSplit	Rozdìlit okno
-      tmenu ToolBar.WinMax		Maximalizovat okno
-      tmenu ToolBar.WinMin		Minimalizovat okno
-      tmenu ToolBar.WinClose	Zavøít okno
-    endif
-    tmenu ToolBar.LoadSesn	Naèíst sezení
-    tmenu ToolBar.SaveSesn	Ulo¾it sezení
-    tmenu ToolBar.RunScript	Spustit skript
-    tmenu ToolBar.Make		Spustit make
-    tmenu ToolBar.Shell		Spustit shell
-    tmenu ToolBar.RunCtags	Spustit ctags
-    tmenu ToolBar.TagJump		Skoèit na tag pod kurzorem
-    tmenu ToolBar.Help		Nápovìda
-    tmenu ToolBar.FindHelp	Hledat nápovìdu k...
-  endfun
+   if exists("*Do_toolbar_tmenu")
+      delfun Do_toolbar_tmenu
+   endif
+   fun Do_toolbar_tmenu()
+      tmenu ToolBar.Open		Otevøít soubor
+      tmenu ToolBar.Save		Ulo¾it soubor
+      tmenu ToolBar.SaveAll		Ulo¾it v¹echny soubory
+      if has("printer") || has("unix")
+         tmenu ToolBar.Print		Tisk
+      endif
+      tmenu ToolBar.Undo		Zpìt
+      tmenu ToolBar.Redo		Zru¹it vrácení
+      tmenu ToolBar.Cut		Vyøíznout
+      tmenu ToolBar.Copy		Kopírovat
+      tmenu ToolBar.Paste		Vlo¾it
+      tmenu ToolBar.Find		Hledat...
+      tmenu ToolBar.FindNext	Hledat dal¹í
+      tmenu ToolBar.FindPrev	Hledat pøedchozí
+      tmenu ToolBar.Replace		Nahradit...
+      if 0	" disabled; These are in the Windows menu
+         tmenu ToolBar.New		Nové okno
+         tmenu ToolBar.WinSplit	Rozdìlit okno
+         tmenu ToolBar.WinMax		Maximalizovat okno
+         tmenu ToolBar.WinMin		Minimalizovat okno
+         tmenu ToolBar.WinClose	Zavøít okno
+      endif
+      tmenu ToolBar.LoadSesn	Naèíst sezení
+      tmenu ToolBar.SaveSesn	Ulo¾it sezení
+      tmenu ToolBar.RunScript	Spustit skript
+      tmenu ToolBar.Make		Spustit make
+      tmenu ToolBar.Shell		Spustit shell
+      tmenu ToolBar.RunCtags	Spustit ctags
+      tmenu ToolBar.TagJump		Skoèit na tag pod kurzorem
+      tmenu ToolBar.Help		Nápovìda
+      tmenu ToolBar.FindHelp	Hledat nápovìdu k...
+   endfun
 endif
 " }}}
 
+" {{{ DIALOG TEXTS
+let g:menutrans_no_file = "[®ádný soubor]"
+let g:menutrans_help_dialog = "Zadejte hledaný pøíkaz nebo slovo:\n\n\tPøidejte i_ pro pøíkazy vkládacího re¾imu (napø. i_CTRL-X)\n\tPøidejte c_ pro pøíkazy pøíkazové øádky (napø. c_<Del>)\n\tPøidejte ' pro jméno volby (napø. 'shiftwidth')"
+let g:menutrans_path_dialog = "Zadejte cesty pro vyhledávání souborù. Jednotlivé cesty oddìlte èárkou"
+let g:menutrans_tags_dialog = "Zadejte jména souborù s tagy. Jména oddìlte èárkami."
+let g:menutrans_textwidth_dialog = "Zadejte délku øádku (0 pro zakázání formátování):"
+let g:menutrans_fileformat_dialog = "Vyberte typ konce øádkù"
+" }}}" 
+
 let &cpo = s:keepcpo
 unlet s:keepcpo
+
+
+
+" vim:set foldmethod=marker expandtab tabstop=3 shiftwidth=3:
diff --git a/runtime/lang/menu_cs_cz.latin1.vim b/runtime/lang/menu_cs_cz.latin1.vim
index efb28a0037..3bf608de81 100644
--- a/runtime/lang/menu_cs_cz.latin1.vim
+++ b/runtime/lang/menu_cs_cz.latin1.vim
@@ -1,3 +1,3 @@
 " Menu Translations:	Czech
 
-source <sfile>:p:h/menu_czech_czech_republic.1252.vim
+source <sfile>:p:h/menu_czech_czech_republic.ascii.vim
diff --git a/runtime/lang/menu_cs_cz.utf-8.vim b/runtime/lang/menu_cs_cz.utf-8.vim
new file mode 100644
index 0000000000..91a8eccd46
--- /dev/null
+++ b/runtime/lang/menu_cs_cz.utf-8.vim
@@ -0,0 +1,308 @@
+" Menu Translations:    Czech (UTF-8)
+" Maintainer:           Jiri Sedlak <jiri_sedlak@users.sourceforge.net>
+" Previous maintainer:  Jiri Brezina
+" Based on:             menu.vim (2012-10-21)
+
+" Quit when menu translations have already been done.
+if exists("did_menu_trans")
+   finish
+endif
+
+let did_menu_trans = 1
+let s:keepcpo= &cpo
+set cpo&vim
+
+scriptencoding utf-8
+
+" {{{ File menu
+menutrans &File				&Soubor
+menutrans &Open\.\.\.<Tab>:e		&Otevřít\.\.\.<Tab>:e
+menutrans Sp&lit-Open\.\.\.<Tab>:sp	Otevřít\ v\ no&vém\ okně\.\.\.<Tab>:sp
+menutrans Open\ Tab\.\.\.<Tab>:tabnew	Otevřít\ tab\.\.\.<Tab>:tabnew
+menutrans &New<Tab>:enew		&Nový<Tab>:enew
+menutrans &Close<Tab>:close		&Zavřít<Tab>:close
+menutrans &Save<Tab>:w			&Uložit<Tab>:w
+menutrans Save\ &As\.\.\.<Tab>:sav	Uložit\ &jako\.\.\.<Tab>:sav
+if has("printer") || has("unix")
+   menutrans &Print			&Tisk
+endif
+menutrans Sa&ve-Exit<Tab>:wqa		U&ložit\ a\ ukončit<Tab>:wqa
+menutrans E&xit<Tab>:qa			&Ukončit<Tab>:qa
+
+if has("diff")
+   menutrans Split\ &Diff\ with\.\.\.	Rozdělit\ okno\ -\ &Diff\.\.\.
+   menutrans Split\ Patched\ &By\.\.\.	Rozdělit\ okno\ -\ &Patch\.\.\.
+endif
+" }}}
+
+" {{{ Edit menu
+menutrans &Edit				Úpr&avy
+menutrans &Undo<Tab>u			&Zpět<Tab>u
+menutrans &Redo<Tab>^R			Z&rušit\ vrácení<Tab>^R
+menutrans Rep&eat<Tab>\.		&Opakovat<Tab>\.
+menutrans Cu&t<Tab>"+x			&Vyříznout<Tab>"+x
+menutrans &Copy<Tab>"+y			&Kopírovat<Tab>"+y
+menutrans &Paste<Tab>"+gP		V&ložit<Tab>"+gP
+menutrans Put\ &Before<Tab>[p		Vložit\ &před<Tab>[p
+menutrans Put\ &After<Tab>]p		Vloži&t\ za<Tab>]p
+if has("win32") || has("win16")
+   menutrans &Delete<Tab>x			&Smazat<Tab>x
+endif
+menutrans &Select\ All<Tab>ggVG		Vy&brat\ vše<Tab>ggVG
+if has("win32")  || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_motif")
+   menutrans &Find\.\.\.			&Hledat\.\.\.
+   menutrans Find\ and\ Rep&lace\.\.\.	&Nahradit\.\.\.
+else
+   menutrans Find<Tab>/ &Hledat<Tab>/
+   menutrans Find\ and\ Rep&lace<Tab>:%s  &Nahradit<Tab>:%s
+   menutrans Find\ and\ Rep&lace<Tab>:s   &Nahradit<Tab>:s
+endif
+menutrans Settings\ &Window		Nastav&ení\ okna
+" {{{2 Edit -1
+menutrans Startup\ &Settings  Počáteční\ &nastavení
+menutrans &Global\ Settings				&Globální\ nastavení
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	&Přepnout\ zvýraznění\ vzoru<Tab>:set\ hls!
+menutrans Toggle\ &Ignore-case<Tab>:set\ ic!		Přepnout\ ignorování\ &VERZÁLEK<Tab>:set\ ic!
+menutrans Toggle\ &Showmatch<Tab>:set\ sm!		Přepnout\ &Showmatch\ \{\(\[\])\}<Tab>:set\ sm!
+menutrans &Context\ lines				Zobrazit\ konte&xt\ kurzoru
+menutrans &Virtual\ Edit				Virtuální\ p&ozice\ kurzoru
+menutrans Never						Nikdy
+menutrans Block\ Selection				Výběr\ Bloku
+menutrans Insert\ mode					Insert\ mód
+menutrans Block\ and\ Insert				Blok\ a\ Insert
+menutrans Always					Vždycky
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!		Přepnout\ Insert\ mó&d<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!		Přepnout\ kompatibilní\ režim\ s\ 'vi'<Tab>:set\ cp!
+menutrans Search\ &Path\.\.\.				Nastavit\ &cestu\ k\ prohledávání\.\.\.
+menutrans Ta&g\ Files\.\.\.				Ta&g\ soubory\.\.\.
+menutrans Toggle\ &Toolbar				Přepnout\ &Toolbar
+menutrans Toggle\ &Bottom\ Scrollbar			Př&epnout\ dolní\ rolovací\ lištu
+menutrans Toggle\ &Left\ Scrollbar			Přepnout\ &levou\ rolovací\ lištu
+menutrans Toggle\ &Right\ Scrollbar			Přepnout\ p&ravou\ rolovací\ lištu
+" {{{2 Edit -2
+menutrans F&ile\ Settings				Nastavení\ so&uboru
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!	Přepnout\ číslování\ řá&dků<Tab>:set\ nu!
+menutrans Toggle\ relati&ve\ Line\ Numbering<Tab>:set\ rnu! Přepnout\ relativní\ číslování\ řá&dků<Tab>:set\ rnu!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list!		Přepnout\ &List\ mód<Tab>:set\ list!
+menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!		Přepnout\ zala&mování\ řádků<Tab>:set\ wrap!
+menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!	Přepnout\ zl&om\ ve\ slově<Tab>:set\ lbr!
+menutrans Toggle\ &expand-tab<Tab>:set\ et!		Přepnout\ &expand-tab<Tab>:set\ et!
+menutrans Toggle\ &auto-indent<Tab>:set\ ai!		Přepnout\ &auto-indent<Tab>:set\ ai!
+menutrans Toggle\ &C-indenting<Tab>:set\ cin!		Přepnout\ &C-indenting<Tab>:set\ cin!
+menutrans &Shiftwidth					Nastav&it\ šířku\ od&sazení
+menutrans Soft\ &Tabstop				Nastavit\ Soft\ &Tabstop
+menutrans Te&xt\ Width\.\.\.				Šířka\ te&xtu\.\.\.
+menutrans &File\ Format\.\.\.				&Formát\ souboru\.\.\.
+" {{{2 Edit -3
+menutrans C&olor\ Scheme		Barevné\ s&chéma
+menutrans &Keymap			Klávesová\ m&apa
+if has("win32") || has("win16") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac")
+   menutrans Select\ Fo&nt\.\.\.		Vybrat\ pís&mo\.\.\.
+endif
+" }}}1
+
+" {{{ Programming menu
+menutrans &Tools			Nást&roje
+menutrans &Jump\ to\ this\ tag<Tab>g^]	&Skočit\ na\ tag<Tab>g^]
+menutrans Jump\ &back<Tab>^T		Skočit\ &zpět<Tab>^T
+menutrans Build\ &Tags\ File		&Vytvořit\ soubor\ tagů
+
+if has("spell")
+   menutrans &Spelling			&Kontrola\ pravopisu
+   menutrans &Spell\ Check\ On		&Zapnout\ kontrolu\ pravopisu
+   menutrans Spell\ Check\ &Off		&Vypnout \kontrolu\ pravopisu
+   menutrans To\ &Next\ error<Tab>]s	&Další\ chyba<Tab>]s
+   menutrans To\ &Previous\ error<Tab>[s	&Předchozí\ chyba<Tab>[s
+   menutrans Suggest\ &Corrections<Tab>z=	&Navrhnout\ opravy<Tab>z=
+   menutrans &Repeat\ correction<Tab>:spellrepall	Zopakovat\ &opravu<Tab>:spellrepall
+   menutrans Set\ language\ to\ "en"	Nastavit\ jazyk\ na\ "en"
+   menutrans Set\ language\ to\ "en_au"	Nastavit\ jazyk\ na\ "en_au"
+   menutrans Set\ language\ to\ "en_ca"	Nastavit\ jazyk\ na\ "en_ca"
+   menutrans Set\ language\ to\ "en_gb"	Nastavit\ jazyk\ na\ "en_gb"
+   menutrans Set\ language\ to\ "en_nz"	Nastavit\ jazyk\ na\ "en_nz"
+   menutrans Set\ language\ to\ "en_us"	Nastavit\ jazyk\ na\ "en_us"
+   menutrans &Find\ More\ Languages	Nalézt\ další\ &jazyky
+   let g:menutrans_set_lang_to = "Nastavit jazyk na"
+endif
+
+if has("Folding")   
+   menutrans &Folding			&Skládání
+   menutrans &Enable/Disable\ folds<Tab>zi &Ano/Ne<Tab>zi
+   menutrans &View\ Cursor\ Line<Tab>zv	Zobrazit\ řádek\ &kurzoru<Tab>zv
+   menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx		Zobrazit\ &pouze\ řádek\ kurzoru\ <Tab>zMzx
+   menutrans C&lose\ more\ folds<Tab>zm	Složit\ &jednu\ úroveň\ skladů<Tab>zm
+   menutrans &Close\ all\ folds<Tab>zM	Složit\ všechny\ sklady<Tab>zM
+   menutrans O&pen\ more\ folds<Tab>zr	Přidat\ jednu\ úroveň\ skladů<Tab>zr
+   menutrans &Open\ all\ folds<Tab>zR	&Otevřít\ všechny\ sklady<Tab>zR
+   menutrans Fold\ Met&hod			&Metoda\ skládání
+   menutrans M&anual			&Ručně
+   menutrans I&ndent			&Odsazení
+   menutrans E&xpression	&Výraz
+   menutrans S&yntax			&Syntaxe
+   menutrans &Diff			&Rozdíly
+   menutrans Ma&rker			&Značky
+   menutrans Create\ &Fold<Tab>zf		Vytvořit\ &sklad<Tab>zf
+   menutrans &Delete\ Fold<Tab>zd		Vymazat\ skla&d<Tab>zd
+   menutrans Delete\ &All\ Folds<Tab>zD	Vymazat\ všechny\ sklady<Tab>zD
+   menutrans Fold\ col&umn\ width		Sloupec\ zob&razení\ skladů
+endif
+
+if has("diff")
+   menutrans &Update			&Obnovit
+   menutrans &Get\ Block			&Sejmout\ Blok
+   menutrans &Put\ Block			&Vložit\ Blok
+endif
+
+menutrans &Make<Tab>:make		&Make<Tab>:make
+menutrans &List\ Errors<Tab>:cl		Výpis\ &chyb<Tab>:cl
+menutrans L&ist\ Messages<Tab>:cl!	Výp&is\ zpráv<Tab>:cl!
+menutrans &Next\ Error<Tab>:cn		Další\ ch&yba<Tab>:cn
+menutrans &Previous\ Error<Tab>:cp	&Předchozí\ chyba<Tab>:cp
+menutrans &Older\ List<Tab>:cold	Sta&rší\ seznam<Tab>:cold
+menutrans N&ewer\ List<Tab>:cnew	N&ovější\ seznam<Tab>:cnew
+menutrans Error\ &Window		Chybové\ o&kno
+menutrans SeT\ Compiler			Nas&tavení\ kompilátoru
+menutrans &Update<Tab>:cwin		O&bnovit<Tab>:cwin
+menutrans &Open<Tab>:copen		&Otevřít<Tab>:copen
+menutrans &Close<Tab>:cclose		&Zavřít<Tab>:cclose
+menutrans Se&T\ Compiler		N&astavit\ kompilátor
+
+menutrans &Convert\ to\ HEX<Tab>:%!xxd	Převést\ do\ šestnáctkového\ formát&u<Tab>:%!xxd
+menutrans Conve&rt\ back<Tab>:%!xxd\ -r Př&evést\ zpět<Tab>:%!xxd\ -r
+" }}}
+
+" {{{ Syntax menu
+menutrans &Syntax		Synta&xe
+menutrans Set\ '&syntax'\ only	Nastavit\ pouze\ 'synta&x'
+menutrans Set\ '&filetype'\ too	Nastavit\ také\ '&filetype'
+menutrans &Off			&Vypnout
+menutrans &Manual		&Ručně
+menutrans A&utomatic		A&utomaticky
+menutrans on/off\ for\ &This\ file	&Přepnout\ (pro\ tento\ soubor)
+menutrans o&ff\ (this\ file)	vyp&nout\ (pro\ tento\ soubor)
+menutrans Co&lor\ test		Test\ &barev
+menutrans &Highlight\ test	&Test\ zvýrazňování
+menutrans &Convert\ to\ HTML	Převést\ &do\ HTML
+menutrans &Show\ filetypes\ in\ menu	&Zobrazit\ výběr\ možností
+" }}}
+
+" {{{ Menu Buffers
+menutrans &Buffers		&Buffery
+menutrans &Refresh\ menu	&Obnovit\ menu
+menutrans &Delete		Z&rušit
+menutrans &Alternate		&Změnit
+menutrans &Next			&Další
+menutrans &Previous		&Předchozí
+" }}}
+
+" {{{ Menu Window
+menutrans &Window			&Okna
+menutrans &New<Tab>^Wn			&Nové<Tab>^Wn
+menutrans S&plit<Tab>^Ws		&Rozdělit<Tab>^Ws
+menutrans Sp&lit\ To\ #<Tab>^W^^	Ro&zdělit\ na\ #<Tab>^W^^
+menutrans Split\ &Vertically<Tab>^Wv	Rozdělit\ &vertikálně<Tab>^Wv
+menutrans Split\ File\ E&xplorer	Rozdělit\ -\ File\ E&xplorer
+menutrans Move\ &To			&Přesun
+menutrans &Top<Tab>^WK			&Nahoru<Tab>^WK
+menutrans &Bottom<Tab>^WJ		&Dolu<Tab>^WJ
+menutrans &Left\ side<Tab>^WH		&Vlevo<Tab>^WH
+menutrans &Right\ side<Tab>^WL		Vp&ravo<Tab>^WL
+
+menutrans &Close<Tab>^Wc		Zavří&t<Tab>^Wc
+menutrans Close\ &Other(s)<Tab>^Wo	Zavřít\ &ostatní<Tab>^Wo
+menutrans Ne&xt<Tab>^Ww			&Další<Tab>^Ww
+menutrans P&revious<Tab>^WW		&Předchozí<Tab>^WW
+menutrans &Equal\ Size<Tab>^W=		&Stejná\ výška<Tab>^W=
+menutrans &Max\ Height<Tab>^W_		Maximální\ výš&ka<Tab>^W_
+menutrans M&in\ Height<Tab>^W1_		M&inimální\ výška<Tab>^W1_
+menutrans Max\ &Width<Tab>^W\|		&Maximální\ šířka<Tab>^W\|
+menutrans Min\ Widt&h<Tab>^W1\|		Minimální\ šířk&a<Tab>^W1\|
+menutrans Rotate\ &Up<Tab>^WR		Rotovat\ na&horu<Tab>^WR
+menutrans Rotate\ &Down<Tab>^Wr		Rotovat\ &dolů<Tab>^Wr
+
+" {{{ Help menu
+menutrans &Help			&Nápověda
+menutrans &Overview<Tab><F1>	&Přehled<Tab><F1>
+menutrans &User\ Manual		&Uživatelský\ Manuál
+menutrans &How-to\ links	Ho&wto
+menutrans &GUI			&Grafické\ rozhraní
+menutrans &Credits		&Autoři
+menutrans Co&pying		&Licenční\ politika
+menutrans &Sponsor/Register	Sponzorování/&Registrace
+menutrans &Find\.\.\.		&Hledat\.\.\.
+menutrans O&rphans		O&siřelé\ děti
+menutrans &Version		&Verze
+menutrans &About		&O\ aplikaci
+" }}}
+
+" {{{ The popup menu
+menutrans &Undo			&Zpět
+menutrans Cu&t			&Vyříznout
+menutrans &Copy			&Kopírovat
+menutrans &Paste		&Vložit
+menutrans &Delete		&Smazat
+menutrans Select\ Blockwise	Vybrat\ blokovÄ›
+menutrans Select\ &Word		Vybrat\ &slovo
+menutrans Select\ Pa&ragraph Vybrat\ &odstavec
+menutrans Select\ &Sentence   Vybrat\ vÄ›&tu
+menutrans Select\ &Line		Vybrat\ &řádek
+menutrans Select\ &Block	Vybrat\ &blok
+menutrans Select\ &All		Vybrat\ &vše
+" }}}
+
+" {{{ The GUI toolbar
+if has("toolbar")
+   if exists("*Do_toolbar_tmenu")
+      delfun Do_toolbar_tmenu
+   endif
+   fun Do_toolbar_tmenu()
+      tmenu ToolBar.Open		Otevřít soubor
+      tmenu ToolBar.Save		Uložit soubor
+      tmenu ToolBar.SaveAll		Uložit všechny soubory
+      if has("printer") || has("unix")
+         tmenu ToolBar.Print		Tisk
+      endif
+      tmenu ToolBar.Undo		Zpět
+      tmenu ToolBar.Redo		Zrušit vrácení
+      tmenu ToolBar.Cut		Vyříznout
+      tmenu ToolBar.Copy		Kopírovat
+      tmenu ToolBar.Paste		Vložit
+      tmenu ToolBar.Find		Hledat...
+      tmenu ToolBar.FindNext	Hledat další
+      tmenu ToolBar.FindPrev	Hledat předchozí
+      tmenu ToolBar.Replace		Nahradit...
+      if 0	" disabled; These are in the Windows menu
+         tmenu ToolBar.New		Nové okno
+         tmenu ToolBar.WinSplit	Rozdělit okno
+         tmenu ToolBar.WinMax		Maximalizovat okno
+         tmenu ToolBar.WinMin		Minimalizovat okno
+         tmenu ToolBar.WinClose	Zavřít okno
+      endif
+      tmenu ToolBar.LoadSesn	Načíst sezení
+      tmenu ToolBar.SaveSesn	Uložit sezení
+      tmenu ToolBar.RunScript	Spustit skript
+      tmenu ToolBar.Make		Spustit make
+      tmenu ToolBar.Shell		Spustit shell
+      tmenu ToolBar.RunCtags	Spustit ctags
+      tmenu ToolBar.TagJump		Skočit na tag pod kurzorem
+      tmenu ToolBar.Help		Nápověda
+      tmenu ToolBar.FindHelp	Hledat nápovědu k...
+   endfun
+endif
+" }}}
+
+" {{{ DIALOG TEXTS
+let g:menutrans_no_file = "[Žádný soubor]"
+let g:menutrans_help_dialog = "Zadejte hledaný příkaz nebo slovo:\n\n\tPřidejte i_ pro příkazy vkládacího režimu (např. i_CTRL-X)\n\tPřidejte c_ pro příkazy příkazové řádky (např. c_<Del>)\n\tPřidejte ' pro jméno volby (např. 'shiftwidth')"
+let g:menutrans_path_dialog = "Zadejte cesty pro vyhledávání souborů. Jednotlivé cesty oddělte čárkou"
+let g:menutrans_tags_dialog = "Zadejte jména souborů s tagy. Jména oddělte čárkami."
+let g:menutrans_textwidth_dialog = "Zadejte délku řádku (0 pro zakázání formátování):"
+let g:menutrans_fileformat_dialog = "Vyberte typ konce řádků"
+" }}}" 
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+
+
+" vim:set foldmethod=marker expandtab tabstop=3 shiftwidth=3:
diff --git a/runtime/lang/menu_czech_czech_republic.1250.vim b/runtime/lang/menu_czech_czech_republic.1250.vim
index ebaab9b679..f9c85d038a 100644
--- a/runtime/lang/menu_czech_czech_republic.1250.vim
+++ b/runtime/lang/menu_czech_czech_republic.1250.vim
@@ -1,13 +1,13 @@
-" Menu Translations:	Czech for MS-Windows
-" Maintainer:		Jiri Brezina <brzj@seznam.cz>
-" vim:set foldmethod=marker:
-" $Revision: 1.3 $
-" $Date: 2005/12/19 22:13:30 $
+" Menu Translations:    Czech (CP1250)
+" Maintainer:           Jiri Sedlak <jiri_sedlak@users.sourceforge.net>
+" Previous maintainer:  Jiri Brezina
+" Based on:             menu.vim (2012-10-21)
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
-  finish
+   finish
 endif
+
 let did_menu_trans = 1
 let s:keepcpo= &cpo
 set cpo&vim
@@ -18,15 +18,21 @@ scriptencoding cp1250
 menutrans &File				&Soubor
 menutrans &Open\.\.\.<Tab>:e		&Otevøít\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	Otevøít\ v\ no&vém\ oknì\.\.\.<Tab>:sp
+menutrans Open\ Tab\.\.\.<Tab>:tabnew	Otevøít\ tab\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		&Nový<Tab>:enew
 menutrans &Close<Tab>:close		&Zavøít<Tab>:close
 menutrans &Save<Tab>:w			&Uložit<Tab>:w
 menutrans Save\ &As\.\.\.<Tab>:sav	Uložit\ &jako\.\.\.<Tab>:sav
-menutrans Split\ &Diff\ with\.\.\.	Rozdìlit\ okno\ -\ &Diff\.\.\.
-menutrans Split\ Patched\ &By\.\.\.	Rozdìlit\ okno\ -\ &Patch\.\.\.
-menutrans &Print			&Tisk
-menutrans Sa&ve-Exit<Tab>:wqa		U&ložit\ -\ Konec<Tab>:wqa
-menutrans E&xit<Tab>:qa			&Konec<Tab>:qa
+if has("printer") || has("unix")
+   menutrans &Print			&Tisk
+endif
+menutrans Sa&ve-Exit<Tab>:wqa		U&ložit\ a\ ukonèit<Tab>:wqa
+menutrans E&xit<Tab>:qa			&Ukonèit<Tab>:qa
+
+if has("diff")
+   menutrans Split\ &Diff\ with\.\.\.	Rozdìlit\ okno\ -\ &Diff\.\.\.
+   menutrans Split\ Patched\ &By\.\.\.	Rozdìlit\ okno\ -\ &Patch\.\.\.
+endif
 " }}}
 
 " {{{ Edit menu
@@ -39,24 +45,32 @@ menutrans &Copy<Tab>"+y			&Kop
 menutrans &Paste<Tab>"+gP		V&ložit<Tab>"+gP
 menutrans Put\ &Before<Tab>[p		Vložit\ &pøed<Tab>[p
 menutrans Put\ &After<Tab>]p		Vloži&t\ za<Tab>]p
-menutrans &Delete<Tab>x			&Smazat<Tab>x
+if has("win32") || has("win16")
+   menutrans &Delete<Tab>x			&Smazat<Tab>x
+endif
 menutrans &Select\ All<Tab>ggVG		Vy&brat\ vše<Tab>ggVG
-menutrans &Find\.\.\.			&Hledat\.\.\.
-menutrans Find\ and\ Rep&lace\.\.\.	&Nahradit\.\.\.
-menutrans Options\.\.\.			Volb&y\.\.\.
+if has("win32")  || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_motif")
+   menutrans &Find\.\.\.			&Hledat\.\.\.
+   menutrans Find\ and\ Rep&lace\.\.\.	&Nahradit\.\.\.
+else
+   menutrans Find<Tab>/ &Hledat<Tab>/
+   menutrans Find\ and\ Rep&lace<Tab>:%s  &Nahradit<Tab>:%s
+   menutrans Find\ and\ Rep&lace<Tab>:s   &Nahradit<Tab>:s
+endif
 menutrans Settings\ &Window		Nastav&ení\ okna
-	" {{{2 Edit -1
+" {{{2 Edit -1
+menutrans Startup\ &Settings  Poèáteèní\ &nastavení
 menutrans &Global\ Settings				&Globální\ nastavení
 menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	&Pøepnout\ zvýraznìní\ vzoru<Tab>:set\ hls!
 menutrans Toggle\ &Ignore-case<Tab>:set\ ic!		Pøepnout\ ignorování\ &VERZÁLEK<Tab>:set\ ic!
 menutrans Toggle\ &Showmatch<Tab>:set\ sm!		Pøepnout\ &Showmatch\ \{\(\[\])\}<Tab>:set\ sm!
 menutrans &Context\ lines				Zobrazit\ konte&xt\ kurzoru
 menutrans &Virtual\ Edit				Virtuální\ p&ozice\ kurzoru
-	menutrans Never						Nikdy
-	menutrans Block\ Selection				Výbìr\ Bloku
-	menutrans Insert\ mode					Insert\ mód
-	menutrans Block\ and\ Insert				Blok\ a\ Insert
-	menutrans Always					Vždycky
+menutrans Never						Nikdy
+menutrans Block\ Selection				Výbìr\ Bloku
+menutrans Insert\ mode					Insert\ mód
+menutrans Block\ and\ Insert				Blok\ a\ Insert
+menutrans Always					Vždycky
 menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!		Pøepnout\ Insert\ mó&d<Tab>:set\ im!
 menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!		Pøepnout\ kompatibilní\ režim\ s\ 'vi'<Tab>:set\ cp!
 menutrans Search\ &Path\.\.\.				Nastavit\ &cestu\ k\ prohledávání\.\.\.
@@ -65,9 +79,10 @@ menutrans Toggle\ &Toolbar				P
 menutrans Toggle\ &Bottom\ Scrollbar			Pø&epnout\ dolní\ rolovací\ lištu
 menutrans Toggle\ &Left\ Scrollbar			Pøepnout\ &levou\ rolovací\ lištu
 menutrans Toggle\ &Right\ Scrollbar			Pøepnout\ p&ravou\ rolovací\ lištu
-	" {{{2 Edit -2
+" {{{2 Edit -2
 menutrans F&ile\ Settings				Nastavení\ so&uboru
 menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!	Pøepnout\ èíslování\ øá&dkù<Tab>:set\ nu!
+menutrans Toggle\ relati&ve\ Line\ Numbering<Tab>:set\ rnu! Pøepnout\ relativní\ èíslování\ øá&dkù<Tab>:set\ rnu!
 menutrans Toggle\ &List\ Mode<Tab>:set\ list!		Pøepnout\ &List\ mód<Tab>:set\ list!
 menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!		Pøepnout\ zala&mování\ øádkù<Tab>:set\ wrap!
 menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!	Pøepnout\ zl&om\ ve\ slovì<Tab>:set\ lbr!
@@ -78,10 +93,12 @@ menutrans &Shiftwidth					Nastav&it\ 
 menutrans Soft\ &Tabstop				Nastavit\ Soft\ &Tabstop
 menutrans Te&xt\ Width\.\.\.				Šíøka\ te&xtu\.\.\.
 menutrans &File\ Format\.\.\.				&Formát\ souboru\.\.\.
-	" {{{2 Edit -3
+" {{{2 Edit -3
 menutrans C&olor\ Scheme		Barevné\ s&chéma
 menutrans &Keymap			Klávesová\ m&apa
-menutrans Select\ Fo&nt\.\.\.		Vybrat\ pís&mo\.\.\.
+if has("win32") || has("win16") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac")
+   menutrans Select\ Fo&nt\.\.\.		Vybrat\ pís&mo\.\.\.
+endif
 " }}}1
 
 " {{{ Programming menu
@@ -90,46 +107,52 @@ menutrans &Jump\ to\ this\ tag<Tab>g^]	&Sko
 menutrans Jump\ &back<Tab>^T		Skoèit\ &zpìt<Tab>^T
 menutrans Build\ &Tags\ File		&Vytvoøit\ soubor\ tagù
 
-menutrans &Spelling			&Kontrola\ pravopisu
-menutrans &Spell\ Check\ On		Kontrola\ pravopisu\ &zapnuta
-menutrans Spell\ Check\ &Off		Kontrola\ pravopisu\ &vypnuta
-menutrans To\ Next\ error<Tab>]s	&Další\ chyba<Tab>]s
-menutrans To\ Previous\ error<Tab>[s	&Pøedchozí\ chyba<Tab>[s
-menutrans Suggest\ Corrections<Tab>z?	&Návrh\ oprav<Tab>z?
-menutrans Repeat\ correction<Tab>:spellrepall	Zopakovat\ &opravu<Tab>:spellrepall
-menutrans Set\ language\ to\ "en"	Nastav\ jazyk\ na\ "en"
-menutrans Set\ language\ to\ "en_au"	Nastav\ jazyk\ na\ "en_au"
-menutrans Set\ language\ to\ "en_ca"	Nastav\ jazyk\ na\ "en_ca"
-menutrans Set\ language\ to\ "en_gb"	Nastav\ jazyk\ na\ "en_gb"
-menutrans Set\ language\ to\ "en_nz"	Nastav\ jazyk\ na\ "en_nz"
-menutrans Set\ language\ to\ "en_us"	Nastav\ jazyk\ na\ "en_us"
-menutrans Set\ language\ to\ "cz"	Nastav\ jazyk\ na\ "cz"
-menutrans Set\ language\ to\ "cs_cz"	Nastav\ jazyk\ na\ "cs_cz"
-menutrans &Find\ More\ Languages	Nalézt\ další\ &jazyky
+if has("spell")
+   menutrans &Spelling			&Kontrola\ pravopisu
+   menutrans &Spell\ Check\ On		&Zapnout\ kontrolu\ pravopisu
+   menutrans Spell\ Check\ &Off		&Vypnout \kontrolu\ pravopisu
+   menutrans To\ &Next\ error<Tab>]s	&Další\ chyba<Tab>]s
+   menutrans To\ &Previous\ error<Tab>[s	&Pøedchozí\ chyba<Tab>[s
+   menutrans Suggest\ &Corrections<Tab>z=	&Navrhnout\ opravy<Tab>z=
+   menutrans &Repeat\ correction<Tab>:spellrepall	Zopakovat\ &opravu<Tab>:spellrepall
+   menutrans Set\ language\ to\ "en"	Nastavit\ jazyk\ na\ "en"
+   menutrans Set\ language\ to\ "en_au"	Nastavit\ jazyk\ na\ "en_au"
+   menutrans Set\ language\ to\ "en_ca"	Nastavit\ jazyk\ na\ "en_ca"
+   menutrans Set\ language\ to\ "en_gb"	Nastavit\ jazyk\ na\ "en_gb"
+   menutrans Set\ language\ to\ "en_nz"	Nastavit\ jazyk\ na\ "en_nz"
+   menutrans Set\ language\ to\ "en_us"	Nastavit\ jazyk\ na\ "en_us"
+   menutrans &Find\ More\ Languages	Nalézt\ další\ &jazyky
+   let g:menutrans_set_lang_to = "Nastavit jazyk na"
+endif
 
-menutrans &Folding			&Foldy
-menutrans &Enable/Disable\ folds<Tab>zi &Ano/Ne<Tab>zi
-menutrans &View\ Cursor\ Line<Tab>zv	&Zobrazit\ øádek\ kurzoru<Tab>zv
-menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx		Zo&brazit\ pouze\ øádek\ kurzoru\ <Tab>zMzx
-menutrans C&lose\ more\ folds<Tab>zm	&Vyjmout\ jednu\ úroveò\ foldù<Tab>zm
-menutrans &Close\ all\ folds<Tab>zM	Zavøí&t\ všechny\ foldy<Tab>zM
-menutrans O&pen\ more\ folds<Tab>zr	Pøidat\ jedn&u\ úroveò\ foldù<Tab>zr
-menutrans &Open\ all\ folds<Tab>zR	&Otevøít\ všechny\ foldy<Tab>zR
-menutrans Fold\ Met&hod			Metoda\ &skládání
-	"menutrans M&anual			&Ruènì
-	"menutrans I&ndent			&Odsazení
-	"menutrans E&xpression			&Výraz
-	"menutrans S&yntax			&Syntax
-	"menutrans &Diff			&Diff
-	"menutrans Ma&rker			Ma&rker
-menutrans Create\ &Fold<Tab>zf		Vytvoøit\ &fold<Tab>zf
-menutrans &Delete\ Fold<Tab>zd		Vymazat\ fol&d<Tab>zd
-menutrans Delete\ &All\ Folds<Tab>zD	V&ymazat\ všechny\ foldy<Tab>zD
-menutrans Fold\ col&umn\ width		Sloupec\ zob&razení\ foldù
+if has("Folding")   
+   menutrans &Folding			&Skládání
+   menutrans &Enable/Disable\ folds<Tab>zi &Ano/Ne<Tab>zi
+   menutrans &View\ Cursor\ Line<Tab>zv	Zobrazit\ øádek\ &kurzoru<Tab>zv
+   menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx		Zobrazit\ &pouze\ øádek\ kurzoru\ <Tab>zMzx
+   menutrans C&lose\ more\ folds<Tab>zm	Složit\ &jednu\ úroveò\ skladù<Tab>zm
+   menutrans &Close\ all\ folds<Tab>zM	Složit\ všechny\ sklady<Tab>zM
+   menutrans O&pen\ more\ folds<Tab>zr	Pøidat\ jednu\ úroveò\ skladù<Tab>zr
+   menutrans &Open\ all\ folds<Tab>zR	&Otevøít\ všechny\ sklady<Tab>zR
+   menutrans Fold\ Met&hod			&Metoda\ skládání
+   menutrans M&anual			&Ruènì
+   menutrans I&ndent			&Odsazení
+   menutrans E&xpression	&Výraz
+   menutrans S&yntax			&Syntaxe
+   menutrans &Diff			&Rozdíly
+   menutrans Ma&rker			&Znaèky
+   menutrans Create\ &Fold<Tab>zf		Vytvoøit\ &sklad<Tab>zf
+   menutrans &Delete\ Fold<Tab>zd		Vymazat\ skla&d<Tab>zd
+   menutrans Delete\ &All\ Folds<Tab>zD	Vymazat\ všechny\ sklady<Tab>zD
+   menutrans Fold\ col&umn\ width		Sloupec\ zob&razení\ skladù
+endif
+
+if has("diff")
+   menutrans &Update			&Obnovit
+   menutrans &Get\ Block			&Sejmout\ Blok
+   menutrans &Put\ Block			&Vložit\ Blok
+endif
 
-menutrans &Update			&Obnovit
-menutrans &Get\ Block			&Sejmout\ Blok
-menutrans &Put\ Block			&Vložit\ Blok
 menutrans &Make<Tab>:make		&Make<Tab>:make
 menutrans &List\ Errors<Tab>:cl		Výpis\ &chyb<Tab>:cl
 menutrans L&ist\ Messages<Tab>:cl!	Výp&is\ zpráv<Tab>:cl!
@@ -142,7 +165,7 @@ menutrans SeT\ Compiler			Nas&taven
 menutrans &Update<Tab>:cwin		O&bnovit<Tab>:cwin
 menutrans &Open<Tab>:copen		&Otevøít<Tab>:copen
 menutrans &Close<Tab>:cclose		&Zavøít<Tab>:cclose
-menutrans &Set\ Compiler		N&astavit\ kompilátor
+menutrans Se&T\ Compiler		N&astavit\ kompilátor
 
 menutrans &Convert\ to\ HEX<Tab>:%!xxd	Pøevést\ do\ šestnáctkového\ formát&u<Tab>:%!xxd
 menutrans Conve&rt\ back<Tab>:%!xxd\ -r Pø&evést\ zpìt<Tab>:%!xxd\ -r
@@ -170,7 +193,6 @@ menutrans &Delete		Z&ru
 menutrans &Alternate		&Zmìnit
 menutrans &Next			&Další
 menutrans &Previous		&Pøedchozí
-menutrans [No\ File]		[Žádný\ soubor]
 " }}}
 
 " {{{ Menu Window
@@ -221,6 +243,8 @@ menutrans &Paste		&Vlo
 menutrans &Delete		&Smazat
 menutrans Select\ Blockwise	Vybrat\ blokovì
 menutrans Select\ &Word		Vybrat\ &slovo
+menutrans Select\ Pa&ragraph Vybrat\ &odstavec
+menutrans Select\ &Sentence   Vybrat\ vì&tu
 menutrans Select\ &Line		Vybrat\ &øádek
 menutrans Select\ &Block	Vybrat\ &blok
 menutrans Select\ &All		Vybrat\ &vše
@@ -228,42 +252,57 @@ menutrans Select\ &All		Vybrat\ &v
 
 " {{{ The GUI toolbar
 if has("toolbar")
-  if exists("*Do_toolbar_tmenu")
-    delfun Do_toolbar_tmenu
-  endif
-  fun Do_toolbar_tmenu()
-    tmenu ToolBar.Open		Otevøít soubor
-    tmenu ToolBar.Save		Uložit soubor
-    tmenu ToolBar.SaveAll		Uložit všechny soubory
-    tmenu ToolBar.Print		Tisk
-    tmenu ToolBar.Undo		Zpìt
-    tmenu ToolBar.Redo		Zrušit vrácení
-    tmenu ToolBar.Cut		Vyøíznout
-    tmenu ToolBar.Copy		Kopírovat
-    tmenu ToolBar.Paste		Vložit
-    tmenu ToolBar.Find		Hledat...
-    tmenu ToolBar.FindNext	Hledat další
-    tmenu ToolBar.FindPrev	Hledat pøedchozí
-    tmenu ToolBar.Replace		Nahradit...
-    if 0	" disabled; These are in the Windows menu
-      tmenu ToolBar.New		Nové okno
-      tmenu ToolBar.WinSplit	Rozdìlit okno
-      tmenu ToolBar.WinMax		Maximalizovat okno
-      tmenu ToolBar.WinMin		Minimalizovat okno
-      tmenu ToolBar.WinClose	Zavøít okno
-    endif
-    tmenu ToolBar.LoadSesn	Naèíst sezení
-    tmenu ToolBar.SaveSesn	Uložit sezení
-    tmenu ToolBar.RunScript	Spustit skript
-    tmenu ToolBar.Make		Spustit make
-    tmenu ToolBar.Shell		Spustit shell
-    tmenu ToolBar.RunCtags	Spustit ctags
-    tmenu ToolBar.TagJump		Skoèit na tag pod kurzorem
-    tmenu ToolBar.Help		Nápovìda
-    tmenu ToolBar.FindHelp	Hledat nápovìdu k...
-  endfun
+   if exists("*Do_toolbar_tmenu")
+      delfun Do_toolbar_tmenu
+   endif
+   fun Do_toolbar_tmenu()
+      tmenu ToolBar.Open		Otevøít soubor
+      tmenu ToolBar.Save		Uložit soubor
+      tmenu ToolBar.SaveAll		Uložit všechny soubory
+      if has("printer") || has("unix")
+         tmenu ToolBar.Print		Tisk
+      endif
+      tmenu ToolBar.Undo		Zpìt
+      tmenu ToolBar.Redo		Zrušit vrácení
+      tmenu ToolBar.Cut		Vyøíznout
+      tmenu ToolBar.Copy		Kopírovat
+      tmenu ToolBar.Paste		Vložit
+      tmenu ToolBar.Find		Hledat...
+      tmenu ToolBar.FindNext	Hledat další
+      tmenu ToolBar.FindPrev	Hledat pøedchozí
+      tmenu ToolBar.Replace		Nahradit...
+      if 0	" disabled; These are in the Windows menu
+         tmenu ToolBar.New		Nové okno
+         tmenu ToolBar.WinSplit	Rozdìlit okno
+         tmenu ToolBar.WinMax		Maximalizovat okno
+         tmenu ToolBar.WinMin		Minimalizovat okno
+         tmenu ToolBar.WinClose	Zavøít okno
+      endif
+      tmenu ToolBar.LoadSesn	Naèíst sezení
+      tmenu ToolBar.SaveSesn	Uložit sezení
+      tmenu ToolBar.RunScript	Spustit skript
+      tmenu ToolBar.Make		Spustit make
+      tmenu ToolBar.Shell		Spustit shell
+      tmenu ToolBar.RunCtags	Spustit ctags
+      tmenu ToolBar.TagJump		Skoèit na tag pod kurzorem
+      tmenu ToolBar.Help		Nápovìda
+      tmenu ToolBar.FindHelp	Hledat nápovìdu k...
+   endfun
 endif
 " }}}
 
+" {{{ DIALOG TEXTS
+let g:menutrans_no_file = "[Žádný soubor]"
+let g:menutrans_help_dialog = "Zadejte hledaný pøíkaz nebo slovo:\n\n\tPøidejte i_ pro pøíkazy vkládacího režimu (napø. i_CTRL-X)\n\tPøidejte c_ pro pøíkazy pøíkazové øádky (napø. c_<Del>)\n\tPøidejte ' pro jméno volby (napø. 'shiftwidth')"
+let g:menutrans_path_dialog = "Zadejte cesty pro vyhledávání souborù. Jednotlivé cesty oddìlte èárkou"
+let g:menutrans_tags_dialog = "Zadejte jména souborù s tagy. Jména oddìlte èárkami."
+let g:menutrans_textwidth_dialog = "Zadejte délku øádku (0 pro zakázání formátování):"
+let g:menutrans_fileformat_dialog = "Vyberte typ konce øádkù"
+" }}}" 
+
 let &cpo = s:keepcpo
 unlet s:keepcpo
+
+
+
+" vim:set foldmethod=marker expandtab tabstop=3 shiftwidth=3:
diff --git a/runtime/lang/menu_czech_czech_republic.ascii.vim b/runtime/lang/menu_czech_czech_republic.ascii.vim
index 7ac8c34e04..1c4fb3ed8f 100644
--- a/runtime/lang/menu_czech_czech_republic.ascii.vim
+++ b/runtime/lang/menu_czech_czech_republic.ascii.vim
@@ -1,30 +1,38 @@
-" Menu Translations:	Czech for systems without localization
-" Maintainer:		Jiri Brezina <brzj@seznam.cz>
-" vim:set foldmethod=marker:
-" $Revision: 1.3 $
-" $Date: 2005/12/19 22:06:56 $
+" Menu Translations:    Czech (latin1 - w/o diacritics)
+" Maintainer:           Jiri Sedlak <jiri_sedlak@users.sourceforge.net>
+" Previous maintainer:  Jiri Brezina
+" Based on:             menu.vim (2012-10-21)
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
-  finish
+   finish
 endif
+
 let did_menu_trans = 1
 let s:keepcpo= &cpo
 set cpo&vim
 
+scriptencoding latin1
+
 " {{{ File menu
 menutrans &File				&Soubor
 menutrans &Open\.\.\.<Tab>:e		&Otevrit\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	Otevrit\ v\ no&vem\ okne\.\.\.<Tab>:sp
+menutrans Open\ Tab\.\.\.<Tab>:tabnew	Otevrit\ tab\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		&Novy<Tab>:enew
 menutrans &Close<Tab>:close		&Zavrit<Tab>:close
 menutrans &Save<Tab>:w			&Ulozit<Tab>:w
 menutrans Save\ &As\.\.\.<Tab>:sav	Ulozit\ &jako\.\.\.<Tab>:sav
-menutrans Split\ &Diff\ with\.\.\.	Rozdelit\ okno\ -\ &Diff\.\.\.
-menutrans Split\ Patched\ &By\.\.\.	Rozdelit\ okno\ -\ &Patch\.\.\.
-menutrans &Print			&Tisk
-menutrans Sa&ve-Exit<Tab>:wqa		U&lozit\ -\ Konec<Tab>:wqa
-menutrans E&xit<Tab>:qa			&Konec<Tab>:qa
+if has("printer") || has("unix")
+   menutrans &Print			&Tisk
+endif
+menutrans Sa&ve-Exit<Tab>:wqa		U&lozit\ a\ ukoncit<Tab>:wqa
+menutrans E&xit<Tab>:qa			&Ukoncit<Tab>:qa
+
+if has("diff")
+   menutrans Split\ &Diff\ with\.\.\.	Rozdelit\ okno\ -\ &Diff\.\.\.
+   menutrans Split\ Patched\ &By\.\.\.	Rozdelit\ okno\ -\ &Patch\.\.\.
+endif
 " }}}
 
 " {{{ Edit menu
@@ -37,24 +45,32 @@ menutrans &Copy<Tab>"+y			&Kopirovat<Tab>"+y
 menutrans &Paste<Tab>"+gP		V&lozit<Tab>"+gP
 menutrans Put\ &Before<Tab>[p		Vlozit\ &pred<Tab>[p
 menutrans Put\ &After<Tab>]p		Vlozi&t\ za<Tab>]p
-menutrans &Delete<Tab>x			&Smazat<Tab>x
+if has("win32") || has("win16")
+   menutrans &Delete<Tab>x			&Smazat<Tab>x
+endif
 menutrans &Select\ All<Tab>ggVG		Vy&brat\ vse<Tab>ggVG
-menutrans &Find\.\.\.			&Hledat\.\.\.
-menutrans Find\ and\ Rep&lace\.\.\.	&Nahradit\.\.\.
-menutrans Options\.\.\.			Volb&y\.\.\.
+if has("win32")  || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_motif")
+   menutrans &Find\.\.\.			&Hledat\.\.\.
+   menutrans Find\ and\ Rep&lace\.\.\.	&Nahradit\.\.\.
+else
+   menutrans Find<Tab>/ &Hledat<Tab>/
+   menutrans Find\ and\ Rep&lace<Tab>:%s  &Nahradit<Tab>:%s
+   menutrans Find\ and\ Rep&lace<Tab>:s   &Nahradit<Tab>:s
+endif
 menutrans Settings\ &Window		Nastav&eni\ okna
-	" {{{2 Edit -1
+" {{{2 Edit -1
+menutrans Startup\ &Settings  Pocatecni\ &nastaveni
 menutrans &Global\ Settings				&Globalni\ nastaveni
 menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	&Prepnout\ zvyrazneni\ vzoru<Tab>:set\ hls!
 menutrans Toggle\ &Ignore-case<Tab>:set\ ic!		Prepnout\ ignorovani\ &VERZALEK<Tab>:set\ ic!
 menutrans Toggle\ &Showmatch<Tab>:set\ sm!		Prepnout\ &Showmatch\ \{\(\[\])\}<Tab>:set\ sm!
 menutrans &Context\ lines				Zobrazit\ konte&xt\ kurzoru
 menutrans &Virtual\ Edit				Virtualni\ p&ozice\ kurzoru
-	menutrans Never						Nikdy
-	menutrans Block\ Selection				Vyber\ Bloku
-	menutrans Insert\ mode					Insert\ mod
-	menutrans Block\ and\ Insert				Blok\ a\ Insert
-	menutrans Always					Vzdycky
+menutrans Never						Nikdy
+menutrans Block\ Selection				Vyber\ Bloku
+menutrans Insert\ mode					Insert\ mod
+menutrans Block\ and\ Insert				Blok\ a\ Insert
+menutrans Always					Vzdycky
 menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!		Prepnout\ Insert\ mo&d<Tab>:set\ im!
 menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!		Prepnout\ kompatibilni\ rezim\ s\ 'vi'<Tab>:set\ cp!
 menutrans Search\ &Path\.\.\.				Nastavit\ &cestu\ k\ prohledavani\.\.\.
@@ -63,9 +79,10 @@ menutrans Toggle\ &Toolbar				Prepnout\ &Toolbar
 menutrans Toggle\ &Bottom\ Scrollbar			Pr&epnout\ dolni\ rolovaci\ listu
 menutrans Toggle\ &Left\ Scrollbar			Prepnout\ &levou\ rolovaci\ listu
 menutrans Toggle\ &Right\ Scrollbar			Prepnout\ p&ravou\ rolovaci\ listu
-	" {{{2 Edit -2
+" {{{2 Edit -2
 menutrans F&ile\ Settings				Nastaveni\ so&uboru
 menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!	Prepnout\ cislovani\ ra&dku<Tab>:set\ nu!
+menutrans Toggle\ relati&ve\ Line\ Numbering<Tab>:set\ rnu! Prepnout\ relativni\ cislovani\ ra&dku<Tab>:set\ rnu!
 menutrans Toggle\ &List\ Mode<Tab>:set\ list!		Prepnout\ &List\ mod<Tab>:set\ list!
 menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!		Prepnout\ zala&movani\ radku<Tab>:set\ wrap!
 menutrans Toggle\ W&rap\ at\ word<Tab>:set\ lbr!	Prepnout\ zl&om\ ve\ slove<Tab>:set\ lbr!
@@ -76,10 +93,12 @@ menutrans &Shiftwidth					Nastav&it\ sirku\ od&sazeni
 menutrans Soft\ &Tabstop				Nastavit\ Soft\ &Tabstop
 menutrans Te&xt\ Width\.\.\.				Sirka\ te&xtu\.\.\.
 menutrans &File\ Format\.\.\.				&Format\ souboru\.\.\.
-	" {{{2 Edit -3
+" {{{2 Edit -3
 menutrans C&olor\ Scheme		Barevne\ s&chema
 menutrans &Keymap			Klavesova\ m&apa
-menutrans Select\ Fo&nt\.\.\.		Vybrat\ pis&mo\.\.\.
+if has("win32") || has("win16") || has("gui_motif") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac")
+   menutrans Select\ Fo&nt\.\.\.		Vybrat\ pis&mo\.\.\.
+endif
 " }}}1
 
 " {{{ Programming menu
@@ -88,46 +107,52 @@ menutrans &Jump\ to\ this\ tag<Tab>g^]	&Skocit\ na\ tag<Tab>g^]
 menutrans Jump\ &back<Tab>^T		Skocit\ &zpet<Tab>^T
 menutrans Build\ &Tags\ File		&Vytvorit\ soubor\ tagu
 
-menutrans &Spelling			&Kontrola\ pravopisu
-menutrans &Spell\ Check\ On		Kontrola\ pravopisu\ &zapnuta
-menutrans Spell\ Check\ &Off		Kontrola\ pravopisu\ &vypnuta
-menutrans To\ Next\ error<Tab>]s	&Dalsi\ chyba<Tab>]s
-menutrans To\ Previous\ error<Tab>[s	&Predchozi\ chyba<Tab>[s
-menutrans Suggest\ Corrections<Tab>z?	&Navrh\ oprav<Tab>z?
-menutrans Repeat\ correction<Tab>:spellrepall	Zopakovat\ &opravu<Tab>:spellrepall
-menutrans Set\ language\ to\ "en"	Nastav\ jazyk\ na\ "en"
-menutrans Set\ language\ to\ "en_au"	Nastav\ jazyk\ na\ "en_au"
-menutrans Set\ language\ to\ "en_ca"	Nastav\ jazyk\ na\ "en_ca"
-menutrans Set\ language\ to\ "en_gb"	Nastav\ jazyk\ na\ "en_gb"
-menutrans Set\ language\ to\ "en_nz"	Nastav\ jazyk\ na\ "en_nz"
-menutrans Set\ language\ to\ "en_us"	Nastav\ jazyk\ na\ "en_us"
-menutrans Set\ language\ to\ "cz"	Nastav\ jazyk\ na\ "cz"
-menutrans Set\ language\ to\ "cs_cz"	Nastav\ jazyk\ na\ "cs_cz"
-menutrans &Find\ More\ Languages	Nalezt\ dalsi\ &jazyky
+if has("spell")
+   menutrans &Spelling			&Kontrola\ pravopisu
+   menutrans &Spell\ Check\ On		&Zapnout\ kontrolu\ pravopisu
+   menutrans Spell\ Check\ &Off		&Vypnout \kontrolu\ pravopisu
+   menutrans To\ &Next\ error<Tab>]s	&Dalsi\ chyba<Tab>]s
+   menutrans To\ &Previous\ error<Tab>[s	&Predchozi\ chyba<Tab>[s
+   menutrans Suggest\ &Corrections<Tab>z=	&Navrhnout\ opravy<Tab>z=
+   menutrans &Repeat\ correction<Tab>:spellrepall	Zopakovat\ &opravu<Tab>:spellrepall
+   menutrans Set\ language\ to\ "en"	Nastavit\ jazyk\ na\ "en"
+   menutrans Set\ language\ to\ "en_au"	Nastavit\ jazyk\ na\ "en_au"
+   menutrans Set\ language\ to\ "en_ca"	Nastavit\ jazyk\ na\ "en_ca"
+   menutrans Set\ language\ to\ "en_gb"	Nastavit\ jazyk\ na\ "en_gb"
+   menutrans Set\ language\ to\ "en_nz"	Nastavit\ jazyk\ na\ "en_nz"
+   menutrans Set\ language\ to\ "en_us"	Nastavit\ jazyk\ na\ "en_us"
+   menutrans &Find\ More\ Languages	Nalezt\ dalsi\ &jazyky
+   let g:menutrans_set_lang_to = "Nastavit jazyk na"
+endif
+
+if has("Folding")   
+   menutrans &Folding			&Skladani
+   menutrans &Enable/Disable\ folds<Tab>zi &Ano/Ne<Tab>zi
+   menutrans &View\ Cursor\ Line<Tab>zv	Zobrazit\ radek\ &kurzoru<Tab>zv
+   menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx		Zobrazit\ &pouze\ radek\ kurzoru\ <Tab>zMzx
+   menutrans C&lose\ more\ folds<Tab>zm	Slozit\ &jednu\ uroven\ skladu<Tab>zm
+   menutrans &Close\ all\ folds<Tab>zM	Slozit\ vsechny\ sklady<Tab>zM
+   menutrans O&pen\ more\ folds<Tab>zr	Pridat\ jednu\ uroven\ skladu<Tab>zr
+   menutrans &Open\ all\ folds<Tab>zR	&Otevrit\ vsechny\ sklady<Tab>zR
+   menutrans Fold\ Met&hod			&Metoda\ skladani
+   menutrans M&anual			&Rucne
+   menutrans I&ndent			&Odsazeni
+   menutrans E&xpression	&Vyraz
+   menutrans S&yntax			&Syntaxe
+   menutrans &Diff			&Rozdily
+   menutrans Ma&rker			&Znacky
+   menutrans Create\ &Fold<Tab>zf		Vytvorit\ &sklad<Tab>zf
+   menutrans &Delete\ Fold<Tab>zd		Vymazat\ skla&d<Tab>zd
+   menutrans Delete\ &All\ Folds<Tab>zD	Vymazat\ vsechny\ sklady<Tab>zD
+   menutrans Fold\ col&umn\ width		Sloupec\ zob&razeni\ skladu
+endif
 
-menutrans &Folding			&Foldy
-menutrans &Enable/Disable\ folds<Tab>zi &Ano/Ne<Tab>zi
-menutrans &View\ Cursor\ Line<Tab>zv	&Zobrazit\ radek\ kurzoru<Tab>zv
-menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx		Zo&brazit\ pouze\ radek\ kurzoru\ <Tab>zMzx
-menutrans C&lose\ more\ folds<Tab>zm	&Vyjmout\ jednu\ uroven\ foldu<Tab>zm
-menutrans &Close\ all\ folds<Tab>zM	Zavri&t\ vsechny\ foldy<Tab>zM
-menutrans O&pen\ more\ folds<Tab>zr	Pridat\ jedn&u\ uroven\ foldu<Tab>zr
-menutrans &Open\ all\ folds<Tab>zR	&Otevrit\ vsechny\ foldy<Tab>zR
-menutrans Fold\ Met&hod			Metoda\ &skladani
-	"menutrans M&anual			&Rucne
-	"menutrans I&ndent			&Odsazeni
-	"menutrans E&xpression			&Vyraz
-	"menutrans S&yntax			&Syntax
-	"menutrans &Diff			&Diff
-	"menutrans Ma&rker			Ma&rker
-menutrans Create\ &Fold<Tab>zf		Vytvorit\ &fold<Tab>zf
-menutrans &Delete\ Fold<Tab>zd		Vymazat\ fol&d<Tab>zd
-menutrans Delete\ &All\ Folds<Tab>zD	V&ymazat\ vsechny\ foldy<Tab>zD
-menutrans Fold\ col&umn\ width		Sloupec\ zob&razeni\ foldu
+if has("diff")
+   menutrans &Update			&Obnovit
+   menutrans &Get\ Block			&Sejmout\ Blok
+   menutrans &Put\ Block			&Vlozit\ Blok
+endif
 
-menutrans &Update			&Obnovit
-menutrans &Get\ Block			&Sejmout\ Blok
-menutrans &Put\ Block			&Vlozit\ Blok
 menutrans &Make<Tab>:make		&Make<Tab>:make
 menutrans &List\ Errors<Tab>:cl		Vypis\ &chyb<Tab>:cl
 menutrans L&ist\ Messages<Tab>:cl!	Vyp&is\ zprav<Tab>:cl!
@@ -140,7 +165,7 @@ menutrans SeT\ Compiler			Nas&taveni\ kompilatoru
 menutrans &Update<Tab>:cwin		O&bnovit<Tab>:cwin
 menutrans &Open<Tab>:copen		&Otevrit<Tab>:copen
 menutrans &Close<Tab>:cclose		&Zavrit<Tab>:cclose
-menutrans &Set\ Compiler		N&astavit\ kompilator
+menutrans Se&T\ Compiler		N&astavit\ kompilator
 
 menutrans &Convert\ to\ HEX<Tab>:%!xxd	Prevest\ do\ sestnactkoveho\ format&u<Tab>:%!xxd
 menutrans Conve&rt\ back<Tab>:%!xxd\ -r Pr&evest\ zpet<Tab>:%!xxd\ -r
@@ -168,7 +193,6 @@ menutrans &Delete		Z&rusit
 menutrans &Alternate		&Zmenit
 menutrans &Next			&Dalsi
 menutrans &Previous		&Predchozi
-menutrans [No\ File]		[Zadny\ soubor]
 " }}}
 
 " {{{ Menu Window
@@ -219,6 +243,8 @@ menutrans &Paste		&Vlozit
 menutrans &Delete		&Smazat
 menutrans Select\ Blockwise	Vybrat\ blokove
 menutrans Select\ &Word		Vybrat\ &slovo
+menutrans Select\ Pa&ragraph Vybrat\ &odstavec
+menutrans Select\ &Sentence   Vybrat\ ve&tu
 menutrans Select\ &Line		Vybrat\ &radek
 menutrans Select\ &Block	Vybrat\ &blok
 menutrans Select\ &All		Vybrat\ &vse
@@ -226,42 +252,57 @@ menutrans Select\ &All		Vybrat\ &vse
 
 " {{{ The GUI toolbar
 if has("toolbar")
-  if exists("*Do_toolbar_tmenu")
-    delfun Do_toolbar_tmenu
-  endif
-  fun Do_toolbar_tmenu()
-    tmenu ToolBar.Open		Otevrit soubor
-    tmenu ToolBar.Save		Ulozit soubor
-    tmenu ToolBar.SaveAll		Ulozit vsechny soubory
-    tmenu ToolBar.Print		Tisk
-    tmenu ToolBar.Undo		Zpet
-    tmenu ToolBar.Redo		Zrusit vraceni
-    tmenu ToolBar.Cut		Vyriznout
-    tmenu ToolBar.Copy		Kopirovat
-    tmenu ToolBar.Paste		Vlozit
-    tmenu ToolBar.Find		Hledat...
-    tmenu ToolBar.FindNext	Hledat dalsi
-    tmenu ToolBar.FindPrev	Hledat predchozi
-    tmenu ToolBar.Replace		Nahradit...
-    if 0	" disabled; These are in the Windows menu
-      tmenu ToolBar.New		Nove okno
-      tmenu ToolBar.WinSplit	Rozdelit okno
-      tmenu ToolBar.WinMax		Maximalizovat okno
-      tmenu ToolBar.WinMin		Minimalizovat okno
-      tmenu ToolBar.WinClose	Zavrit okno
-    endif
-    tmenu ToolBar.LoadSesn	Nacist sezeni
-    tmenu ToolBar.SaveSesn	Ulozit sezeni
-    tmenu ToolBar.RunScript	Spustit skript
-    tmenu ToolBar.Make		Spustit make
-    tmenu ToolBar.Shell		Spustit shell
-    tmenu ToolBar.RunCtags	Spustit ctags
-    tmenu ToolBar.TagJump		Skocit na tag pod kurzorem
-    tmenu ToolBar.Help		Napoveda
-    tmenu ToolBar.FindHelp	Hledat napovedu k...
-  endfun
+   if exists("*Do_toolbar_tmenu")
+      delfun Do_toolbar_tmenu
+   endif
+   fun Do_toolbar_tmenu()
+      tmenu ToolBar.Open		Otevrit soubor
+      tmenu ToolBar.Save		Ulozit soubor
+      tmenu ToolBar.SaveAll		Ulozit vsechny soubory
+      if has("printer") || has("unix")
+         tmenu ToolBar.Print		Tisk
+      endif
+      tmenu ToolBar.Undo		Zpet
+      tmenu ToolBar.Redo		Zrusit vraceni
+      tmenu ToolBar.Cut		Vyriznout
+      tmenu ToolBar.Copy		Kopirovat
+      tmenu ToolBar.Paste		Vlozit
+      tmenu ToolBar.Find		Hledat...
+      tmenu ToolBar.FindNext	Hledat dalsi
+      tmenu ToolBar.FindPrev	Hledat predchozi
+      tmenu ToolBar.Replace		Nahradit...
+      if 0	" disabled; These are in the Windows menu
+         tmenu ToolBar.New		Nove okno
+         tmenu ToolBar.WinSplit	Rozdelit okno
+         tmenu ToolBar.WinMax		Maximalizovat okno
+         tmenu ToolBar.WinMin		Minimalizovat okno
+         tmenu ToolBar.WinClose	Zavrit okno
+      endif
+      tmenu ToolBar.LoadSesn	Nacist sezeni
+      tmenu ToolBar.SaveSesn	Ulozit sezeni
+      tmenu ToolBar.RunScript	Spustit skript
+      tmenu ToolBar.Make		Spustit make
+      tmenu ToolBar.Shell		Spustit shell
+      tmenu ToolBar.RunCtags	Spustit ctags
+      tmenu ToolBar.TagJump		Skocit na tag pod kurzorem
+      tmenu ToolBar.Help		Napoveda
+      tmenu ToolBar.FindHelp	Hledat napovedu k...
+   endfun
 endif
 " }}}
 
+" {{{ DIALOG TEXTS
+let g:menutrans_no_file = "[Zadny soubor]"
+let g:menutrans_help_dialog = "Zadejte hledany prikaz nebo slovo:\n\n\tPridejte i_ pro prikazy vkladaciho rezimu (napr. i_CTRL-X)\n\tPridejte c_ pro prikazy prikazove radky (napr. c_<Del>)\n\tPridejte ' pro jmeno volby (napr. 'shiftwidth')"
+let g:menutrans_path_dialog = "Zadejte cesty pro vyhledavani souboru. Jednotlive cesty oddelte carkou"
+let g:menutrans_tags_dialog = "Zadejte jmena souboru s tagy. Jmena oddelte carkami."
+let g:menutrans_textwidth_dialog = "Zadejte delku radku (0 pro zakazani formatovani):"
+let g:menutrans_fileformat_dialog = "Vyberte typ konce radku"
+" }}}" 
+
 let &cpo = s:keepcpo
 unlet s:keepcpo
+
+
+
+" vim:set foldmethod=marker expandtab tabstop=3 shiftwidth=3:
-- 
GitLab