changeset 29533:34c1f4cd0c18

Update runtime files Commit: https://github.com/vim/vim/commit/2ecbe53f452e92e941aff623f6a0b72f80e43d07 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Jul 29 21:36:21 2022 +0100 Update runtime files
author Bram Moolenaar <Bram@vim.org>
date Fri, 29 Jul 2022 22:45:04 +0200
parents 9ab2caa93280
children e491e48757d7
files CONTRIBUTING.md README.md runtime/doc/builtin.txt runtime/doc/change.txt runtime/doc/channel.txt runtime/doc/cmdline.txt runtime/doc/eval.txt runtime/doc/pattern.txt runtime/doc/popup.txt runtime/doc/spell.txt runtime/doc/tags runtime/doc/testing.txt runtime/doc/textprop.txt runtime/doc/todo.txt runtime/doc/vim9.txt runtime/ftplugin/debchangelog.vim runtime/ftplugin/desktop.vim runtime/ftplugin/swayconfig.vim runtime/indent/html.vim runtime/indent/javascript.vim runtime/lang/Makefile runtime/lang/menu_chinese_gb.936.vim runtime/lang/menu_hu_hu.iso_8859-2.vim runtime/lang/menu_sk_sk.iso_8859-2.vim runtime/lang/menu_zh_cn.utf-8.vim runtime/syntax/autohotkey.vim runtime/syntax/debchangelog.vim runtime/syntax/debsources.vim runtime/syntax/i3config.vim runtime/syntax/python.vim runtime/syntax/swayconfig.vim runtime/tutor/tutor.zh_cn.utf-8 src/po/Makefile src/po/ru.cp1251.po src/po/ru.po
diffstat 35 files changed, 1030 insertions(+), 702 deletions(-) [+]
line wrap: on
line diff
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -65,9 +65,6 @@ If the maintainer does not respond, cont
 
 # Translations
 
-Translations of this CONTRIBUTING file:
-[Korean](https://github.com/cjw1359/opensource/blob/master/Vim/CONTRIBUTING_ko.md)
-
 Translating messages and runtime files is very much appreciated!  These things
 can be translated:
 *   Messages in Vim, see [src/po/README.txt][1]
--- a/README.md
+++ b/README.md
@@ -128,6 +128,8 @@ If you would like to help making Vim bet
 
 ## Information ##
 
+If you are on macOS, you can use [Macvim](https://macvim-dev.github.io/macvim/).
+
 The latest news about Vim can be found on the Vim home page:
 	https://www.vim.org/
 
@@ -150,8 +152,3 @@ Send any other comments, patches, flower
 
 
 This is `README.md` for version 9.0 of Vim: Vi IMproved.
-
-
-## Translations of this README ##
-
-[Korean](https://github.com/cjw1359/opensource/blob/master/Vim/README_ko.md)
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -5775,8 +5775,8 @@ matchadd({group}, {pattern} [, {priority
 		message will appear and the match will not be added.  An ID
 		is specified as a positive integer (zero excluded).  IDs 1, 2
 		and 3 are reserved for |:match|, |:2match| and |:3match|,
-		respectively.  3 is reserved for use by the
-		|matchparen|polugin.
+		respectively.  3 is reserved for use by the |matchparen|
+		plugin.
 		If the {id} argument is not specified or -1, |matchadd()|
 		automatically chooses a free ID.
 
@@ -7387,7 +7387,7 @@ search({pattern} [, {flags} [, {stopline
 <		When {stopline} is used and it is not zero this also implies
 		that the search does not wrap around the end of the file.
 		A zero value is equal to not giving the argument.
-
+				*E1285* *E1286* *E1287* *E1288* *E1289*
 		When the {timeout} argument is given the search stops when
 		more than this many milliseconds have passed.  Thus when
 		{timeout} is 500 the search stops after half a second.
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -802,6 +802,8 @@ When the {string} starts with "\=" it is
 |sub-replace-expression|.  You can use that for complex replacement or special
 characters.
 
+The substitution is limited in recursion to 4 levels. *E1290*
+
 Otherwise these characters in {string} have a special meaning:
 								*:s%*
 When {string} is equal to "%" and '/' is included with the 'cpoptions' option,
--- a/runtime/doc/channel.txt
+++ b/runtime/doc/channel.txt
@@ -27,6 +27,7 @@ 13. Controlling a job			|job-control|
 14. Using a prompt buffer		|prompt-buffer|
 15. Language Server Protocol		|language-server-protocol|
 
+							*E1277*
 {only when compiled with the |+channel| feature for channel stuff}
 	You can check this with: `has('channel')`
 {only when compiled with the |+job| feature for job stuff}
--- a/runtime/doc/cmdline.txt
+++ b/runtime/doc/cmdline.txt
@@ -1147,6 +1147,8 @@ character that indicates the type of com
 
 Vim will be in Normal mode when the editor is opened, except when 'insertmode'
 is set.
+								*E1292*
+Once a command-line window is open it is not possible to open another one.
 
 The height of the window is specified with 'cmdwinheight' (or smaller if there
 is no room).  The window is always full width and is positioned just above the
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1399,7 +1399,7 @@ parenthesis), or any expression in paren
 	base->alist[idx](args)
 	base->(getFuncRef())(args)
 Note that in the last call the base is passed to the function resulting from
-"(getFuncRef())", inserted before "args".
+"(getFuncRef())", inserted before "args".  *E1275*
 
 							*E274*
 "->name(" must not contain white space.  There can be white space before the
@@ -1559,7 +1559,7 @@ allowing the inclusion of Vim script exp
 expression returning a value can be enclosed between curly braces.  The value
 is converted to a string.  All the text and results of the expressions
 are concatenated to make a new string.
-								*E1278*
+							*E1278* *E1279*
 To include an opening brace '{' or closing brace '}' in the string content
 double it.  For double quoted strings using a backslash also works.  A single
 closing brace '}' will result in an error.
@@ -2682,7 +2682,7 @@ See |:verbose-cmd| for more information.
 			Define a new function by the name {name}.  The body of
 			the function follows in the next lines, until the
 			matching |:endfunction|.
-
+								*E1267*
 			The name must be made of alphanumeric characters and
 			'_', and must start with a capital or "s:" (see
 			above).  Note that using "b:" or "g:" is not allowed.
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -928,7 +928,7 @@ An ordinary atom can be:
 	becomes invalid.  Vim doesn't automatically update the matches.
 	Similar to moving the cursor for "\%#" |/\%#|.
 
-					*/\%l* */\%>l* */\%<l* *E951* *E1204*
+				*/\%l* */\%>l* */\%<l* *E951* *E1204* *E1273*
 \%23l	Matches in a specific line.
 \%<23l	Matches above a specific line (lower line number).
 \%>23l	Matches below a specific line (higher line number).
--- a/runtime/doc/popup.txt
+++ b/runtime/doc/popup.txt
@@ -591,7 +591,7 @@ POPUP_CREATE() ARGUMENTS			 *popup_creat
 
 The first argument of |popup_create()| (and the second argument to
 |popup_settext()|) specifies the text to be displayed, and optionally text
-properties.  It is in one of four forms:
+properties.  It is in one of four forms:  *E1284*
 - a buffer number
 - a string
 - a list of strings
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -103,7 +103,7 @@ zuW							*zuG* *zuW*
 zuG			Undo |zW| and |zG|, remove the word from the internal
 			word list.  Count used as with |zg|.
 
-							*:spe* *:spellgood*
+						*:spe* *:spellgood* *E1280*
 :[count]spe[llgood] {word}
 			Add {word} as a good word to 'spellfile', like with
 			|zg|.  Without count the first name is used, with a
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4068,10 +4068,12 @@ E1079	vim9.txt	/*E1079*
 E108	eval.txt	/*E108*
 E1080	vim9.txt	/*E1080*
 E1081	eval.txt	/*E1081*
+E1082	vim9.txt	/*E1082*
 E1083	editing.txt	/*E1083*
 E1084	eval.txt	/*E1084*
 E1085	eval.txt	/*E1085*
 E1087	vim9.txt	/*E1087*
+E1088	vim9.txt	/*E1088*
 E1089	eval.txt	/*E1089*
 E109	eval.txt	/*E109*
 E1090	eval.txt	/*E1090*
@@ -4269,17 +4271,36 @@ E1263	eval.txt	/*E1263*
 E1264	vim9.txt	/*E1264*
 E1265	eval.txt	/*E1265*
 E1266	if_pyth.txt	/*E1266*
+E1267	eval.txt	/*E1267*
+E1268	vim9.txt	/*E1268*
+E1269	vim9.txt	/*E1269*
 E127	eval.txt	/*E127*
 E1270	change.txt	/*E1270*
 E1271	vim9.txt	/*E1271*
+E1272	vim9.txt	/*E1272*
+E1273	pattern.txt	/*E1273*
 E1274	cmdline.txt	/*E1274*
+E1275	eval.txt	/*E1275*
 E1276	builtin.txt	/*E1276*
+E1277	channel.txt	/*E1277*
 E1278	eval.txt	/*E1278*
+E1279	eval.txt	/*E1279*
 E128	eval.txt	/*E128*
+E1280	spell.txt	/*E1280*
 E1281	pattern.txt	/*E1281*
 E1282	eval.txt	/*E1282*
 E1283	eval.txt	/*E1283*
+E1284	popup.txt	/*E1284*
+E1285	builtin.txt	/*E1285*
+E1286	builtin.txt	/*E1286*
+E1287	builtin.txt	/*E1287*
+E1288	builtin.txt	/*E1288*
+E1289	builtin.txt	/*E1289*
 E129	eval.txt	/*E129*
+E1290	change.txt	/*E1290*
+E1291	testing.txt	/*E1291*
+E1292	cmdline.txt	/*E1292*
+E1293	textprop.txt	/*E1293*
 E13	message.txt	/*E13*
 E131	eval.txt	/*E131*
 E132	eval.txt	/*E132*
@@ -10694,6 +10715,7 @@ vimscript-versions	eval.txt	/*vimscript-
 vimtutor	usr_01.txt	/*vimtutor*
 virtcol()	builtin.txt	/*virtcol()*
 virtcol2col()	builtin.txt	/*virtcol2col()*
+virtual-text	textprop.txt	/*virtual-text*
 visual-block	visual.txt	/*visual-block*
 visual-change	visual.txt	/*visual-change*
 visual-examples	visual.txt	/*visual-examples*
--- a/runtime/doc/testing.txt
+++ b/runtime/doc/testing.txt
@@ -186,6 +186,7 @@ test_gui_event({event}, {args})
 				    keyup   generate a keyup event
 				    keydown generate a keydown event
 		    keycode:    Keycode to use for a keyup or a keydown event.
+								*E1291*
 
 		"tabline":
 		  Inject a mouse click event on the tabline to select a
--- a/runtime/doc/textprop.txt
+++ b/runtime/doc/textprop.txt
@@ -171,7 +171,8 @@ prop_add({lnum}, {col}, {props})
 		the text.
 		A negative "id" will be chosen and is returned.  Once a
 		property with "text" has been added for a buffer then using a
-		negative "id" for any other property will give an error.
+		negative "id" for any other property will give an error:
+		*E1293*
 
 		Can also be used as a |method|: >
 			GetLnum()->prop_add(col, props)
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -39,18 +39,24 @@ browser use: https://github.com/vim/vim/
 -------------------- Known bugs and current work -----------------------
 
 PR to consider:
-- Fix CTRL-[ for Win32 on Belgian keyboard  #10687 (closes #10454)
 - stricter parsing for has('patch-x.y.z')  #10752
 - cmdheight=0  #10675  Does it work properly?
 - add splitscroll  #10682  Useful?  Any trouble? Null Chilly says it's OK.
     suggestion: names instead of numbers for the option value
-
-Support virtual text:
-- clear b_textprop_text when buffer is cleared
+    problem depending on whether window is focused or not
+
+Support virtual text:  #7553
 - Remove and free text when textprop is removed with negative ID.
 - "gj" does not work correctly
+- no virtual text when 'signcolumn' is set to "yes"  #10794
 - placement at the end of the line: after the text (text_align: "end"), right
-  aligned (text_align: "right")
+  aligned (text_align: "right"); choice: truncate when not enough space or
+  wrap to next line (text_wrap: "yes"); Also: fill with space to text wraps to
+  start of next screen line (text_align: "below")
+  Also consider an empty line, should fix #10786.  Also check inserting text.
+- win_lbr_chartabsize() TODO item: count screen cells
+- wrong cursor position (Yegappan, July 27)
+- many tests
 
 Further Vim9 improvements, possibly after launch:
 - Use Vim9 for more runtime files.
@@ -238,6 +244,9 @@ entry separately. #6609
 Multiplexers (screen, tmux) can request it to the underlying terminal, and
 pass it on with modifications.
 
+Using "A" and "o" in manually created fold (in empty buffer) does not behave
+consistenly (James McCoy, #10698)
+
 When scheme can't be found by configure there is no clear "not found" message:
     configure:5769: checking MzScheme install prefix
     configure:5781: result: 
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -281,7 +281,7 @@ start with an upper case letter even whe
 script "s:funcref" could be used, because it could not be referred to with
 "funcref".  In Vim9 script it can, therefore "s:Funcref" must be used to avoid
 that the name interferes with builtin functions.
-							*vim9-s-namespace*
+						*vim9-s-namespace* *E1268*
 The use of the "s:" prefix is not supported at the Vim9 script level.  All
 functions and variables without a prefix are script-local.
 
@@ -857,6 +857,8 @@ No curly braces expansion ~
 Command modifiers are not ignored ~
 								*E1176*
 Using a command modifier for a command that does not use it gives an error.
+								*E1082*
+Also, using a command modifier without a following command is now an error.
 
 
 Dictionary literals ~
@@ -1234,6 +1236,9 @@ variables can be accessed without the "s
 before the function is compiled.  If the script the function is defined in is
 legacy script, then script-local variables must be accessed with the "s:"
 prefix if they do not exist at the time of compiling.
+							*E1269*
+Script-local variables in a |Vim9| script must be declared at the script
+level.  They cannot be created in a function, also not in a legacy function.
 
 						*:defc* *:defcompile*
 :defc[ompile]		Compile functions defined in the current script that
@@ -1492,6 +1497,8 @@ value is not actually changed.  If you n
 it to a string, use the |string()| function.  Or use |str2nr()| to convert a
 string to a number.
 
+If a type is given where it is not expected you can get *E1272* .
+
 
 Type inference ~
 							*type-inference*
@@ -1696,8 +1703,8 @@ be exported. {not implemented yet: class
 
 
 Import ~
-					*:import* *:imp* *E1094* *E1047* *E1262*
-					*E1048* *E1049* *E1053* *E1071* *E1236*
+				*:import* *:imp* *E1094* *E1047* *E1262*
+				*E1048* *E1049* *E1053* *E1071* *E1088* *E1236*
 The exported items can be imported in another script. The import syntax has
 two forms. The simple form: >
 	import {filename}
--- a/runtime/ftplugin/debchangelog.vim
+++ b/runtime/ftplugin/debchangelog.vim
@@ -1,9 +1,9 @@
 " Vim filetype plugin file (GUI menu, folding and completion)
 " Language:     Debian Changelog
-" Maintainer:   Debian Vim Maintainers
+" Maintainer:   Debian Vim Maintainers <team+vim@tracker.debian.org>
 " Former Maintainers:   Michael Piefel <piefel@informatik.hu-berlin.de>
 "                       Stefano Zacchiroli <zack@debian.org>
-" Last Change:  2018-01-28
+" Last Change:  2022 Jul 25
 " License:      Vim License
 " URL:          https://salsa.debian.org/vim-team/vim-debian/blob/master/ftplugin/debchangelog.vim
 
@@ -35,6 +35,11 @@ if exists('g:did_changelog_ftplugin')
   finish
 endif
 
+" Make sure the '<' and 'C' flags are not included in 'cpoptions', otherwise
+" <CR> would not be recognized.  See ":help 'cpoptions'".
+let s:cpo_save = &cpo
+set cpo&vim
+
 " Don't load another plugin (this is global)
 let g:did_changelog_ftplugin = 1
 
@@ -101,13 +106,13 @@ endfunction
 " These functions implement the menus
 function NewVersion()
     " The new entry is unfinalised and shall be changed
-    amenu disable Changelog.New\ Version
-    amenu enable Changelog.Add\ Entry
-    amenu enable Changelog.Close\ Bug
-    amenu enable Changelog.Set\ Distribution
-    amenu enable Changelog.Set\ Urgency
-    amenu disable Changelog.Unfinalise
-    amenu enable Changelog.Finalise
+    amenu disable &Changelog.&New\ Version
+    amenu enable &Changelog.&Add\ Entry
+    amenu enable &Changelog.&Close\ Bug
+    amenu enable &Changelog.Set\ &Distribution
+    amenu enable &Changelog.Set\ &Urgency
+    amenu disable &Changelog.U&nfinalise
+    amenu enable &Changelog.&Finalise
     call append(0, substitute(getline(1), '-\([[:digit:]]\+\))', '-$$\1)', ''))
     call append(1, '')
     call append(2, '')
@@ -117,7 +122,9 @@ function NewVersion()
     normal! 1G0
     call search(')')
     normal! h
-    normal! 
+    " ':normal' doens't support key annotation (<c-a>) directly.
+    " Vim's manual recommends using ':exe' to use key annotation indirectly (backslash-escaping needed though).
+    exe "normal! \<c-a>"
     call setline(1, substitute(getline(1), '-\$\$', '-', ''))
     if exists('g:debchangelog_fold_enable')
         foldopen
@@ -161,13 +168,13 @@ endfunction
 
 function <SID>UnfinaliseMenu()
     " This means the entry shall be changed
-    amenu disable Changelog.New\ Version
-    amenu enable Changelog.Add\ Entry
-    amenu enable Changelog.Close\ Bug
-    amenu enable Changelog.Set\ Distribution
-    amenu enable Changelog.Set\ Urgency
-    amenu disable Changelog.Unfinalise
-    amenu enable Changelog.Finalise
+    amenu disable &Changelog.&New\ Version
+    amenu enable &Changelog.&Add\ Entry
+    amenu enable &Changelog.&Close\ Bug
+    amenu enable &Changelog.Set\ &Distribution
+    amenu enable &Changelog.Set\ &Urgency
+    amenu disable &Changelog.U&nfinalise
+    amenu enable &Changelog.&Finalise
 endfunction
 
 function Unfinalise()
@@ -179,13 +186,13 @@ endfunction
 
 function <SID>FinaliseMenu()
     " This means the entry should not be changed anymore
-    amenu enable Changelog.New\ Version
-    amenu disable Changelog.Add\ Entry
-    amenu disable Changelog.Close\ Bug
-    amenu disable Changelog.Set\ Distribution
-    amenu disable Changelog.Set\ Urgency
-    amenu enable Changelog.Unfinalise
-    amenu disable Changelog.Finalise
+    amenu enable &Changelog.&New\ Version
+    amenu disable &Changelog.&Add\ Entry
+    amenu disable &Changelog.&Close\ Bug
+    amenu disable &Changelog.Set\ &Distribution
+    amenu disable &Changelog.Set\ &Urgency
+    amenu enable &Changelog.U&nfinalise
+    amenu disable &Changelog.&Finalise
 endfunction
 
 function Finalise()
@@ -198,26 +205,26 @@ endfunction
 
 function <SID>MakeMenu()
     amenu &Changelog.&New\ Version			:call NewVersion()<CR>
-    amenu Changelog.&Add\ Entry				:call AddEntry()<CR>
-    amenu Changelog.&Close\ Bug				:call CloseBug()<CR>
-    menu Changelog.-sep-				<nul>
+    amenu &Changelog.&Add\ Entry				:call AddEntry()<CR>
+    amenu &Changelog.&Close\ Bug				:call CloseBug()<CR>
+    menu &Changelog.-sep-				<nul>
 
-    amenu Changelog.Set\ &Distribution.&unstable	:call Distribution("unstable")<CR>
-    amenu Changelog.Set\ Distribution.&frozen		:call Distribution("frozen")<CR>
-    amenu Changelog.Set\ Distribution.&stable		:call Distribution("stable")<CR>
-    menu Changelog.Set\ Distribution.-sep-		<nul>
-    amenu Changelog.Set\ Distribution.frozen\ unstable	:call Distribution("frozen unstable")<CR>
-    amenu Changelog.Set\ Distribution.stable\ unstable	:call Distribution("stable unstable")<CR>
-    amenu Changelog.Set\ Distribution.stable\ frozen	:call Distribution("stable frozen")<CR>
-    amenu Changelog.Set\ Distribution.stable\ frozen\ unstable	:call Distribution("stable frozen unstable")<CR>
+    amenu &Changelog.Set\ &Distribution.&unstable	:call Distribution("unstable")<CR>
+    amenu &Changelog.Set\ &Distribution.&frozen		:call Distribution("frozen")<CR>
+    amenu &Changelog.Set\ &Distribution.&stable		:call Distribution("stable")<CR>
+    menu &Changelog.Set\ &Distribution.-sep-		<nul>
+    amenu &Changelog.Set\ &Distribution.frozen\ unstable	:call Distribution("frozen unstable")<CR>
+    amenu &Changelog.Set\ &Distribution.stable\ unstable	:call Distribution("stable unstable")<CR>
+    amenu &Changelog.Set\ &Distribution.stable\ frozen	:call Distribution("stable frozen")<CR>
+    amenu &Changelog.Set\ &Distribution.stable\ frozen\ unstable	:call Distribution("stable frozen unstable")<CR>
 
-    amenu Changelog.Set\ &Urgency.&low			:call Urgency("low")<CR>
-    amenu Changelog.Set\ Urgency.&medium		:call Urgency("medium")<CR>
-    amenu Changelog.Set\ Urgency.&high			:call Urgency("high")<CR>
+    amenu &Changelog.Set\ &Urgency.&low			:call Urgency("low")<CR>
+    amenu &Changelog.Set\ &Urgency.&medium		:call Urgency("medium")<CR>
+    amenu &Changelog.Set\ &Urgency.&high			:call Urgency("high")<CR>
 
-    menu Changelog.-sep-				<nul>
-    amenu Changelog.U&nfinalise				:call Unfinalise()<CR>
-    amenu Changelog.&Finalise				:call Finalise()<CR>
+    menu &Changelog.-sep-				<nul>
+    amenu &Changelog.U&nfinalise				:call Unfinalise()<CR>
+    amenu &Changelog.&Finalise				:call Finalise()<CR>
 
     if <SID>Finalised()
 	call <SID>FinaliseMenu()
@@ -228,7 +235,7 @@ endfunction
 
 augroup changelogMenu
 au BufEnter * if &filetype == "debchangelog" | call <SID>MakeMenu() | endif
-au BufLeave * if &filetype == "debchangelog" | silent! aunmenu Changelog | endif
+au BufLeave * if &filetype == "debchangelog" | silent! aunmenu &Changelog | endif
 augroup END
 
 " }}}
@@ -380,4 +387,8 @@ setlocal omnifunc=DebCompleteBugs
 
 " }}}
 
+" Restore the previous value of 'cpoptions'.
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
 " vim: set foldmethod=marker:
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/desktop.vim
@@ -0,0 +1,13 @@
+" Vim filetype plugin file
+" Language: XDG desktop entry
+" Maintainer: Eisuke Kawashima ( e.kawaschima+vim AT gmail.com )
+" Last Change: 2022-07-26
+
+if exists('b:did_ftplugin')
+  finish
+endif
+let b:did_ftplugin = v:true
+
+setl comments=:#
+setl commentstring=#%s
+let b:undo_ftplugin = 'setl com< cms<'
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/swayconfig.vim
@@ -0,0 +1,16 @@
+" Vim filetype plugin file
+" Language: sway config file
+" Original Author: James Eapen <james.eapen@vai.org>
+" Maintainer: James Eapen <james.eapen@vai.org>
+" Version: 0.1
+" Last Change: 2022 June 07
+
+if exists("b:did_ftplugin")
+  finish
+endif
+
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setlocal cms<"
+
+setlocal commentstring=#\ %s
--- a/runtime/indent/html.vim
+++ b/runtime/indent/html.vim
@@ -600,7 +600,7 @@ func s:Alien3()
   endif
   if b:hi_indent.scripttype == "javascript"
     " indent for further lines
-    return eval(b:hi_js1indent) + GetJavascriptIndent()
+    return GetJavascriptIndent()
   else
     return -1
   endif
--- a/runtime/indent/javascript.vim
+++ b/runtime/indent/javascript.vim
@@ -473,6 +473,12 @@ function GetJavascriptIndent()
   elseif num
     return s:Nat(num_ind + get(l:,'case_offset',s:sw()) + l:switch_offset + b_l + is_op)
   endif
+
+  let nest = get(get(b:, 'hi_indent', {}), 'blocklnr')
+  if nest
+    return indent(nextnonblank(nest + 1)) + b_l + is_op
+  endif
+
   return b_l + is_op
 endfunction
 
--- a/runtime/lang/Makefile
+++ b/runtime/lang/Makefile
@@ -22,6 +22,9 @@ all: \
 		menu_sr_rs.iso_8859-2.vim \
 		menu_sr_rs.ascii.vim \
 		menu_czech_czech_republic.ascii.vim \
+		menu_hu_hu.iso_8859-2.vim \
+		menu_sk_sk.iso_8859-2.vim \
+
 
 # Convert menu_zh_cn.utf-8.vim to create menu_chinese_gb.936.vim.
 menu_chinese_gb.936.vim: menu_zh_cn.utf-8.vim
@@ -39,7 +42,7 @@ menu_chinese_taiwan.950.vim: menu_zh_tw.
 menu_cs_cz.iso_8859-2.vim: menu_cs_cz.utf-8.vim
 	rm -f menu_cs_cz.iso_8859-2.vim
 	iconv -f utf-8 -t iso8859-2 menu_cs_cz.utf-8.vim | \
-		sed -e 's/scriptencoding utf-8/scriptencoding iso8859-2/' \
+		sed -e 's/scriptencoding utf-8/scriptencoding iso-8859-2/' \
 			-e 's/" Original translations/" Generated from menu_cs_cz.utf-8.vim, DO NOT EDIT/' \
 			-e 's/\(" Menu Translations:.*\)(.*)/\1(ISO8859-2)/'  \
 			> menu_cs_cz.iso_8859-2.vim
@@ -95,7 +98,7 @@ menu_ko_kr.euckr.vim: menu_ko_kr.utf-8.v
 menu_pl_pl.iso_8859-2.vim: menu_pl_pl.utf-8.vim
 	rm -f menu_pl_pl.iso_8859-2.vim
 	iconv -f utf-8 -t iso8859-2 menu_pl_pl.utf-8.vim | \
-		sed -e 's/scriptencoding utf-8/scriptencoding iso8859-2/' -e 's/" Original translations/" Generated from menu_pl_pl.utf-8.vim, DO NOT EDIT/' > menu_pl_pl.iso_8859-2.vim
+		sed -e 's/scriptencoding utf-8/scriptencoding iso-8859-2/' -e 's/" Original translations/" Generated from menu_pl_pl.utf-8.vim, DO NOT EDIT/' > menu_pl_pl.iso_8859-2.vim
 
 # Convert menu_pl_pl.utf-8.vim to create menu_polish_poland.1250.vim.
 menu_polish_poland.1250.vim: menu_pl_pl.utf-8.vim
@@ -194,3 +197,15 @@ menu_uk_ua.koi8-u.vim: menu_uk_ua.utf-8.
 	rm -f menu_uk_ua.koi8-u.vim
 	iconv -f utf-8 -t koi8-u menu_uk_ua.utf-8.vim | \
 		sed -e 's/scriptencoding utf-8/scriptencoding koi8-u/' -e 's/" Original translations/" Generated from menu_uk_ua.utf-8.vim, DO NOT EDIT/' > menu_uk_ua.koi8-u.vim
+
+# Convert menu_hu_hu.utf-8.vim to create menu_hu_hu.iso_8859-2.vim.
+menu_hu_hu.iso_8859-2.vim: menu_hu_hu.utf-8.vim
+	rm -f menu_hu_hu.iso_8859-2.vim
+	iconv -f utf-8 -t iso8859-2 menu_hu_hu.utf-8.vim | \
+		sed -e 's/scriptencoding utf-8/scriptencoding iso-8859-2/' -e 's/" Original translations/" Generated from menu_hu_hu.utf-8.vim, DO NOT EDIT/' > menu_hu_hu.iso_8859-2.vim
+
+# Convert menu_slovak_slovak_republic.1250.vim to create menu_sk_sk.iso_8859-2.vim.
+menu_sk_sk.iso_8859-2.vim: menu_slovak_slovak_republic.1250.vim
+	rm -f menu_sk_sk.iso_8859-2.vim
+	iconv -f cp1250 -t iso8859-2 menu_slovak_slovak_republic.1250.vim | \
+		sed -e 's/scriptencoding cp1250/scriptencoding iso-8859-2/' -e 's/" Original translations/" Generated from menu_slovak_slovak_republic.1250.vim, DO NOT EDIT/' > menu_sk_sk.iso_8859-2.vim
--- a/runtime/lang/menu_chinese_gb.936.vim
+++ b/runtime/lang/menu_chinese_gb.936.vim
@@ -1,10 +1,15 @@
 " Menu Translations:    Simplified Chinese
-" Maintainer:           Shun Bai <baishunde@gmail.com>
-" Previous Maintainer:  Yuheng Xie <elephant@linux.net.cn>
-" Last Change:          2022 Feb 19
+" Maintainer:           Ada (Haowen) Yu <me@yuhaowen.com>
+" Previous Maintainer:  Shun Bai <baishunde@gmail.com>, Yuheng Xie <elephant@linux.net.cn>
+" Last Change:          2022 July 9
 " Generated from menu_zh_cn.utf-8.vim, DO NOT EDIT
+"
+" Generated with the scripts from:
+"
+"       https://github.com/adaext/vim-menutrans-helper
 
 " Quit when menu translations have already been done.
+
 if exists("did_menu_trans")
   finish
 endif
@@ -15,18 +20,18 @@ set cpo&vim
 scriptencoding cp936
 
 " Help menu
-menutrans &Help		(&H)
+menutrans &Help (&H)
 " Help menuitems and dialog {{{1
-menutrans &Overview<Tab><F1>	(&O)<Tab><F1>
-menutrans &User\ Manual			ûֲ(&U)
-menutrans &How-to\ Links		ʹ(&H)
-menutrans &Find\.\.\.			(&F)\.\.\.
-menutrans &Credits				л(&C)
-menutrans Co&pying				Ȩ(&P)
-menutrans &Sponsor/Register		/ע(&S)
-menutrans O&rphans				ȹ¶(&R)
-menutrans &Version				汾(&V)
-menutrans &About				(&A)
+menutrans &Overview<Tab><F1> (&O)<Tab><F1>
+menutrans &User\ Manual ûֲ(&U)
+menutrans &How-to\ Links ʹ(&H)
+menutrans &Find\.\.\. (&F)\.\.\.
+menutrans &Credits л(&C)
+menutrans Co&pying Ȩ(&P)
+menutrans &Sponsor/Register /ע(&S)
+menutrans O&rphans ȹ¶(&R)
+menutrans &Version 汾(&V)
+menutrans &About (&A)
 
 " fun! s:Helpfind()
 if !exists("g:menutrans_help_dialog")
@@ -35,67 +40,68 @@ endif
 " }}}
 
 " File menu
-menutrans &File		ļ(&F)
+menutrans &File ļ(&F)
 " File menuitems {{{1
-menutrans &Open\.\.\.<Tab>:e			(&O)\.\.\.<Tab>:e
-menutrans Sp&lit-Open\.\.\.<Tab>:sp		ڲִڴ(&L)\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	ڱǩҳ\.\.\.<Tab>:tabnew
-menutrans &New<Tab>:enew				½(&N)<Tab>:enew
-menutrans &Close<Tab>:close				ر(&C)<Tab>:close
-menutrans &Save<Tab>:w					(&S)<Tab>:w
-menutrans Save\ &As\.\.\.<Tab>:sav		Ϊ(&A)\.\.\.<Tab>:sav
-menutrans Split\ &Diff\ With\.\.\.		ִԶԱȲ(Diff)(&D)\.\.\.
-menutrans Split\ Patched\ &By\.\.\.		ִԽ޲(Patch)(&B)\.\.\.
-menutrans &Print						ӡ(&P)
-menutrans Sa&ve-Exit<Tab>:wqa			沢˳(&V)<Tab>:wqa
-menutrans E&xit<Tab>:qa					˳(&X)<Tab>:qa
+menutrans &Open\.\.\.<Tab>:e (&O)\.\.\.<Tab>:e
+menutrans Sp&lit-Open\.\.\.<Tab>:sp ڲִڴ(&L)\.\.\.<Tab>:sp
+menutrans Open\ Tab\.\.\.<Tab>:tabnew ڱǩҳ\.\.\.<Tab>:tabnew
+menutrans &New<Tab>:enew ½(&N)<Tab>:enew
+menutrans &Close<Tab>:close ر(&C)<Tab>:close
+menutrans &Save<Tab>:w (&S)<Tab>:w
+menutrans Save\ &As\.\.\.<Tab>:sav Ϊ(&A)\.\.\.<Tab>:sav
+menutrans Split\ &Diff\ With\.\.\. ִԶԱȲ(Diff)(&D)\.\.\.
+menutrans Split\ Patched\ &By\.\.\. ִԽ޲(Patch)(&B)\.\.\.
+menutrans &Print ӡ(&P)
+menutrans Sa&ve-Exit<Tab>:wqa 沢˳(&V)<Tab>:wqa
+menutrans E&xit<Tab>:qa ˳(&X)<Tab>:qa
 " }}}
 
 " Edit menu
-menutrans &Edit		༭(&E)
+menutrans &Edit ༭(&E)
 " Edit menuitems {{{1
-menutrans &Undo<Tab>u						(&U)<Tab>u
-menutrans &Redo<Tab>^R						ָ(&R)<Tab>^R
-menutrans Rep&eat<Tab>\.					ظ(&E)<Tab>\.
-menutrans Cu&t<Tab>"+x						(&T)<Tab>"+x
-menutrans &Copy<Tab>"+y						(&C)<Tab>"+y
-menutrans &Paste<Tab>"+gP					ճ(&P)<Tab>"+gP
-menutrans Put\ &Before<Tab>[p				ճǰ(&B)<Tab>[p
-menutrans Put\ &After<Tab>]p				ճ(&A)<Tab>]p
-menutrans &Delete<Tab>x						ɾ(&D)<Tab>x
-menutrans &Select\ All<Tab>ggVG				ȫѡ(&S)<Tab>ggVG
-menutrans &Find\.\.\.						(&F)\.\.\.
-menutrans Find\ and\ Rep&lace\.\.\.			Һ滻(&L)\.\.\.
-menutrans &Find<Tab>/						(&F)<Tab>/
-menutrans Find\ and\ Rep&lace<Tab>:%s		Һ滻(&L)<Tab>:%s
-menutrans Settings\ &Window					ô(&W)
-menutrans Startup\ &Settings				(&S)
+menutrans &Undo<Tab>u (&U)<Tab>u
+menutrans &Redo<Tab>^R ָ(&R)<Tab>^R
+menutrans Rep&eat<Tab>\. ظ(&E)<Tab>\.
+menutrans Cu&t<Tab>"+x (&T)<Tab>"+x
+menutrans &Copy<Tab>"+y (&C)<Tab>"+y
+menutrans &Paste<Tab>"+gP ճ(&P)<Tab>"+gP
+menutrans Put\ &Before<Tab>[p ճǰ(&B)<Tab>[p
+menutrans Put\ &After<Tab>]p ճ(&A)<Tab>]p
+menutrans &Delete<Tab>x ɾ(&D)<Tab>x
+menutrans &Select\ All<Tab>ggVG ȫѡ(&S)<Tab>ggVG
+menutrans &Find\.\.\. (&F)\.\.\.
+menutrans Find\ and\ Rep&lace\.\.\. Һ滻(&L)\.\.\.
+menutrans &Find<Tab>/ (&F)<Tab>/
+menutrans Find\ and\ Rep&lace<Tab>:%s Һ滻(&L)<Tab>:%s
+menutrans Find\ and\ Rep&lace<Tab>:s Һ滻(&L)<Tab>:s
+menutrans Settings\ &Window ô(&W)
+menutrans Startup\ &Settings (&S)
 
 " Edit/Global Settings
-menutrans &Global\ Settings					ȫ(&G)
+menutrans &Global\ Settings ȫ(&G)
 " Edit.Global Settings menuitems and dialogs {{{2
-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!		/ظ(&H)<Tab>:set\ hls!
-menutrans Toggle\ &Ignoring\ Case<Tab>:set\ ic!				/غԴСд(&I)<Tab>:set\ ic!
-menutrans Toggle\ &Showing\ Matched\ Pairs<Tab>:set\ sm!	/ʾƥ(&S)<Tab>:set\ sm!
-menutrans &Context\ Lines									(&C)
-menutrans &Virtual\ Edit									༭(&V)
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls! /ظ(&H)<Tab>:set\ hls!
+menutrans Toggle\ &Ignoring\ Case<Tab>:set\ ic! /غԴСд(&I)<Tab>:set\ ic!
+menutrans Toggle\ &Showing\ Matched\ Pairs<Tab>:set\ sm! /ʾƥ(&S)<Tab>:set\ sm!
+menutrans &Context\ Lines (&C)
+menutrans &Virtual\ Edit ༭(&V)
 " Edit.Global Settings.Virtual Edit menuitems {{{3
-menutrans Never					Ӳ
-menutrans Block\ Selection		ֻѡοʱ
-menutrans Insert\ Mode			ֻڲģʽʱ
-menutrans Block\ and\ Insert	ѡοͲģʽʱ
-menutrans Always				ʼ
+menutrans Never Ӳ
+menutrans Block\ Selection ֻѡοʱ
+menutrans Insert\ Mode ֻڲģʽʱ
+menutrans Block\ and\ Insert ѡοͲģʽʱ
+menutrans Always ʼ
 " }}}
-menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!				/زģʽ(&M)<Tab>:set\ im!
-menutrans Toggle\ Vi\ C&ompatibility<Tab>:set\ cp!			/\ Vi\ (&O)<Tab>:set\ cp!
-menutrans Search\ &Path\.\.\.								·(&P)\.\.\.
-menutrans Ta&g\ Files\.\.\.									ļ(Tags)(&G)\.\.\.
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im! /زģʽ(&M)<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatibility<Tab>:set\ cp! /\ Vi\ (&O)<Tab>:set\ cp!
+menutrans Search\ &Path\.\.\. ·(&P)\.\.\.
+menutrans Ta&g\ Files\.\.\. ļ(Tags)(&G)\.\.\.
 
 " GUI options
-menutrans Toggle\ &Toolbar									/ع(&T)
-menutrans Toggle\ &Bottom\ Scrollbar						/صײ(&B)
-menutrans Toggle\ &Left\ Scrollbar							/(&L)
-menutrans Toggle\ &Right\ Scrollbar							/Ҳ(&R)
+menutrans Toggle\ &Toolbar /ع(&T)
+menutrans Toggle\ &Bottom\ Scrollbar /صײ(&B)
+menutrans Toggle\ &Left\ Scrollbar /(&L)
+menutrans Toggle\ &Right\ Scrollbar /Ҳ(&R)
 
 " fun! s:SearchP()
 if !exists("g:menutrans_path_dialog")
@@ -109,23 +115,23 @@ endif
 " }}}
 
 " Edit/File Settings
-menutrans F&ile\ Settings					ļ(&I)
+menutrans F&ile\ Settings ļ(&I)
 " Edit.File Settings menuitems and dialogs {{{2
 " Boolean options
-menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!			/к(&N)<Tab>:set\ nu!
-menutrans Toggle\ Relati&ve\ Line\ Numbering<Tab>:set\ rnu!	/к(&V)<Tab>:set\ rnu!
-menutrans Toggle\ &List\ Mode<Tab>:set\ list!				/бģʽ(&L)<Tab>:set\ list!
-menutrans Toggle\ Line\ &Wrapping<Tab>:set\ wrap!			/ػ(&W)<Tab>:set\ wrap!
-menutrans Toggle\ W&rapping\ at\ Word<Tab>:set\ lbr!		/شβ(&R)<Tab>:set\ lbr!
-menutrans Toggle\ Tab\ &Expanding<Tab>:set\ et!				/Ʊչ(&E)<Tab>:set\ et!
-menutrans Toggle\ &Auto\ Indenting<Tab>:set\ ai!			/Զ(&A)<Tab>:set\ ai!
-menutrans Toggle\ &C-Style\ Indenting<Tab>:set\ cin!		/\ C\ ʽ(&C)<Tab>:set\ cin!
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu! /к(&N)<Tab>:set\ nu!
+menutrans Toggle\ Relati&ve\ Line\ Numbering<Tab>:set\ rnu! /к(&V)<Tab>:set\ rnu!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list! /бģʽ(&L)<Tab>:set\ list!
+menutrans Toggle\ Line\ &Wrapping<Tab>:set\ wrap! /ػ(&W)<Tab>:set\ wrap!
+menutrans Toggle\ W&rapping\ at\ Word<Tab>:set\ lbr! /شβ(&R)<Tab>:set\ lbr!
+menutrans Toggle\ Tab\ &Expanding<Tab>:set\ et! /Ʊչ(&E)<Tab>:set\ et!
+menutrans Toggle\ &Auto\ Indenting<Tab>:set\ ai! /Զ(&A)<Tab>:set\ ai!
+menutrans Toggle\ &C-Style\ Indenting<Tab>:set\ cin! /\ C\ ʽ(&C)<Tab>:set\ cin!
 
 " other options
-menutrans &Shiftwidth										(&S)
-menutrans Soft\ &Tabstop									Ʊλ(Soft\ Tabstop)(&T)
-menutrans Te&xt\ Width\.\.\.								ı(&X)\.\.\.
-menutrans &File\ Format\.\.\.								ļʽ(&F)\.\.\.
+menutrans &Shiftwidth (&S)
+menutrans Soft\ &Tabstop Ʊλ(Soft\ Tabstop)(&T)
+menutrans Te&xt\ Width\.\.\. ı(&X)\.\.\.
+menutrans &File\ Format\.\.\. ļʽ(&F)\.\.\.
 
 " fun! s:TextWidth()
 if !exists("g:menutrans_textwidth_dialog")
@@ -140,36 +146,36 @@ if !exists("g:menutrans_fileformat_choic
   let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\nȡ(&C)"
 endif
 " }}}
-menutrans Show\ C&olor\ Schemes\ in\ Menu	ڲ˵ʾɫ(&O)
-menutrans C&olor\ Scheme					ɫ(&O)
-menutrans Show\ &Keymaps\ in\ Menu			ڲ˵ʾӳ(&K)
-menutrans &Keymap							ӳ(&K)
-menutrans Select\ Fo&nt\.\.\.				ѡ(&N)\.\.\.
+menutrans Show\ C&olor\ Schemes\ in\ Menu ڲ˵ʾɫ(&O)
+menutrans C&olor\ Scheme ɫ(&O)
+menutrans Show\ &Keymaps\ in\ Menu ڲ˵ʾӳ(&K)
+menutrans &Keymap ӳ(&K)
+menutrans Select\ Fo&nt\.\.\. ѡ(&N)\.\.\.
 " }}}
 
 " Programming menu
-menutrans &Tools	(&T)
+menutrans &Tools (&T)
 " Tools menuitems {{{1
-menutrans &Jump\ to\ This\ Tag<Tab>g^]			ת(Tag)(&J)<Tab>g^]
-menutrans Jump\ &Back<Tab>^T					ת(&B)<Tab>^T
-menutrans Build\ &Tags\ File					ɱļ(Tags)(&T)
+menutrans &Jump\ to\ This\ Tag<Tab>g^] ת(Tag)(&J)<Tab>g^]
+menutrans Jump\ &Back<Tab>^T ת(&B)<Tab>^T
+menutrans Build\ &Tags\ File ɱļ(Tags)(&T)
 
 " Tools.Spelling Menu
-menutrans &Spelling								ƴд(&S)
+menutrans &Spelling ƴд(&S)
 " Tools.Spelling menuitems and dialog {{{2
-menutrans &Spell\ Check\ On						ƴд(&S)
-menutrans Spell\ Check\ &Off					رƴд(&O)
-menutrans To\ &Next\ Error<Tab>]s				һ(&N)<Tab>]s
-menutrans To\ &Previous\ Error<Tab>[s			һ(&P)<Tab>[s
-menutrans Suggest\ &Corrections<Tab>z=			(&C)<Tab>z=
-menutrans &Repeat\ Correction<Tab>:spellrepall	ȫͬ(&R)<Tab>:spellrepall
-menutrans Set\ Language\ to\ "en"				Ϊ\ "en"
-menutrans Set\ Language\ to\ "en_au"			Ϊ\ "en_au"
-menutrans Set\ Language\ to\ "en_ca"			Ϊ\ "en_ca"
-menutrans Set\ Language\ to\ "en_gb"			Ϊ\ "en_gb"
-menutrans Set\ Language\ to\ "en_nz"			Ϊ\ "en_nz"
-menutrans Set\ Language\ to\ "en_us"			Ϊ\ "en_us"
-menutrans &Find\ More\ Languages				Ҹ(&F)
+menutrans &Spell\ Check\ On ƴд(&S)
+menutrans Spell\ Check\ &Off رƴд(&O)
+menutrans To\ &Next\ Error<Tab>]s һ(&N)<Tab>]s
+menutrans To\ &Previous\ Error<Tab>[s һ(&P)<Tab>[s
+menutrans Suggest\ &Corrections<Tab>z= (&C)<Tab>z=
+menutrans &Repeat\ Correction<Tab>:spellrepall ȫͬ(&R)<Tab>:spellrepall
+menutrans Set\ Language\ to\ "en" Ϊ\ "en"
+menutrans Set\ Language\ to\ "en_au" Ϊ\ "en_au"
+menutrans Set\ Language\ to\ "en_ca" Ϊ\ "en_ca"
+menutrans Set\ Language\ to\ "en_gb" Ϊ\ "en_gb"
+menutrans Set\ Language\ to\ "en_nz" Ϊ\ "en_nz"
+menutrans Set\ Language\ to\ "en_us" Ϊ\ "en_us"
+menutrans &Find\ More\ Languages Ҹ(&F)
 
 " func! s:SpellLang()
 if !exists("g:menutrans_set_lang_to")
@@ -178,113 +184,113 @@ endif
 " }}}
 
 " Tools.Fold Menu
-menutrans &Folding								۵(&F)
+menutrans &Folding ۵(&F)
 " Tools.Fold menuitems {{{2
 " open close folds
-menutrans &Enable/Disable\ Folds<Tab>zi			/۵(&E)<Tab>zi
-menutrans &View\ Cursor\ Line<Tab>zv			չ(&V)<Tab>zv
-menutrans Vie&w\ Cursor\ Line\ Only<Tab>zMzx	ֻչ(&W)<Tab>zMzx
-menutrans C&lose\ More\ Folds<Tab>zm			۵һ(&L)<Tab>zm
-menutrans &Close\ All\ Folds<Tab>zM				۵ȫ(&C)<Tab>zM
-menutrans O&pen\ More\ Folds<Tab>zr				չһ(&P)<Tab>zr
-menutrans &Open\ All\ Folds<Tab>zR				չȫ(&O)<Tab>zR
+menutrans &Enable/Disable\ Folds<Tab>zi /۵(&E)<Tab>zi
+menutrans &View\ Cursor\ Line<Tab>zv չ(&V)<Tab>zv
+menutrans Vie&w\ Cursor\ Line\ Only<Tab>zMzx ֻչ(&W)<Tab>zMzx
+menutrans C&lose\ More\ Folds<Tab>zm ۵һ(&L)<Tab>zm
+menutrans &Close\ All\ Folds<Tab>zM ۵ȫ(&C)<Tab>zM
+menutrans O&pen\ More\ Folds<Tab>zr չһ(&P)<Tab>zr
+menutrans &Open\ All\ Folds<Tab>zR չȫ(&O)<Tab>zR
 " fold method
-menutrans Fold\ Met&hod							۵ʽ(&H)
+menutrans Fold\ Met&hod ۵ʽ(&H)
 " Tools.Fold.Fold Method menuitems {{{3
-menutrans M&anual		ֶ(&A)
-menutrans I&ndent		(&N)
-menutrans E&xpression	ʽ(&X)
-menutrans S&yntax		﷨(&Y)
-menutrans &Diff			(Diff)(&D)
-menutrans Ma&rker		Ǻ(Marker)(&R)
+menutrans M&anual ֶ(&A)
+menutrans I&ndent (&N)
+menutrans E&xpression ʽ(&X)
+menutrans S&yntax ﷨(&Y)
+menutrans &Diff (Diff)(&D)
+menutrans Ma&rker Ǻ(Marker)(&R)
 " }}}
 " create and delete folds
-menutrans Create\ &Fold<Tab>zf					۵(&F)<Tab>zf
-menutrans &Delete\ Fold<Tab>zd					ɾ۵(&D)<Tab>zd
-menutrans Delete\ &All\ Folds<Tab>zD			ɾȫ۵(&A)<Tab>zD
+menutrans Create\ &Fold<Tab>zf ۵(&F)<Tab>zf
+menutrans &Delete\ Fold<Tab>zd ɾ۵(&D)<Tab>zd
+menutrans Delete\ &All\ Folds<Tab>zD ɾȫ۵(&A)<Tab>zD
 " moving around in folds
-menutrans Fold\ Col&umn\ Width					۵(&W)
+menutrans Fold\ Col&umn\ Width ۵(&W)
 " }}}
 
 " Tools.Diff Menu
-menutrans &Diff									(Diff)(&D)
+menutrans &Diff (Diff)(&D)
 " Tools.Diff menuitems {{{2
-menutrans &Update		ˢ(&U)
-menutrans &Get\ Block	öԲı(&G)
-menutrans &Put\ Block	ñı(&P)
+menutrans &Update ˢ(&U)
+menutrans &Get\ Block öԲı(&G)
+menutrans &Put\ Block ñı(&P)
 " }}}
 
-menutrans &Make<Tab>:make						(Make)(&M)<Tab>:make
-menutrans &List\ Errors<Tab>:cl					г(&L)<Tab>:cl
-menutrans L&ist\ Messages<Tab>:cl!				гϢ(&I)<Tab>:cl!
-menutrans &Next\ Error<Tab>:cn					һ(&N)<Tab>:cn
-menutrans &Previous\ Error<Tab>:cp				һ(&P)<Tab>:cp
-menutrans &Older\ List<Tab>:cold				ϾɵĴб(&O)<Tab>:cold
-menutrans N&ewer\ List<Tab>:cnew				µĴб(&E)<Tab>:cnew
-menutrans Error\ &Window						󴰿(&W)
+menutrans &Make<Tab>:make (Make)(&M)<Tab>:make
+menutrans &List\ Errors<Tab>:cl г(&L)<Tab>:cl
+menutrans L&ist\ Messages<Tab>:cl! гϢ(&I)<Tab>:cl!
+menutrans &Next\ Error<Tab>:cn һ(&N)<Tab>:cn
+menutrans &Previous\ Error<Tab>:cp һ(&P)<Tab>:cp
+menutrans &Older\ List<Tab>:cold ϾɵĴб(&O)<Tab>:cold
+menutrans N&ewer\ List<Tab>:cnew µĴб(&E)<Tab>:cnew
+menutrans Error\ &Window 󴰿(&W)
 " Tools.Error Window menuitems {{{2
-menutrans &Update<Tab>:cwin		ˢ(&U)<Tab>:cwin
-menutrans &Open<Tab>:copen		(&O)<Tab>:copen
-menutrans &Close<Tab>:cclose	ر(&C)<Tab>:cclose
+menutrans &Update<Tab>:cwin ˢ(&U)<Tab>:cwin
+menutrans &Open<Tab>:copen (&O)<Tab>:copen
+menutrans &Close<Tab>:cclose ر(&C)<Tab>:cclose
 " }}}
-menutrans Show\ Compiler\ Se&ttings\ in\ Menu	ڲ˵ʾ(&T)
-menutrans Se&t\ Compiler						ñ(&T)
-menutrans &Convert\ to\ HEX<Tab>:%!xxd			תʮ(&C)<Tab>:%!xxd
-menutrans Conve&rt\ Back<Tab>:%!xxd\ -r			ת(&R)<Tab>:%!xxd\ -r
+menutrans Show\ Compiler\ Se&ttings\ in\ Menu ڲ˵ʾ(&T)
+menutrans Se&t\ Compiler ñ(&T)
+menutrans &Convert\ to\ HEX<Tab>:%!xxd תʮ(&C)<Tab>:%!xxd
+menutrans Conve&rt\ Back<Tab>:%!xxd\ -r ת(&R)<Tab>:%!xxd\ -r
 " }}}
 
 " Buffer menu
-menutrans &Buffers	(&B)
+menutrans &Buffers (&B)
 " Buffer menuitems and dialog {{{1
-menutrans &Refresh\ Menu	ˢ±˵(&R)
-menutrans &Delete			ɾ(&D)
-menutrans &Alternate		л(&A)
-menutrans &Next				һ(&N)
-menutrans &Previous			һ(&P)
+menutrans &Refresh\ Menu ˢ±˵(&R)
+menutrans &Delete ɾ(&D)
+menutrans &Alternate л(&A)
+menutrans &Next һ(&N)
+menutrans &Previous һ(&P)
 
-" func! s:BMMunge(fname, bnum) 
+" func! s:BMMunge(fname, bnum)
 if !exists("g:menutrans_no_file")
   let g:menutrans_no_file = "[ļ]"
 endif
 " }}}
 
 " Window menu
-menutrans &Window	(&W)
+menutrans &Window (&W)
 " Window menuitems {{{1
-menutrans &New<Tab>^Wn					½(&N)<Tab>^Wn
-menutrans S&plit<Tab>^Ws				(&P)<Tab>^Ws
-menutrans Sp&lit\ To\ #<Tab>^W^^		ֲʾ\ #(&L)<Tab>^W^^
-menutrans Split\ &Vertically<Tab>^Wv	ֱ(&V)<Tab>^Wv
-menutrans Split\ File\ E&xplorer		ֲļ(&X)
-menutrans &Close<Tab>^Wc				ر(&C)<Tab>^Wc
-menutrans Close\ &Other(s)<Tab>^Wo		֮ȫر(&O)<Tab>^Wo
-menutrans Move\ &To						ƶ(&T)
-menutrans &Top<Tab>^WK					(&T)<Tab>^WK
-menutrans &Bottom<Tab>^WJ				׶(&B)<Tab>^WJ
-menutrans &Left\ Side<Tab>^WH			(&L)<Tab>^WH
-menutrans &Right\ Side<Tab>^WL			ұ(&R)<Tab>^WL
-menutrans Rotate\ &Up<Tab>^WR			ֻ(&U)<Tab>^WR
-menutrans Rotate\ &Down<Tab>^Wr			ֻ(&D)<Tab>^Wr
-menutrans &Equal\ Size<Tab>^W=			ƽֲ(&E)<Tab>^W=
-menutrans &Max\ Height<Tab>^W_			߶(&M)<Tab>^W
-menutrans M&in\ Height<Tab>^W1_			С߶(&I)<Tab>^W1_
-menutrans Max\ &Width<Tab>^W\|			(&W)<Tab>^W\|
-menutrans Min\ Widt&h<Tab>^W1\|			С(&H)<Tab>^W1\|
+menutrans &New<Tab>^Wn ½(&N)<Tab>^Wn
+menutrans S&plit<Tab>^Ws (&P)<Tab>^Ws
+menutrans Sp&lit\ To\ #<Tab>^W^^ ֲʾ\ #(&L)<Tab>^W^^
+menutrans Split\ &Vertically<Tab>^Wv ֱ(&V)<Tab>^Wv
+menutrans Split\ File\ E&xplorer ֲļ(&X)
+menutrans &Close<Tab>^Wc ر(&C)<Tab>^Wc
+menutrans Close\ &Other(s)<Tab>^Wo ֮ȫر(&O)<Tab>^Wo
+menutrans Move\ &To ƶ(&T)
+menutrans &Top<Tab>^WK (&T)<Tab>^WK
+menutrans &Bottom<Tab>^WJ ׶(&B)<Tab>^WJ
+menutrans &Left\ Side<Tab>^WH (&L)<Tab>^WH
+menutrans &Right\ Side<Tab>^WL ұ(&R)<Tab>^WL
+menutrans Rotate\ &Up<Tab>^WR ֻ(&U)<Tab>^WR
+menutrans Rotate\ &Down<Tab>^Wr ֻ(&D)<Tab>^Wr
+menutrans &Equal\ Size<Tab>^W= ƽֲ(&E)<Tab>^W=
+menutrans &Max\ Height<Tab>^W_ ߶(&M)<Tab>^W
+menutrans M&in\ Height<Tab>^W1_ С߶(&I)<Tab>^W1_
+menutrans Max\ &Width<Tab>^W\| (&W)<Tab>^W\|
+menutrans Min\ Widt&h<Tab>^W1\| С(&H)<Tab>^W1\|
 " }}}
 
 " The popup menu {{{1
-menutrans &Undo					(&U)
-menutrans Cu&t					(&T)
-menutrans &Copy					(&C)
-menutrans &Paste				ճ(&P)
-menutrans &Delete				ɾ(&D)
-menutrans Select\ Blockwise		Ϊѡο
-menutrans Select\ &Word			ѡ(&W)
-menutrans Select\ &Sentence		ѡ(&S)
-menutrans Select\ Pa&ragraph	ѡ(&R)
-menutrans Select\ &Line			ѡ(&L)
-menutrans Select\ &Block		ѡο(&B)
-menutrans Select\ &All			ȫѡ(&A)
+menutrans &Undo (&U)
+menutrans Cu&t (&T)
+menutrans &Copy (&C)
+menutrans &Paste ճ(&P)
+menutrans &Delete ɾ(&D)
+menutrans Select\ Blockwise Ϊѡο
+menutrans Select\ &Word ѡ(&W)
+menutrans Select\ &Sentence ѡ(&S)
+menutrans Select\ Pa&ragraph ѡ(&R)
+menutrans Select\ &Line ѡ(&L)
+menutrans Select\ &Block ѡο(&B)
+menutrans Select\ &All ȫѡ(&A)
 
 " func! <SID>SpellPopup()
 if !exists("g:menutrans_spell_change_ARG_to")
@@ -305,148 +311,260 @@ if has("toolbar")
   endif
   fun Do_toolbar_tmenu()
     let did_toolbar_tmenu = 1
-    tmenu ToolBar.Open			ļ
-    tmenu ToolBar.Save			浱ǰļ
-    tmenu ToolBar.SaveAll		ȫ
-    tmenu ToolBar.Print			ӡ
-    tmenu ToolBar.Undo			
-    tmenu ToolBar.Redo			ָ
-    tmenu ToolBar.Cut			е
-    tmenu ToolBar.Copy			Ƶ
-    tmenu ToolBar.Paste			Ӽճ
+    tmenu ToolBar.Open ļ
+    tmenu ToolBar.Save 浱ǰļ
+    tmenu ToolBar.SaveAll ȫ
+    tmenu ToolBar.Print ӡ
+    tmenu ToolBar.Undo 
+    tmenu ToolBar.Redo ָ
+    tmenu ToolBar.Cut е
+    tmenu ToolBar.Copy Ƶ
+    tmenu ToolBar.Paste Ӽճ
     if !has("gui_athena")
-      tmenu ToolBar.Replace		Һ滻...
-      tmenu ToolBar.FindNext	һ
-      tmenu ToolBar.FindPrev	һ
+      tmenu ToolBar.Replace Һ滻...
+      tmenu ToolBar.FindNext һ
+      tmenu ToolBar.FindPrev һ
     endif
-    tmenu ToolBar.LoadSesn		ػỰ
-    tmenu ToolBar.SaveSesn		浱ǰỰ
-    tmenu ToolBar.RunScript		 Vim ű
-    tmenu ToolBar.Make			ɵǰĿ (:make)
-    tmenu ToolBar.RunCtags		ڵǰĿ¼ɱ(Tags) (!ctags -R .)
-    tmenu ToolBar.TagJump		תڱ(Tag)
-    tmenu ToolBar.Help			Vim 
-    tmenu ToolBar.FindHelp		 Vim в
+    tmenu ToolBar.LoadSesn ػỰ
+    tmenu ToolBar.SaveSesn 浱ǰỰ
+    tmenu ToolBar.RunScript  Vim ű
+    tmenu ToolBar.Make ɵǰĿ (:make)
+    tmenu ToolBar.RunCtags ڵǰĿ¼ɱ(Tags) (!ctags -R .)
+    tmenu ToolBar.TagJump תڱ(Tag)
+    tmenu ToolBar.Help Vim 
+    tmenu ToolBar.FindHelp  Vim в
   endfun
 endif
 " }}}
 
 " Syntax menu
-menutrans &Syntax	﷨(&S)
+menutrans &Syntax ﷨(&S)
 " Syntax menuitems {{{1
-menutrans &Show\ File\ Types\ in\ Menu	ڲ˵ʾļ(&S)
-menutrans &Off							ر(&O)
-menutrans &Manual						ֶ(&M)
-menutrans A&utomatic					Զ(&U)
-menutrans On/Off\ for\ &This\ File		ֻļ/(&T)
-menutrans Co&lor\ Test					ɫʲ(&L)
-menutrans &Highlight\ Test				(&H)
-menutrans &Convert\ to\ HTML			ת\ HTML(&C)
+menutrans &Show\ File\ Types\ in\ Menu ڲ˵ʾļ(&S)
+menutrans &Off ر(&O)
+menutrans &Manual ֶ(&M)
+menutrans A&utomatic Զ(&U)
+menutrans On/Off\ for\ &This\ File ֻļ/(&T)
+menutrans Co&lor\ Test ɫʲ(&L)
+menutrans &Highlight\ Test (&H)
+menutrans &Convert\ to\ HTML ת\ HTML(&C)
+
 " From synmenu.vim
-menutrans Set\ '&syntax'\ Only			ֻ\ 'syntax'(&S)
-menutrans Set\ '&filetype'\ Too			Ҳ\ 'filetype'(&F)
+menutrans Set\ '&syntax'\ Only ֻ\ 'syntax'(&S)
+menutrans Set\ '&filetype'\ Too Ҳ\ 'filetype'(&F)
+menutrans Oracle\ config Oracle\ ļ
+menutrans Vim\ help\ file Vim\ ļ
+menutrans Vim\ script Vim\ ű
+menutrans Viminfo\ file Vim\ Ϣļ
+menutrans Virata\ config Virata\ ļ
+menutrans Whitespace\ (add) Ӽո
 " }}}
 
 " Netrw menu {{{1
 " Plugin loading may be after menu translation
 " So giveup testing if Netrw Plugin is loaded
 " if exists("g:loaded_netrwPlugin")
-  menutrans Help<tab><F1>					<tab><F1>
-  menutrans Bookmarks						ǩ
-  menutrans History							ʷ¼
-  menutrans Go\ Up\ Directory<tab>-			һ<tab>-
-  menutrans Apply\ Special\ Viewer<tab>x	Ĭϳ<tab>x
-  menutrans Bookmarks\ and\ History			ǩʷ¼
+  menutrans Help<tab><F1> <tab><F1>
+  menutrans Bookmarks ǩ
+  menutrans History ʷ¼
+  menutrans Go\ Up\ Directory<tab>- һ<tab>-
+  menutrans Apply\ Special\ Viewer<tab>x Ĭϳ<tab>x
+  menutrans Bookmarks\ and\ History ǩʷ¼
   " Netrw.Bookmarks and History menuitems {{{2
-  menutrans Bookmark\ Current\ Directory<tab>mb		ǩ<tab>mb
-  menutrans Bookmark\ Delete						Ƴǩ
-  menutrans Goto\ Prev\ Dir\ (History)<tab>u		(ʷ¼)<tab>u
-  menutrans Goto\ Next\ Dir\ (History)<tab>U		ǰ(ʷ¼)<tab>U
-  menutrans List<tab>qb								б<tab>qb
+  menutrans Bookmark\ Current\ Directory<tab>mb ǩ<tab>mb
+  menutrans Bookmark\ Delete Ƴǩ
+  menutrans Goto\ Prev\ Dir\ (History)<tab>u (ʷ¼)<tab>u
+  menutrans Goto\ Next\ Dir\ (History)<tab>U ǰ(ʷ¼)<tab>U
+  menutrans List<tab>qb б<tab>qb
   " }}}
-  menutrans Browsing\ Control				
+  menutrans Browsing\ Control 
   " Netrw.Browsing Control menuitems {{{2
-  menutrans Horizontal\ Split<tab>o					ڲִڴ<tab>o
-  menutrans Vertical\ Split<tab>v					ڴֱִڴ<tab>v
-  menutrans New\ Tab<tab>t							ڱǩҳ<tab>t	
-  menutrans Preview<tab>p							Ԥ<tab>p
-  menutrans Edit\ File\ Hiding\ List<tab><ctrl-h>	༭(Hiding\ List)<tab><ctrl-h>
-  menutrans Edit\ Sorting\ Sequence<tab>S			༭(Sorting\ Sequence)<tab>S
-  menutrans Quick\ Hide/Unhide\ Dot\ Files<tab>gh	/ʾ\.ͷļ<tab>gh
-  menutrans Refresh\ Listing<tab><ctrl-l>			ˢ<tab><ctrl-l>
-  menutrans Settings/Options<tab>:NetrwSettings		/ѡ<tab>:NetrwSettings
+  menutrans Horizontal\ Split<tab>o ڲִڴ<tab>o
+  menutrans Vertical\ Split<tab>v ڴֱִڴ<tab>v
+  menutrans New\ Tab<tab>t ڱǩҳ<tab>t
+  menutrans Preview<tab>p Ԥ<tab>p
+  menutrans Edit\ File\ Hiding\ List<tab><ctrl-h> ༭(Hiding\ List)<tab><ctrl-h>
+  menutrans Edit\ Sorting\ Sequence<tab>S ༭(Sorting\ Sequence)<tab>S
+  menutrans Quick\ Hide/Unhide\ Dot\ Files<tab>gh /ʾ\.ͷļ<tab>gh
+  menutrans Refresh\ Listing<tab><ctrl-l> ˢ<tab><ctrl-l>
+  menutrans Settings/Options<tab>:NetrwSettings /ѡ<tab>:NetrwSettings
   " }}}
-  menutrans Delete\ File/Directory<tab>D	ɾļ/Ŀ¼<tab>D
-  menutrans Edit\ File/Dir					༭ļ/Ŀ¼
+  menutrans Delete\ File/Directory<tab>D ɾļ/Ŀ¼<tab>D
+  menutrans Edit\ File/Dir ༭ļ/Ŀ¼
   " Netrw.Edit File menuitems {{{2
-  menutrans Create\ New\ File<tab>%				½ļ<tab>%
-  menutrans In\ Current\ Window<tab><cr>		ڵǰ<tab><cr>
-  menutrans Preview\ File/Directory<tab>p		Ԥļ/Ŀ¼<tab>p
-  menutrans In\ Previous\ Window<tab>P			һ<tab>P
-  menutrans In\ New\ Window<tab>o				´<tab>o
-  menutrans In\ New\ Tab<tab>t					±ǩҳ<tab>t
-  menutrans In\ New\ Vertical\ Window<tab>v		´ֱ<tab>v
+  menutrans Create\ New\ File<tab>% ½ļ<tab>%
+  menutrans In\ Current\ Window<tab><cr> ڵǰ<tab><cr>
+  menutrans Preview\ File/Directory<tab>p Ԥļ/Ŀ¼<tab>p
+  menutrans In\ Previous\ Window<tab>P һ<tab>P
+  menutrans In\ New\ Window<tab>o ´<tab>o
+  menutrans In\ New\ Tab<tab>t ±ǩҳ<tab>t
+  menutrans In\ New\ Vertical\ Window<tab>v ´ֱ<tab>v
   " }}}
-  menutrans Explore							
+  menutrans Explore 
   " Netrw.Explore menuitems {{{2
-  menutrans Directory\ Name															ָĿ¼
-  menutrans Filenames\ Matching\ Pattern\ (curdir\ only)<tab>:Explore\ */			ƥָļģʽ(ǰĿ¼)<tab>:Explore\ */
-  menutrans Filenames\ Matching\ Pattern\ (+subdirs)<tab>:Explore\ **/				ƥָļģʽ(Ŀ¼)<tab>:Explore\ **/
-  menutrans Files\ Containing\ String\ Pattern\ (curdir\ only)<tab>:Explore\ *//	ݰַָģʽ(ǰĿ¼)<tab>:Explore\ *//
-  menutrans Files\ Containing\ String\ Pattern\ (+subdirs)<tab>:Explore\ **//		ݰַָģʽ(Ŀ¼)<tab>:Explore\ **//
-  menutrans Next\ Match<tab>:Nexplore												һƥ<tab>:Nexplore
-  menutrans Prev\ Match<tab>:Pexplore												һƥ<tab>:Pexplore
+  menutrans Directory\ Name ָĿ¼
+  menutrans Filenames\ Matching\ Pattern\ (curdir\ only)<tab>:Explore\ */ ƥָļģʽ(ǰĿ¼)<tab>:Explore\ */
+  menutrans Filenames\ Matching\ Pattern\ (+subdirs)<tab>:Explore\ **/ ƥָļģʽ(Ŀ¼)<tab>:Explore\ **/
+  menutrans Files\ Containing\ String\ Pattern\ (curdir\ only)<tab>:Explore\ *// ݰַָģʽ(ǰĿ¼)<tab>:Explore\ *//
+  menutrans Files\ Containing\ String\ Pattern\ (+subdirs)<tab>:Explore\ **// ݰַָģʽ(Ŀ¼)<tab>:Explore\ **//
+  menutrans Next\ Match<tab>:Nexplore һƥ<tab>:Nexplore
+  menutrans Prev\ Match<tab>:Pexplore һƥ<tab>:Pexplore
   " }}}
-  menutrans Make\ Subdirectory<tab>d		½Ŀ¼<tab>d
-  menutrans Marked\ Files					ѡ(Marked)ļ
+  menutrans Make\ Subdirectory<tab>d ½Ŀ¼<tab>d
+  menutrans Marked\ Files ѡ(Marked)ļ
   " Netrw.Marked Files menuitems {{{2
-  menutrans Mark\ File<tab>mf						ѡ(Mark)/ȡ<tab>mf
-  menutrans Mark\ Files\ by\ Regexp<tab>mr			ʽ(Regexp)ѡ<tab>mr
-  menutrans Hide-Show-List\ Control<tab>a			/ʾ<tab>a
-  menutrans Copy\ To\ Target<tab>mc					ƵĿ<tab>mc
-  menutrans Delete<tab>D							ɾ<tab>D
-  menutrans Diff<tab>md								(Diff)<tab>md
-  menutrans Edit<tab>me								༭<tab>me
-  menutrans Exe\ Cmd<tab>mx							Ϊ<tab>mx
-  menutrans Move\ To\ Target<tab>mm					ƶĿ<tab>mm
-  menutrans Obtain<tab>O							ȡ<tab>O
-  menutrans Print<tab>mp							ӡ<tab>mp
-  menutrans Replace<tab>R							滻<tab>R
-  menutrans Set\ Target<tab>mt						Ŀ<tab>mt
-  menutrans Tag<tab>mT								ɱļ(Tags)<tab>mT
-  menutrans Zip/Unzip/Compress/Uncompress<tab>mz	ѹ/ѹ<tab>mz
+  menutrans Mark\ File<tab>mf ѡ(Mark)/ȡ<tab>mf
+  menutrans Mark\ Files\ by\ Regexp<tab>mr ʽ(Regexp)ѡ<tab>mr
+  menutrans Hide-Show-List\ Control<tab>a /ʾ<tab>a
+  menutrans Copy\ To\ Target<tab>mc ƵĿ<tab>mc
+  menutrans Delete<tab>D ɾ<tab>D
+  menutrans Diff<tab>md (Diff)<tab>md
+  menutrans Edit<tab>me ༭<tab>me
+  menutrans Exe\ Cmd<tab>mx Ϊ<tab>mx
+  menutrans Move\ To\ Target<tab>mm ƶĿ<tab>mm
+  menutrans Obtain<tab>O ȡ<tab>O
+  menutrans Print<tab>mp ӡ<tab>mp
+  menutrans Replace<tab>R 滻<tab>R
+  menutrans Set\ Target<tab>mt Ŀ<tab>mt
+  menutrans Tag<tab>mT ɱļ(Tags)<tab>mT
+  menutrans Zip/Unzip/Compress/Uncompress<tab>mz ѹ/ѹ<tab>mz
   " }}}
-  menutrans Obtain\ File<tab>O				ȡļ<tab>O
-  menutrans Style							ʾ
+  menutrans Obtain\ File<tab>O ȡļ<tab>O
+  menutrans Style ʾ
   " Netrw.Style menuitems {{{2
-  menutrans Listing							бʽ
+  menutrans Listing бʽ
   " Netrw.Style.Listing menuitems {{{3
-  menutrans thin<tab>i	<thin)<tab>i
-  menutrans long<tab>i	ϸ(long)<tab>i
-  menutrans wide<tab>i	(wide)<tab>i
-  menutrans tree<tab>i	״(tree)<tab>i
+  menutrans thin<tab>i <thin)<tab>i
+  menutrans long<tab>i ϸ(long)<tab>i
+  menutrans wide<tab>i (wide)<tab>i
+  menutrans tree<tab>i ״(tree)<tab>i
   " }}}
-  menutrans Normal-Hide-Show				ʾ/
+  menutrans Normal-Hide-Show ʾ/
   " Netrw.Style.Normal-Hide_show menuitems {{{3
-  menutrans Show\ All<tab>a		ʾȫ
-  menutrans Normal<tab>a		ʾļ
-  menutrans Hidden\ Only<tab>a	ֻʾļ
+  menutrans Show\ All<tab>a ʾȫ
+  menutrans Normal<tab>a ʾļ
+  menutrans Hidden\ Only<tab>a ֻʾļ
   " }}}
-  menutrans Reverse\ Sorting\ Order<tab>r	/<tab>r
-  menutrans Sorting\ Method					ʽ
+  menutrans Reverse\ Sorting\ Order<tab>r /<tab>r
+  menutrans Sorting\ Method ʽ
   " Netrw.Style.Sorting Method menuitems {{{3
-  menutrans Name<tab>s		ļ<tab>s
-  menutrans Time<tab>s		޸ʱ<tab>s
-  menutrans Size<tab>s		С<tab>s
-  menutrans Exten<tab>s		չ<tab>s
+  menutrans Name<tab>s ļ<tab>s
+  menutrans Time<tab>s ޸ʱ<tab>s
+  menutrans Size<tab>s С<tab>s
+  menutrans Exten<tab>s չ<tab>s
   " }}}
   " }}}
-  menutrans Rename\ File/Directory<tab>R	ļ/Ŀ¼<tab>R
-  menutrans Set\ Current\ Directory<tab>c	\ Vim\ Ŀ¼<tab>c
-  menutrans Targets							Ŀ
+  menutrans Rename\ File/Directory<tab>R ļ/Ŀ¼<tab>R
+  menutrans Set\ Current\ Directory<tab>c \ Vim\ Ŀ¼<tab>c
+  menutrans Targets Ŀ
 " endif
 " }}}
 
+" Shellmenu menu
+" Shellmenu menuitems {{{1
+" From shellmenu.vim
+menutrans ShellMenu Shell\ ˵
+menutrans Statements 
+menutrans Test 
+menutrans Existence 
+menutrans Existence\ -\ file \ -\ ļ
+menutrans Existence\ -\ file\ (not\ empty) \ -\ ļ(ǿ)
+menutrans Existence\ -\ directory \ -\ Ŀ¼
+menutrans Existence\ -\ executable \ -\ ִ
+menutrans Existence\ -\ readable \ -\ ɶ
+menutrans Existence\ -\ writable \ -\ д
+menutrans String\ is\ empty ַΪ
+menutrans String\ is\ not\ empty ַǿ
+menutrans Strings\ are\ equal ֵַ
+menutrans Strings\ are\ not\ equal ֵַ
+menutrans Value\ is\ greater\ than ֵ
+menutrans Value\ is\ greater\ equal ֵڵ
+menutrans Values\ are\ equal ֵ
+menutrans Values\ are\ not\ equal ֵ
+menutrans Value\ is\ less\ than ֵС
+menutrans Value\ is\ less\ equal ֵСڵ
+menutrans ParmSub 滻
+menutrans Substitute\ word\ if\ parm\ not\ set ûþ滻ô
+menutrans Set\ parm\ to\ word\ if\ not\ set δþΪô
+menutrans Substitute\ word\ if\ parm\ set\ else\ nothing þ滻ôʣʲô
+menutrans If\ parm\ not\ set\ print\ word\ and\ exit ûþʹӡôʲ˳
+menutrans SpShVars Shell\ 
+menutrans Number\ of\ positional\ parameters λòĿ
+menutrans All\ positional\ parameters\ (quoted\ spaces) λò(quoted\ spaces)
+menutrans All\ positional\ parameters\ (unquoted\ spaces) λò(unquoted\ spaces)
+menutrans Flags\ set ñ־
+menutrans Return\ code\ of\ last\ command ǰһĴ
+menutrans Process\ number\ of\ this\ shell shell\ ̺
+menutrans Process\ number\ of\ last\ background\ command ǰһ̨Ľ̺
+menutrans Environ 
+menutrans Mark\ created\ or\ modified\ variables\ for\ export ޸ĵĻߴıΪ
+menutrans Exit\ when\ command\ returns\ non-zero\ status ط״̬ʱ˳
+menutrans Disable\ file\ name\ expansion ļչ
+menutrans Locate\ and\ remember\ commands\ when\ being\ looked\ up ѯʱλס
+menutrans All\ assignment\ statements\ are\ placed\ in\ the\ environment\ for\ a\ command еĸֵĻ
+menutrans Read\ commands\ but\ do\ not\ execute\ them DzҪִ
+menutrans Exit\ after\ reading\ and\ executing\ one\ command ִһ֮˳
+menutrans Treat\ unset\ variables\ as\ an\ error\ when\ substituting 滻ʱδΪ
+menutrans Print\ shell\ input\ lines\ as\ they\ are\ read \ shell\ еʱӡ
+menutrans Print\ commands\ and\ their\ arguments\ as\ they\ are\ executed ִʱӡͲ
+" }}}
+
+" termdebug menu
+" termdebug menuitems {{{1
+" From termdebug.vim
+menutrans Set\ breakpoint öϵ
+menutrans Clear\ breakpoint ϵ
+menutrans Run\ until е
+menutrans Evaluate ֵ
+menutrans WinBar 
+menutrans Step 
+menutrans Next һ
+menutrans Finish 
+menutrans Cont 
+menutrans Stop ֹͣ
+" }}}
+
+" debchangelog menu
+" debchangelog menuitems {{{1
+" From debchangelog.vim
+menutrans &Changelog ־(&C)
+menutrans &New\ Version °汾(&N)
+menutrans &Add\ Entry Ŀ(&A)
+menutrans &Close\ Bug ر\ Bug(&C)
+menutrans Set\ &Distribution ÷а(&D)
+menutrans &unstable ȶ(&U)
+menutrans Set\ &Urgency ý(&U)
+menutrans &low (&L)
+menutrans &medium (&M)
+menutrans &high (&H)
+menutrans U&nfinalise δ(&N)
+menutrans &Finalise (&F)
+" }}}
+
+" ada menu
+" ada menuitems {{{1
+" From ada.vim
+menutrans Tag ǩ
+menutrans List б
+menutrans Jump ת
+menutrans Create\ File ļ
+menutrans Create\ Dir Ŀ¼
+menutrans Highlight 
+menutrans Toggle\ Space\ Errors лո
+menutrans Toggle\ Lines\ Errors лд
+menutrans Toggle\ Rainbow\ Color лʺɫ
+menutrans Toggle\ Standard\ Types л׼
+" }}}
+
+" gnat menu
+" gnat menuitems {{{1
+" From gnat.vim
+menutrans Build 
+menutrans Pretty\ Print ¸ʽ
+menutrans Find 
+menutrans Set\ Projectfile\.\.\. Ŀļ\.\.\.
+" }}}
+
 let &cpo = s:keepcpo
 unlet s:keepcpo
 
--- a/runtime/lang/menu_hu_hu.iso_8859-2.vim
+++ b/runtime/lang/menu_hu_hu.iso_8859-2.vim
@@ -2,26 +2,10 @@
 " Original Translation:	Zoltn rpdffy
 " Maintained By:	Kontra Gergely <kgergely@mcl.hu>
 " Last Change:		2020 Apr 23
-" Original translations
-" I'm working on defining (unaccented) hotkeys for everything.
-" I want to remove y and z hotkeys, because on the hungarian keymap they're at
-" a differrent place.
-" I also want to avoid g and j shortcuts, because you cannot see, wheter
-" they're underlined or not.
-" If the hotkeys are not uniq (pressing the hotkey doesn't executes the menu,
-" just one menupoint is selected), or you find any other undesired behaviour,
-" please report it to me.
-" All kind of feedback is welcome.
 "
-" Igyekeztem mindenhez gyorsbillentyt rendelni, lehetleg nem kezeteset.
-" Tovbbi tennival az y s z gyorsbillentyk kiirtsa, ezenkvl a g, j
-" billentyk irtsa is, mivel ez utbbiak alhzott vltozatt nem knny
-" felismerni.
-" Amennyiben valahol nem egyrtelmk a gyorsbillentyk (a gyorsbillentyt
-" letve nem hajtdik vgre a kiszemelt menpont, hanem csak kivlasztdik,
-" vagy msik menpont vlasztdik ki), vagy egyb hibt tallsz, krlek jelezd
-" nekem a fenti email cmen.
-" Mindennem visszajelzst szvesen fogadok.
+" This file was converted from menu_hu_hu.iso_8859-2.vim.  See there for
+" remarks.
+" Generated from menu_hu_hu.utf-8.vim, DO NOT EDIT
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
--- a/runtime/lang/menu_sk_sk.iso_8859-2.vim
+++ b/runtime/lang/menu_sk_sk.iso_8859-2.vim
@@ -1,7 +1,7 @@
 " Menu Translations:	Slovak
 " Translated By:	Martin Lacko <lacko@host.sk>
 " Last Change:		2020 Apr 23
-" Original translations
+" Generated from menu_slovak_slovak_republic.1250.vim, DO NOT EDIT
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
--- a/runtime/lang/menu_zh_cn.utf-8.vim
+++ b/runtime/lang/menu_zh_cn.utf-8.vim
@@ -1,7 +1,7 @@
 " Menu Translations:    Simplified Chinese
 " Maintainer:           Ada (Haowen) Yu <me@yuhaowen.com>
 " Previous Maintainer:  Shun Bai <baishunde@gmail.com>, Yuheng Xie <elephant@linux.net.cn>
-" Last Change:          2022 July 6
+" Last Change:          2022 July 9
 " Original translations
 "
 " Generated with the scripts from:
@@ -357,6 +357,7 @@ menutrans Vim\ help\ file Vim\ 帮助文件
 menutrans Vim\ script Vim\ 脚本
 menutrans Viminfo\ file Vim\ 信息文件
 menutrans Virata\ config Virata\ 配置文件
+menutrans Whitespace\ (add) 增加加亮空格
 " }}}
 
 " Netrw menu {{{1
@@ -462,25 +463,26 @@ menutrans Virata\ config Virata\ 配置文件
 " Shellmenu menu
 " Shellmenu menuitems {{{1
 " From shellmenu.vim
-menutrans Stmts 语句
+menutrans ShellMenu Shell\ 菜单
+menutrans Statements 语句
 menutrans Test 测试
-menutrans existence 存在
-menutrans existence\ -\ file 存在\ -\ 文件
-menutrans existence\ -\ file\ (not\ empty) 存在\ -\ 文件(非空)
-menutrans existence\ -\ directory 存在\ -\ 目录
-menutrans existence\ -\ executable 存在\ -\ 可执行
-menutrans existence\ -\ readable 存在\ -\ 可读
-menutrans existence\ -\ writable 存在\ -\ 可写
+menutrans Existence 存在
+menutrans Existence\ -\ file 存在\ -\ 文件
+menutrans Existence\ -\ file\ (not\ empty) 存在\ -\ 文件(非空)
+menutrans Existence\ -\ directory 存在\ -\ 目录
+menutrans Existence\ -\ executable 存在\ -\ 可执行
+menutrans Existence\ -\ readable 存在\ -\ 可读
+menutrans Existence\ -\ writable 存在\ -\ 可写
 menutrans String\ is\ empty 字符串为空
 menutrans String\ is\ not\ empty 字符串非空
-menutrans Strings\ is\ equal 字符串值相等
-menutrans Strings\ is\ not\ equal 字符串值不相等
-menutrans Values\ is\ greater\ than 值大于
-menutrans Values\ is\ greater\ equal 值大于等于
-menutrans Values\ is\ equal 值相等
-menutrans Values\ is\ not\ equal 值不相等
-menutrans Values\ is\ less\ than 值小于
-menutrans Values\ is\ less\ equal 值小于等于
+menutrans Strings\ are\ equal 字符串值相等
+menutrans Strings\ are\ not\ equal 字符串值不相等
+menutrans Value\ is\ greater\ than 值大于
+menutrans Value\ is\ greater\ equal 值大于等于
+menutrans Values\ are\ equal 值相等
+menutrans Values\ are\ not\ equal 值不相等
+menutrans Value\ is\ less\ than 值小于
+menutrans Value\ is\ less\ equal 值小于等于
 menutrans ParmSub 参数替换
 menutrans Substitute\ word\ if\ parm\ not\ set 如果参数没设置就替换该词
 menutrans Set\ parm\ to\ word\ if\ not\ set 参数未设置就设为该词
@@ -495,8 +497,11 @@ menutrans Return\ code\ of\ last\ command 返回前一条命令的代码
 menutrans Process\ number\ of\ this\ shell shell\ 自身进程号
 menutrans Process\ number\ of\ last\ background\ command 前一条后台命令的进程号
 menutrans Environ 环境变量
-menutrans exit\ when\ command\ returns\ non-zero\ exit\ code 当命令返回非零代码时退出
-menutrans Disable\ file\ name\ generation 禁用文件名生成
+menutrans Mark\ created\ or\ modified\ variables\ for\ export 标记修改的或者创建的变量为导出
+menutrans Exit\ when\ command\ returns\ non-zero\ status 当命令返回非零状态时退出
+menutrans Disable\ file\ name\ expansion 禁用文件名拓展
+menutrans Locate\ and\ remember\ commands\ when\ being\ looked\ up 当查询命令时定位并记住该命令
+menutrans All\ assignment\ statements\ are\ placed\ in\ the\ environment\ for\ a\ command 所有的赋值参数被放在命令的环境中
 menutrans Read\ commands\ but\ do\ not\ execute\ them 读命令但是不要执行
 menutrans Exit\ after\ reading\ and\ executing\ one\ command 读并执行一个命令之后退出
 menutrans Treat\ unset\ variables\ as\ an\ error\ when\ substituting 替换时把未设置命令视为错误
--- a/runtime/syntax/autohotkey.vim
+++ b/runtime/syntax/autohotkey.vim
@@ -2,7 +2,7 @@
 " Language:         AutoHotkey script file
 " Maintainer:       Michael Wong
 "                   https://github.com/mmikeww/autohotkey.vim
-" Latest Revision:  2017-04-03
+" Latest Revision:  2022-07-25
 " Previous Maintainers:       SungHyun Nam <goweol@gmail.com>
 "                             Nikolai Weibull <now@bitwi.se>
 
@@ -31,7 +31,7 @@ syn region autohotkeyString
       \ matchgroup=autohotkeyStringDelimiter
       \ start=+"+
       \ end=+"+
-      \ contains=autohotkeyEscape
+      \ contains=autohotkeyEscape,autohotkeyMatchClass
 
 syn match autohotkeyVariable
       \ display
@@ -49,9 +49,9 @@ syn keyword autohotkeyBuiltinVariable
       \ A_Sec A_MSec A_Now A_NowUTC A_TickCount
       \ A_IsSuspended A_IsPaused A_IsCritical A_BatchLines A_TitleMatchMode A_TitleMatchModeSpeed
       \ A_DetectHiddenWindows A_DetectHiddenText A_AutoTrim A_StringCaseSense
-      \ A_FileEncoding A_FormatInteger A_FormatFloat A_KeyDelay A_WinDelay A_ControlDelay
-      \ A_SendMode A_SendLevel A_StoreCapsLockMode A_KeyDelay A_KeyDelayDuration
-      \ A_KeyDelayPlay A_KeyDelayPlayDuration A_MouseDelayPlay
+      \ A_FileEncoding A_FormatInteger A_FormatFloat A_WinDelay A_ControlDelay
+      \ A_SendMode A_SendLevel A_StoreCapsLockMode A_KeyDelay A_KeyDuration
+      \ A_KeyDelayPlay A_KeyDurationPlay A_MouseDelayPlay
       \ A_MouseDelay A_DefaultMouseSpeed A_RegView A_IconHidden A_IconTip A_IconFile
       \ A_CoordModeToolTip A_CoordModePixel A_CoordModeMouse A_CoordModeCaret A_CoordModeMenu
       \ A_IconNumber
@@ -73,6 +73,7 @@ syn keyword autohotkeyBuiltinVariable
       \ A_LoopFileShortName A_LoopFileDir A_LoopFileTimeModified A_LoopFileTimeCreated
       \ A_LoopFileTimeAccessed A_LoopFileAttrib A_LoopFileSize A_LoopFileSizeKB A_LoopFileSizeMB
       \ A_LoopRegType A_LoopRegKey A_LoopRegSubKey A_LoopRegTimeModified
+      \ A_TimeIdleKeyboard A_TimeIdleMouse A_ListLines A_ComSpec A_LoopFilePath A_Args
 
 syn match   autohotkeyBuiltinVariable
       \ contained
@@ -118,6 +119,7 @@ syn keyword autohotkeyCommand
       \ WinMinimizeAll WinMinimizeAllUndo WinMove WinRestore WinSet
       \ WinSetTitle WinShow WinWait WinWaitActive WinWaitNotActive WinWaitClose
       \ SetCapsLockState SetNumLockState SetScrollLockState
+      \ Hotstring LoadPicture MenuGetHandle MenuGetName OnError OnClipboardChange
 
 syn keyword autohotkeyFunction
       \ InStr RegExMatch RegExReplace StrLen SubStr Asc Chr Func
@@ -127,7 +129,7 @@ syn keyword autohotkeyFunction
       \ IsFunc Trim LTrim RTrim IsObject Object Array FileOpen
       \ ComObjActive ComObjArray ComObjConnect ComObjCreate ComObjGet
       \ ComObjError ComObjFlags ComObjQuery ComObjType ComObjValue ComObject
-      \ Format Exception
+      \ Format Exception Ord InputHook
 
 syn keyword autohotkeyStatement
       \ Break Continue Exit ExitApp Gosub Goto OnExit Pause Return
@@ -140,7 +142,8 @@ syn keyword autohotkeyConditional
       \ IfExist IfNotExist If IfEqual IfLess IfGreater Else
       \ IfWinExist IfWinNotExist IfWinActive IfWinNotActive
       \ IfNotEqual IfLessOrEqual IfGreaterOrEqual
-      \ while until for in try catch finally
+      \ while until for in try catch finally not
+      \ switch case default
 
 syn match   autohotkeyPreProcStart
       \ nextgroup=
--- a/runtime/syntax/debchangelog.vim
+++ b/runtime/syntax/debchangelog.vim
@@ -3,7 +3,7 @@
 " Maintainer:  Debian Vim Maintainers
 " Former Maintainers: Gerfried Fuchs <alfie@ist.org>
 "                     Wichert Akkerman <wakkerma@debian.org>
-" Last Change: 2022 May 01
+" Last Change: 2022 Jul 25
 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim
 
 " Standard syntax initialization
@@ -20,22 +20,22 @@ let s:binNMU='binary-only=yes'
 let s:cpo = &cpo
 set cpo-=C
 let s:supported = [
-      \ 'oldstable', 'stable', 'testing', 'unstable', 'experimental',
-      \ 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
-      \ 'trixie', 'sid', 'rc-buggy',
+      \ 'oldstable', 'stable', 'testing', 'unstable', 'experimental', 'sid', 'rc-buggy',
+      \ 'buster', 'bullseye', 'bookworm', 'trixie',
       \
-      \ 'trusty', 'xenial', 'bionic', 'focal', 'impish', 'jammy', 'kinetic',
+      \ 'trusty', 'xenial', 'bionic', 'focal', 'jammy', 'kinetic',
       \ 'devel'
       \ ]
 let s:unsupported = [
       \ 'frozen', 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
       \ 'woody', 'sarge', 'etch', 'lenny', 'squeeze', 'wheezy',
+      \ 'jessie', 'stretch',
       \
       \ 'warty', 'hoary', 'breezy', 'dapper', 'edgy', 'feisty',
       \ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid',
       \ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy',
       \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic',
-      \ 'disco', 'eoan', 'hirsute', 'groovy'
+      \ 'disco', 'eoan', 'hirsute', 'impish', 'groovy'
       \ ]
 let &cpo=s:cpo
 
--- a/runtime/syntax/debsources.vim
+++ b/runtime/syntax/debsources.vim
@@ -2,7 +2,7 @@
 " Language:     Debian sources.list
 " Maintainer:   Debian Vim Maintainers
 " Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
-" Last Change: 2022 May 01
+" Last Change: 2022 Jul 25
 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim
 
 " Standard syntax initialization
@@ -22,22 +22,22 @@ syn match debsourcesComment        /#.*/
 let s:cpo = &cpo
 set cpo-=C
 let s:supported = [
-      \ 'oldstable', 'stable', 'testing', 'unstable', 'experimental',
-      \ 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
-      \ 'trixie', 'sid', 'rc-buggy',
+      \ 'oldstable', 'stable', 'testing', 'unstable', 'experimental', 'sid', 'rc-buggy',
+      \ 'buster', 'bullseye', 'bookworm', 'trixie',
       \
-      \ 'trusty', 'xenial', 'bionic', 'focal', 'impish', 'jammy', 'kinetic',
+      \ 'trusty', 'xenial', 'bionic', 'focal', 'jammy', 'kinetic',
       \ 'devel'
       \ ]
 let s:unsupported = [
       \ 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
       \ 'woody', 'sarge', 'etch', 'lenny', 'squeeze', 'wheezy',
+      \ 'jessie', 'stretch',
       \
       \ 'warty', 'hoary', 'breezy', 'dapper', 'edgy', 'feisty',
       \ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid',
       \ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy',
       \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic',
-      \ 'disco', 'eoan', 'hirsute', 'groovy'
+      \ 'disco', 'eoan', 'hirsute', 'impish', 'groovy'
       \ ]
 let &cpo=s:cpo
 
--- a/runtime/syntax/i3config.vim
+++ b/runtime/syntax/i3config.vim
@@ -17,6 +17,9 @@ endif
 
 scriptencoding utf-8
 
+" Error
+syn match i3ConfigError /.*/
+
 " Todo
 syn keyword i3ConfigTodo TODO FIXME XXX contained
 
@@ -54,8 +57,8 @@ syn match i3ConfigInclude /^\s*include\s
 " Gaps
 syn keyword i3ConfigGapStyleKeyword inner outer horizontal vertical top right bottom left current all set plus minus toggle up down contained
 syn match i3ConfigGapStyle /^\s*\(gaps\)\s\+\(inner\|outer\|horizontal\|vertical\|left\|top\|right\|bottom\)\(\s\+\(current\|all\)\)\?\(\s\+\(set\|plus\|minus\|toggle\)\)\?\(\s\+\(-\?\d\+\|\$.*\)\)$/ contains=i3ConfigGapStyleKeyword,i3ConfigNumber,i3ConfigVariable
-syn keyword i3ConfigSmartGapKeyword on inverse_outer contained
-syn match i3ConfigSmartGap /^\s*smart_gaps\s\+\(on\|inverse_outer\)\s\?$/ contains=i3ConfigSmartGapKeyword
+syn keyword i3ConfigSmartGapKeyword on inverse_outer off contained
+syn match i3ConfigSmartGap /^\s*smart_gaps\s\+\(on\|inverse_outer\|off\)\s\?$/ contains=i3ConfigSmartGapKeyword
 syn keyword i3ConfigSmartBorderKeyword on no_gaps contained
 syn match i3ConfigSmartBorder /^\s*smart_borders\s\+\(on\|no_gaps\)\s\?$/ contains=i3ConfigSmartBorderKeyword
 
@@ -74,7 +77,7 @@ syn match i3ConfigBind /^\s*\(bindsym\|b
 syn keyword i3ConfigSizeSpecial x contained
 syn match i3ConfigNegativeSize /-/ contained
 syn match i3ConfigSize /-\?\d\+\s\?x\s\?-\?\d\+/ contained contains=i3ConfigSizeSpecial,i3ConfigNumber,i3ConfigNegativeSize
-syn match i3ConfigFloating /^\s*floating_modifier\s\+\$\w\+\d\?/ contains=i3ConfigVariable
+syn match i3ConfigFloatingModifier /^\s*floating_modifier\s\+\$\w\+\d\?/ contains=i3ConfigVariable
 syn match i3ConfigFloating /^\s*floating_\(maximum\|minimum\)_size\s\+-\?\d\+\s\?x\s\?-\?\d\+/ contains=i3ConfigSize
 
 " Orientation
@@ -183,6 +186,7 @@ syn region i3ConfigBlock start=+^\s*[^#]
 syn region i3ConfigLineCont start=/^.*\\$/ end=/^.*$/ contains=i3ConfigBlockKeyword,i3ConfigString,i3ConfigBind,i3ConfigComment,i3ConfigFont,i3ConfigFocusWrappingType,i3ConfigColor,i3ConfigVariable transparent keepend extend
 
 " Define the highlighting.
+hi def link i3ConfigError                           Error
 hi def link i3ConfigTodo                            Todo
 hi def link i3ConfigComment                         Comment
 hi def link i3ConfigFontContent                     Type
@@ -213,6 +217,7 @@ hi def link i3ConfigTimeUnit            
 hi def link i3ConfigModifier                        Constant
 hi def link i3ConfigString                          Constant
 hi def link i3ConfigNegativeSize                    Constant
+hi def link i3ConfigInclude                         Constant
 hi def link i3ConfigFontSeparator                   Special
 hi def link i3ConfigVariableModifier                Special
 hi def link i3ConfigSizeSpecial                     Special
@@ -233,6 +238,7 @@ hi def link i3ConfigLayout              
 hi def link i3ConfigBorderStyle                     Identifier
 hi def link i3ConfigEdge                            Identifier
 hi def link i3ConfigFloating                        Identifier
+hi def link i3ConfigFloatingModifier                Identifier
 hi def link i3ConfigCommandKeyword                  Identifier
 hi def link i3ConfigNoFocusKeyword                  Identifier
 hi def link i3ConfigInitializeKeyword               Identifier
--- a/runtime/syntax/python.vim
+++ b/runtime/syntax/python.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	Python
 " Maintainer:	Zvezdan Petkovic <zpetkovic@acm.org>
-" Last Change:	2021 Dec 10
+" Last Change:	2022 Jun 28
 " Credits:	Neil Schemenauer <nas@python.ca>
 "		Dmitry Vasiliev
 "
@@ -84,13 +84,19 @@ syn keyword pythonStatement	as assert br
 syn keyword pythonStatement	lambda nonlocal pass return with yield
 syn keyword pythonStatement	class def nextgroup=pythonFunction skipwhite
 syn keyword pythonConditional	elif else if
-syn keyword pythonConditional	case match
 syn keyword pythonRepeat	for while
 syn keyword pythonOperator	and in is not or
 syn keyword pythonException	except finally raise try
 syn keyword pythonInclude	from import
 syn keyword pythonAsync		async await
 
+" Soft keywords
+" These keywords do not mean anything unless used in the right context
+" See https://docs.python.org/3/reference/lexical_analysis.html#soft-keywords 
+" for more on this.
+syn match   pythonConditional   "^\s*\zscase\%(\s\+.*:.*$\)\@="
+syn match   pythonConditional   "^\s*\zsmatch\%(\s\+.*:\s*\%(#.*\)\=$\)\@="
+
 " Decorators
 " A dot must be allowed because of @MyClass.myfunc decorators.
 syn match   pythonDecorator	"@" display contained
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/swayconfig.vim
@@ -0,0 +1,92 @@
+" Vim syntax file
+" Language: sway window manager config
+" Original Author: James Eapen <james.eapen@vai.org>
+" Maintainer: James Eapen <james.eapen@vai.org>
+" Version: 0.11.0
+" Last Change: 2022 Jun 07
+
+" References:
+" http://i3wm.org/docs/userguide.html#configuring
+" https://github.com/swaywm/sway/blob/b69d637f7a34e239e48a4267ae94a5e7087b5834/sway/sway.5.scd
+" http://vimdoc.sourceforge.net/htmldoc/syntax.html
+"
+"
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+  finish
+endif
+
+runtime! syntax/i3config.vim
+
+scriptencoding utf-8
+
+" Error
+"syn match swayConfigError /.*/
+
+" Group mode/bar
+syn keyword swayConfigBlockKeyword set input contained
+syn region swayConfigBlock start=+.*s\?{$+ end=+^}$+ contains=i3ConfigBlockKeyword,swayConfigBlockKeyword,i3ConfigString,i3ConfigBind,i3ConfigComment,i3ConfigFont,i3ConfigFocusWrappingType,i3ConfigColor,i3ConfigVariable transparent keepend extend
+
+" binding
+syn keyword swayConfigBindKeyword bindswitch bindgesture contained
+syn match swayConfigBind /^\s*\(bindswitch\)\s\+.*$/ contains=i3ConfigVariable,i3ConfigBindKeyword,swayConfigBindKeyword,i3ConfigVariableAndModifier,i3ConfigNumber,i3ConfigUnit,i3ConfigUnitOr,i3ConfigBindArgument,i3ConfigModifier,i3ConfigAction,i3ConfigString,i3ConfigGapStyleKeyword,i3ConfigBorderStyleKeyword
+
+" bindgestures
+syn keyword swayConfigBindGestureCommand swipe pinch hold contained
+syn keyword swayConfigBindGestureDirection up down left right next prev contained
+syn keyword swayConfigBindGesturePinchDirection inward outward clockwise counterclockwise contained
+syn match swayConfigBindGestureHold /^\s*\(bindgesture\)\s\+hold\(:[1-5]\)\?\s\+.*$/ contains=swayConfigBindKeyword,swayConfigBindGestureCommand,swayConfigBindGestureDirection,i3ConfigWorkspaceKeyword,i3ConfigAction
+syn match swayConfigBindGestureSwipe /^\s*\(bindgesture\)\s\+swipe\(:[1-5]\)\?:\(up\|down\|left\|right\)\s\+.*$/ contains=swayConfigBindKeyword,swayConfigBindGestureCommand,swayConfigBindGestureDirection,i3ConfigWorkspaceKeyword,i3ConfigAction
+syn match swayConfigBindGesturePinch /^\s*\(bindgesture\)\s\+\(pinch\):.*$/ contains=swayConfigBindKeyword,swayConfigBindGestureCommand,swayConfigBindGestureDirection,swayConfigBindGesturePinchDirection,i3ConfigWorkspaceKeyword,i3ConfigAction
+
+" floating
+syn keyword swayConfigFloatingKeyword floating contained
+syn match swayConfigFloating /^\s*floating\s\+\(enable\|disable\|toggle\)\s*$/ contains=swayConfigFloatingKeyword
+
+syn clear i3ConfigFloatingModifier
+syn keyword swayConfigFloatingModifier floating_modifier contained
+syn match swayConfigFloatingMouseAction /^\s\?.*floating_modifier\s.*\(normal\|inverted\)$/ contains=swayConfigFloatingModifier,i3ConfigVariable
+
+" Gaps
+syn clear i3ConfigSmartBorderKeyword
+syn clear i3ConfigSmartBorder
+syn keyword swayConfigSmartBorderKeyword on no_gaps off contained
+syn match swayConfigSmartBorder /^\s*smart_borders\s\+\(on\|no_gaps\|off\)\s\?$/ contains=swayConfigSmartBorderKeyword
+
+" Changing colors
+syn keyword swayConfigClientColorKeyword focused_tab_title contained
+syn match swayConfigClientColor /^\s*client.\w\+\s\+.*$/ contains=i3ConfigClientColorKeyword,i3ConfigColor,i3ConfigVariable,i3ConfigClientColorKeyword,swayConfigClientColorKeyword
+
+" set display outputs
+syn match swayConfigOutput /^\s*output\s\+.*$/ contains=i3ConfigOutput
+
+" set display focus 
+syn keyword swayConfigFocusKeyword focus contained
+syn keyword swayConfigFocusType output contained
+syn match swayConfigFocus /^\s*focus\soutput\s.*$/ contains=swayConfigFocusKeyword,swayConfigFocusType
+
+" xwayland 
+syn keyword swayConfigXwaylandKeyword xwayland contained
+syn match swayConfigXwaylandModifier /^\s*xwayland\s\+\(enable\|disable\|force\)\s\?$/ contains=swayConfigXwaylandKeyword
+
+"hi def link swayConfigError                         Error
+hi def link i3ConfigFloating                        Error
+hi def link swayConfigFloating                      Type
+hi def link swayConfigFloatingMouseAction           Type
+hi def link swayConfigFocusKeyword                  Type
+hi def link swayConfigSmartBorderKeyword            Type
+hi def link swayConfigBindGestureCommand            Identifier
+hi def link swayConfigBindGestureDirection          Constant
+hi def link swayConfigBindGesturePinchDirection     Constant
+hi def link swayConfigBindKeyword                   Identifier
+hi def link swayConfigBlockKeyword                  Identifier
+hi def link swayConfigClientColorKeyword            Identifier
+hi def link swayConfigFloatingKeyword               Identifier
+hi def link swayConfigFloatingModifier              Identifier
+hi def link swayConfigFocusType                     Identifier
+hi def link swayConfigSmartBorder                   Identifier
+hi def link swayConfigXwaylandKeyword               Identifier
+hi def link swayConfigXwaylandModifier              Type
+hi def link swayConfigBindGesture                   PreProc
+
+let b:current_syntax = "swayconfig"
--- a/runtime/tutor/tutor.zh_cn.utf-8
+++ b/runtime/tutor/tutor.zh_cn.utf-8
@@ -422,7 +422,7 @@
 
   2. 接着把光标放在单词 lubw 的字母 u 的位置那里。
 
-  3. 然后输入 cw 以及正确的单词(在本例中是输入 ine )。
+  3. 然后输入 ce 以及正确的单词(在本例中是输入 ine )。
 
   4. 最后按 <ESC> 键,然后光标定位到下一个错误第一个准备更改的字母处。
 
--- a/src/po/Makefile
+++ b/src/po/Makefile
@@ -220,7 +220,9 @@ vim.desktop: vim.desktop.in $(POFILES)
 	if command -v desktop-file-validate; then desktop-file-validate tmp_vim.desktop; fi
 	mv tmp_vim.desktop vim.desktop
 
-gvim.desktop: gvim.desktop.in $(POFILES)
+# The dependency on vim.desktop is only to avoid the two targets are build at
+# the same time, which causes a race for the LINGUAS file.
+gvim.desktop: gvim.desktop.in $(POFILES) vim.desktop
 	echo $(LANGUAGES) | tr " " "\n" |sed -e '/\./d' | sort > LINGUAS
 	$(MSGFMT) --desktop -d . --template gvim.desktop.in -o tmp_gvim.desktop
 	rm -f LINGUAS
--- a/src/po/ru.cp1251.po
+++ b/src/po/ru.cp1251.po
@@ -12,8 +12,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: vim_ru\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-06-29 13:47+0300\n"
-"PO-Revision-Date: 2022-07-06 17:23+0300\n"
+"POT-Creation-Date: 2022-07-24 18:31+0300\n"
+"PO-Revision-Date: 2022-07-24 18:35+0300\n"
 "Last-Translator: Matvey Tarasov <matthewtarasov@yandex.ru>\n"
 "Language-Team: \n"
 "Language: Russian\n"
@@ -47,7 +47,7 @@ msgstr "----"
 
 #, c-format
 msgid "auto-removing autocommand: %s <buffer=%d>"
-msgstr "- : %s <=%d>"
+msgstr " : %s <=%d>"
 
 msgid "W19: Deleting augroup that is still in use"
 msgstr "W19:     "
@@ -65,7 +65,7 @@ msgstr "  : %s"
 
 #, c-format
 msgid "%s Autocommands for \"%s\""
-msgstr "%s   \"%s\""
+msgstr "%s    \"%s\""
 
 #, c-format
 msgid "Executing %s"
@@ -104,9 +104,9 @@ msgstr[2] " %d "
 #, c-format
 msgid "%d buffer wiped out"
 msgid_plural "%d buffers wiped out"
-msgstr[0] " %d "
-msgstr[1] " %d "
-msgstr[2] " %d "
+msgstr[0] " %d "
+msgstr[1] " %d "
+msgstr[2] " %d "
 
 msgid "W14: Warning: List of file names overflow"
 msgstr "W14: :    "
@@ -163,7 +163,7 @@ msgid "Top"
 msgstr ""
 
 msgid "[Prompt]"
-msgstr "[]"
+msgstr "[]"
 
 msgid "[Popup]"
 msgstr "[]"
@@ -194,7 +194,7 @@ msgid "[NOT converted]"
 msgstr "[ ]"
 
 msgid "[converted]"
-msgstr "[]"
+msgstr "[]"
 
 msgid "[Device]"
 msgstr "[]"
@@ -231,14 +231,14 @@ msgid ": Send failed.\n"
 msgstr ":   .\n"
 
 msgid ": Send failed. Trying to execute locally\n"
-msgstr ":   .   \n"
+msgstr ":   .   \n"
 
 #, c-format
 msgid "%d of %d edited"
 msgstr " %d  %d"
 
 msgid "No display: Send expression failed.\n"
-msgstr " :    .\n"
+msgstr " ,    .\n"
 
 msgid ": Send expression failed.\n"
 msgstr ":    .\n"
@@ -303,10 +303,10 @@ msgstr " : %d"
 
 #, c-format
 msgid "Breakpoint in \"%s%s\" line %ld"
-msgstr "   \"%s%s\" . %ld"
+msgstr "   \"%s%s\" . %ld"
 
 msgid "No breakpoints defined"
-msgstr "   "
+msgstr "   "
 
 #, c-format
 msgid "%3d  %s %s  line %ld"
@@ -327,37 +327,37 @@ msgid "Patch file"
 msgstr "-"
 
 msgid "Custom"
-msgstr ""
+msgstr " "
 
 msgid "Latin supplement"
-msgstr " "
+msgstr "  "
 
 msgid "Greek and Coptic"
-msgstr "  "
+msgstr "   "
 
 msgid "Cyrillic"
 msgstr ""
 
 msgid "Hebrew"
-msgstr ""
+msgstr " "
 
 msgid "Arabic"
-msgstr ""
+msgstr " "
 
 msgid "Latin extended"
-msgstr " "
+msgstr " "
 
 msgid "Greek extended"
-msgstr " "
+msgstr "  "
 
 msgid "Punctuation"
-msgstr ""
+msgstr " "
 
 msgid "Super- and subscripts"
-msgstr "-  "
+msgstr "   "
 
 msgid "Currency"
-msgstr ""
+msgstr " "
 
 msgid "Other"
 msgstr ""
@@ -372,7 +372,7 @@ msgid "Mathematical operators"
 msgstr " "
 
 msgid "Technical"
-msgstr ""
+msgstr "  "
 
 msgid "Box drawing"
 msgstr ""
@@ -384,13 +384,13 @@ msgid "Geometric shapes"
 msgstr " "
 
 msgid "Symbols"
-msgstr ""
+msgstr " "
 
 msgid "Dingbats"
-msgstr ""
+msgstr " "
 
 msgid "CJK symbols and punctuation"
-msgstr ",      "
+msgstr ",      "
 
 msgid "Hiragana"
 msgstr ""
@@ -399,7 +399,7 @@ msgid "Katakana"
 msgstr ""
 
 msgid "Bopomofo"
-msgstr " ()"
+msgstr "  ()"
 
 msgid "Not enough memory to set references, garbage collection aborted!"
 msgstr "        !"
@@ -647,7 +647,7 @@ msgstr "  : %s"
 
 #, c-format
 msgid "%s made pending"
-msgstr "%s  "
+msgstr "%s "
 
 #, c-format
 msgid "%s resumed"
@@ -703,7 +703,7 @@ msgid "[fifo]"
 msgstr "[fifo]"
 
 msgid "[socket]"
-msgstr "[]"
+msgstr "[]"
 
 msgid "[character special]"
 msgstr "[ ]"
@@ -726,7 +726,7 @@ msgid "[READ ERRORS]"
 msgstr "[ ]"
 
 msgid "Can't find temp file for conversion"
-msgstr "     "
+msgstr "     "
 
 msgid "Conversion with 'charconvert' failed"
 msgstr "   'charconvert'  "
@@ -794,8 +794,8 @@ msgstr ". \":help W11\"   ."
 #, c-format
 msgid "W16: Warning: Mode of file \"%s\" has changed since editing started"
 msgstr ""
-"W16: :     \"%s\"     "
-""
+"W16: :     \"%s\"    "
+" "
 
 msgid "See \":help W16\" for more info."
 msgstr ". \":help W16\"   ."
@@ -1091,7 +1091,7 @@ msgid "Show this message"
 msgstr "  "
 
 msgid "Kill a connection"
-msgstr " "
+msgstr " "
 
 msgid "Reinit all connections"
 msgstr "   "
@@ -1264,7 +1264,7 @@ msgid "unknown vimOption"
 msgstr " vimOption"
 
 msgid "keyboard interrupt"
-msgstr " "
+msgstr "  "
 
 msgid "cannot create buffer/window command: object is being deleted"
 msgstr "     :    "
@@ -1449,11 +1449,10 @@ msgid "netbeans is not supported with th
 msgstr "NetBeans      \n"
 
 msgid "'-nb' cannot be used: not enabled at compile time\n"
-msgstr "  '-nb':    \n"
+msgstr "  '-nb':   \n"
 
 msgid "This Vim was not compiled with the diff feature."
-msgstr ""
-" Vim       ."
+msgstr "  Vim      ."
 
 msgid "Attempt to open script file again: \""
 msgstr "    : \""
@@ -1552,7 +1551,7 @@ msgid "-g\t\t\tRun using GUI (like \"gvi
 msgstr "-g\t\t\t    ( \"gvim\")"
 
 msgid "-f  or  --nofork\tForeground: Don't fork when starting GUI"
-msgstr "-f   --nofork\t  :   fork   GUI"
+msgstr "-f   --nofork\t  :   fork   GUI"
 
 msgid "-v\t\t\tVi mode (like \"vi\")"
 msgstr "-v\t\t\t Vi ( \"vi\")"
@@ -1624,10 +1623,10 @@ msgid "-dev <device>\t\tUse <device> for
 msgstr "-dev <>\t\t  I/O  <>"
 
 msgid "-A\t\t\tStart in Arabic mode"
-msgstr "-A\t\t\t   "
+msgstr "-A\t\t\t    "
 
 msgid "-H\t\t\tStart in Hebrew mode"
-msgstr "-H\t\t\t   \"\""
+msgstr "-H\t\t\t   "
 
 msgid "-T <terminal>\tSet terminal type to <terminal>"
 msgstr "-T <>\t   <>"
@@ -1653,13 +1652,13 @@ msgstr "--noplugin\t\t   "
 # \n\t\t..    80 
 msgid "-p[N]\t\tOpen N tab pages (default: one for each file)"
 msgstr ""
-"-p[N]\t\t N  ( :  \n"
+"-p[N]\t\t N  (   \n"
 "\t\t\t\t  )"
 
 # \n\t\t..    80 
 msgid "-o[N]\t\tOpen N windows (default: one for each file)"
 msgstr ""
-"-o[N]\t\t N  ( :  \n"
+"-o[N]\t\t N  (   \n"
 "\t\t\t\t  )"
 
 msgid "-O[N]\t\tLike -o but split vertically"
@@ -1699,10 +1698,10 @@ msgid "-x\t\t\tEdit encrypted files"
 msgstr "-x\t\t\t  "
 
 msgid "-display <display>\tConnect Vim to this particular X-server"
-msgstr "-display <>\t Vim   X-"
+msgstr "-display <>\t Vim   X-"
 
 msgid "-X\t\t\tDo not connect to X server"
-msgstr "-X\t\t\t     X"
+msgstr "-X\t\t\t    X-"
 
 msgid "--remote <files>\tEdit <files> in a Vim server if possible"
 msgstr "--remote <>\t   <>   Vim"
@@ -1732,14 +1731,15 @@ msgid "--remote-expr <expr>\tEvaluate <e
 msgstr "--remote-expr <>\t <>   Vim  "
 
 msgid "--serverlist\t\tList available Vim server names and exit"
-msgstr "--serverlist\t\t    Vim   "
+msgstr "--serverlist\t\t   Vim   "
 
 msgid "--servername <name>\tSend to/become the Vim server <name>"
 msgstr ""
-"--servername <>\t /  Vim   <>"
+"--servername <>\t      Vim\n"
+"\t\t\t\t  <>"
 
 msgid "--startuptime <file>\tWrite startup timing messages to <file>"
-msgstr "--startuptime <>\t      <>"
+msgstr "--startuptime <>\t     <>"
 
 msgid "--log <file>\tStart logging to <file> early"
 msgstr ""
@@ -1984,14 +1984,14 @@ msgid "and run diff with the original fi
 msgstr "    diff)"
 
 msgid "Recovery completed. Buffer contents equals file contents."
-msgstr " .     ."
+msgstr " .     ."
 
 msgid ""
 "\n"
 "You may want to delete the .swp file now."
 msgstr ""
 "\n"
-",      .swp."
+" .swp   ."
 
 msgid ""
 "\n"
@@ -2304,7 +2304,7 @@ msgstr "-!"
 
 #, c-format
 msgid "Calling shell to execute: \"%s\""
-msgstr "   : \"%s\""
+msgstr "    \"%s\""
 
 msgid "Warning: terminal cannot highlight"
 msgstr ":     "
@@ -2381,7 +2381,8 @@ msgstr "(+%lld   BOM)"
 
 msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'"
 msgstr ""
-"W17:    UTF-8,  ':set encoding=utf-8'"
+"W17:      UTF-8,  "
+"':set encoding=utf-8'"
 
 msgid ""
 "\n"
@@ -2532,7 +2533,7 @@ msgid ""
 "Cannot create pipes\n"
 msgstr ""
 "\n"
-"  \n"
+"  \n"
 
 msgid ""
 "\n"
@@ -2695,10 +2696,10 @@ msgid " (vreplace)"
 msgstr " ( )"
 
 msgid " Hebrew"
-msgstr " "
+msgstr " "
 
 msgid " Arabic"
-msgstr " "
+msgstr " "
 
 msgid " (paste)"
 msgstr " ()"
@@ -3113,7 +3114,7 @@ msgid "Estimated runtime memory use: %d 
 msgstr "    : %d "
 
 msgid "Warning: both compounding and NOBREAK specified"
-msgstr ":  \"\"  NOBREAK  "
+msgstr ":        NOBREAK"
 
 #, c-format
 msgid "Writing spell file %s..."
@@ -3511,7 +3512,7 @@ msgid ""
 "Compiled "
 msgstr ""
 "\n"
-": "
+""
 
 msgid "by "
 msgstr " "
@@ -3751,7 +3752,7 @@ msgid ""
 "# Bar lines, copied verbatim:\n"
 msgstr ""
 "\n"
-"#   '|',  :\n"
+"#   '|'  :\n"
 
 #, c-format
 msgid "%sviminfo: %s in line: "
@@ -3944,10 +3945,10 @@ msgstr ""
 ""
 
 msgid "E26: Hebrew cannot be used: Not enabled at compile time\n"
-msgstr "E26:    \n"
+msgstr "E26:     \n"
 
 msgid "E27: Farsi support has been removed\n"
-msgstr "E27:    \n"
+msgstr "E27:     \n"
 
 #, c-format
 msgid "E28: No such highlight group name: %s"
@@ -4052,7 +4053,7 @@ msgstr "E59:    %s@"
 
 #, c-format
 msgid "E60: Too many complex %s{...}s"
-msgstr "E60:     %s{...}"
+msgstr "E60:     %s{...}"
 
 #, c-format
 msgid "E61: Nested %s*"
@@ -4076,7 +4077,7 @@ msgid "E66: \\z( not allowed here"
 msgstr "E66: \\z(     "
 
 msgid "E67: \\z1 - \\z9 not allowed here"
-msgstr "E67: \\z1  ..     "
+msgstr "E67: \\z1  ..   "
 
 msgid "E68: Invalid character after \\z"
 msgstr "E68:    \\z"
@@ -4133,7 +4134,7 @@ msgid "E84: No modified buffer found"
 msgstr "E84:    "
 
 msgid "E85: There is no listed buffer"
-msgstr "E85:    "
+msgstr "E85:   "
 
 #, c-format
 msgid "E86: Buffer %ld does not exist"
@@ -4154,7 +4155,7 @@ msgid "E90: Cannot unload last buffer"
 msgstr "E90:      "
 
 msgid "E91: 'shell' option is empty"
-msgstr "E91:   'shell'   "
+msgstr "E91:   'shell'  "
 
 #, c-format
 msgid "E92: Buffer %d not found"
@@ -4338,7 +4339,7 @@ msgstr "E142:   :    'write'"
 
 #, c-format
 msgid "E143: Autocommands unexpectedly deleted new buffer %s"
-msgstr "E143:      %s"
+msgstr "E143:      %s"
 
 msgid "E144: Non-numeric argument to :z"
 msgstr "E144:   :z   "
@@ -4405,7 +4406,7 @@ msgstr "E160:    %s"
 
 #, c-format
 msgid "E161: Breakpoint not found: %s"
-msgstr "E161:    : %s"
+msgstr "E161:    : %s"
 
 #, c-format
 msgid "E162: No write since last change for buffer \"%s\""
@@ -4421,7 +4422,7 @@ msgid "E165: Cannot go beyond last file"
 msgstr "E165:   "
 
 msgid "E166: Can't open linked file for writing"
-msgstr "E166:       "
+msgstr "E166:       "
 
 msgid "E167: :scriptencoding used outside of a sourced file"
 msgstr "E167:  :scriptencoding    "
@@ -4547,7 +4548,7 @@ msgid "E201: *ReadPre autocommands must 
 msgstr "E201:  *ReadPre     "
 
 msgid "E202: Conversion made file unreadable!"
-msgstr "E202:      !"
+msgstr "E202:      !"
 
 msgid "E203: Autocommands deleted or unloaded buffer to be written"
 msgstr ""
@@ -4586,7 +4587,7 @@ msgstr "E212:     "
 
 msgid "E213: Cannot convert (add ! to write without conversion)"
 msgstr ""
-"E213:   ( !    )"
+"E213:   ( !    )"
 
 msgid "E214: Can't find temp file for writing"
 msgstr "E214:      "
@@ -4718,7 +4719,7 @@ msgid "E248: Failed to send command to t
 msgstr "E248:       "
 
 msgid "E249: Window layout changed unexpectedly"
-msgstr "E249:    "
+msgstr "E249:    "
 
 #, c-format
 msgid "E250: Fonts for the following charsets are missing in fontset %s:"
@@ -4726,8 +4727,7 @@ msgstr "E250:    %s     :"
 
 msgid "E251: VIM instance registry property is badly formed.  Deleted!"
 msgstr ""
-"E251:      VIM  . "
-"!"
+"E251:     VIM  . !"
 
 #, c-format
 msgid "E252: Fontset name: %s - Font '%s' is not fixed-width"
@@ -4763,7 +4763,7 @@ msgstr "E261:   cscope %s  "
 
 #, c-format
 msgid "E262: Error reading cscope connection %d"
-msgstr "E262:    cscope %d"
+msgstr "E262:    cscope,  %d"
 
 msgid ""
 "E263: Sorry, this command is disabled, the Python library could not be "
@@ -4826,8 +4826,8 @@ msgid ""
 "E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim."
 "org"
 msgstr ""
-"E280:   TCL:   ?!     "
-" vim-dev@vim.org"
+"E280:   TCL: ,   . "
+",      vim-dev@vim.org"
 
 #, c-format
 msgid "E282: Cannot read from \"%s\""
@@ -5005,7 +5005,7 @@ msgid "E327: Part of menu-item path is n
 msgstr "E327:        "
 
 msgid "E328: Menu only exists in another mode"
-msgstr "E328:      "
+msgstr "E328:      "
 
 #, c-format
 msgid "E329: No menu \"%s\""
@@ -5131,7 +5131,7 @@ msgstr "E363:    ,  'maxmempattern'"
 
 #, c-format
 msgid "E364: Library call failed for \"%s()\""
-msgstr "E364:    \"%s()\"  "
+msgstr "E364:   \"%s()\"   "
 
 msgid "E365: Failed to print PostScript file"
 msgstr "E365:      PostScript"
@@ -5195,7 +5195,7 @@ msgstr "E381:    "
 
 msgid "E382: Cannot write, 'buftype' option is set"
 msgstr ""
-"E382:  :   'buftype'    "
+"E382:  :  'buftype'  "
 
 #, c-format
 msgid "E383: Invalid search string: %s"
@@ -5310,7 +5310,7 @@ msgid "E413: Too many arguments: \":high
 msgstr "E413:   : \":highlight link %s\""
 
 msgid "E414: Group has settings, highlight link ignored"
-msgstr "E414:      highlight link "
+msgstr "E414:    , highlight link "
 
 #, c-format
 msgid "E415: Unexpected equal sign: %s"
@@ -5336,7 +5336,7 @@ msgstr "E420:   "
 
 #, c-format
 msgid "E421: Color name or number not recognized: %s"
-msgstr "E421:      : %s"
+msgstr "E421:     : %s"
 
 #, c-format
 msgid "E422: Terminal code too long: %s"
@@ -5440,7 +5440,7 @@ msgid "E451: Expected }: %s"
 msgstr "E451:   }: %s"
 
 msgid "E452: Double ; in list of variables"
-msgstr "E452:  ;   "
+msgstr "E452:       "
 
 msgid "E453: UL color unknown"
 msgstr "E453:   "
@@ -5465,7 +5465,7 @@ msgstr "E457:     PostScript \"%s\""
 
 msgid "E458: Cannot allocate colormap entry, some colors may be incorrect"
 msgstr ""
-"E458:           "
+"E458:           "
 " "
 
 msgid "E459: Cannot go back to previous directory"
@@ -5507,7 +5507,7 @@ msgstr ""
 
 #, c-format
 msgid "E469: Invalid cscopequickfix flag %c for %c"
-msgstr "E469:   cscopequickfix %c  %c"
+msgstr "E469:   cscopequickfix %c  %c"
 
 msgid "E470: Command aborted"
 msgstr "E470:   "
@@ -5627,7 +5627,7 @@ msgid "E499: Empty file name for '%' or 
 msgstr "E499:     '%'  '#'   c \":p:h\""
 
 msgid "E500: Evaluates to an empty string"
-msgstr "E500:     "
+msgstr "E500:    "
 
 msgid "E501: At end-of-file"
 msgstr "E501:   "
@@ -5675,7 +5675,7 @@ msgid "E511: NetBeans already connected"
 msgstr "E511:    NetBeans"
 
 msgid "E512: Close failed"
-msgstr "E512:    "
+msgstr "E512:    "
 
 msgid "E513: Write error, conversion failed (make 'fenc' empty to override)"
 msgstr ""
@@ -5687,7 +5687,7 @@ msgid ""
 "E513: Write error, conversion failed in line %ld (make 'fenc' empty to "
 "override)"
 msgstr ""
-"E513:  ,      %ld ( "
+"E513:  ,      %ld ( "
 "'fenc',  )"
 
 msgid "E514: Write error (file system full?)"
@@ -5700,7 +5700,7 @@ msgid "E516: No buffers were deleted"
 msgstr "E516:      "
 
 msgid "E517: No buffers were wiped out"
-msgstr "E517:      "
+msgstr "E517:      "
 
 msgid "E518: Unknown option"
 msgstr "E518:  "
@@ -5719,7 +5719,7 @@ msgid "E521: Number required: &%s = '%s'
 msgstr "E521:   : &%s = '%s'"
 
 msgid "E522: Not found in termcap"
-msgstr "E522:    termcap"
+msgstr "E522:    termcap"
 
 msgid "E523: Not allowed here"
 msgstr "E523:   "
@@ -5778,7 +5778,7 @@ msgid "E539: Illegal character <%s>"
 msgstr "E539:   <%s>"
 
 msgid "E540: Unclosed expression sequence"
-msgstr "E540:   "
+msgstr "E540:  "
 
 msgid "E542: Unbalanced groups"
 msgstr "E542:  "
@@ -5857,7 +5857,7 @@ msgid "E565: Not allowed to change text 
 msgstr "E565:         "
 
 msgid "E566: Could not create cscope pipes"
-msgstr "E566:     cscope"
+msgstr "E566:       cscope"
 
 msgid "E567: No cscope connections"
 msgstr "E567:   cscope  "
@@ -6034,7 +6034,7 @@ msgid "E621: \"%s\" resource file has wr
 msgstr "E621:   \"%s\"  "
 
 msgid "E622: Could not fork for cscope"
-msgstr "E622:   fork()  cscope"
+msgstr "E622:    fork()  cscope"
 
 msgid "E623: Could not spawn cscope process"
 msgstr "E623:     cscope"
@@ -6089,7 +6089,7 @@ msgid "E663: At end of changelist"
 msgstr "E663:    "
 
 msgid "E664: Changelist is empty"
-msgstr "E664:   "
+msgstr "E664:   "
 
 msgid "E665: Cannot start GUI, no valid font found"
 msgstr ""
@@ -6105,7 +6105,8 @@ msgstr "E667:     fsync()"
 #, c-format
 msgid "E668: Wrong access mode for NetBeans connection info file: \"%s\""
 msgstr ""
-"E668:         NetBeans: \"%s\""
+"E668:     NetBeans    "
+": \"%s\""
 
 msgid "E669: Unprintable character in group name"
 msgstr "E669:     "
@@ -6169,10 +6170,10 @@ msgid "E686: Argument of %s must be a Li
 msgstr "E686:  %s   "
 
 msgid "E687: Less targets than List items"
-msgstr "E687:  ,   "
+msgstr "E687:  ,    "
 
 msgid "E688: More targets than List items"
-msgstr "E688:  ,   "
+msgstr "E688:  ,    "
 
 msgid "E689: Can only index a List, Dictionary or Blob"
 msgstr "E689:    ,   "
@@ -6234,7 +6235,7 @@ msgid "E707: Function name conflicts wit
 msgstr "E707:     : %s"
 
 msgid "E708: [:] must come last"
-msgstr "E708: [:]   "
+msgstr "E708: [:]    "
 
 msgid "E709: [:] requires a List or Blob value"
 msgstr "E709: [:]     "
@@ -6330,7 +6331,7 @@ msgstr "E736:    "
 
 #, c-format
 msgid "E737: Key already exists: %s"
-msgstr "E737:   : %s"
+msgstr "E737:  %s  "
 
 #, c-format
 msgid "E738: Can't list variables for %s"
@@ -6380,13 +6381,13 @@ msgid "E748: No previously used register
 msgstr "E748:    "
 
 msgid "E749: Empty buffer"
-msgstr "E749:  "
+msgstr "E749:  "
 
 msgid "E750: First use \":profile start {fname}\""
 msgstr "E750:     \":profile start {-}\""
 
 msgid "E751: Output file name must not have region name"
-msgstr "E751:        "
+msgstr "E751:        "
 
 msgid "E752: No previous spell replacement"
 msgstr "E752:    "
@@ -6464,7 +6465,7 @@ msgid "E773: Symlink loop for \"%s\""
 msgstr "E773:     \"%s\""
 
 msgid "E774: 'operatorfunc' is empty"
-msgstr "E774:   'operatorfunc'   "
+msgstr "E774:   'operatorfunc'  "
 
 msgid "E775: Eval feature not available"
 msgstr "E775:  +eval "
@@ -6551,14 +6552,14 @@ msgstr "E797:      SpellFileMissing"
 
 #, c-format
 msgid "E798: ID is reserved for \":match\": %d"
-msgstr "E798:    \":match\": %d"
+msgstr "E798:    \":match\": %d"
 
 #, c-format
 msgid "E799: Invalid ID: %d (must be greater than or equal to 1)"
 msgstr "E799:  : %d (     1)"
 
 msgid "E800: Arabic cannot be used: Not enabled at compile time\n"
-msgstr "E800:    \n"
+msgstr "E800:      \n"
 
 #, c-format
 msgid "E801: ID already taken: %d"
@@ -6687,10 +6688,10 @@ msgid "E835: Conflicts with value of 'fi
 msgstr "E835:    'fillchars'"
 
 msgid "E836: This Vim cannot execute :python after using :py3"
-msgstr "E836:  Vim    :python   :py3"
+msgstr "E836:    Vim   :python  :py3"
 
 msgid "E837: This Vim cannot execute :py3 after using :python"
-msgstr "E837:  Vim    :py3   :python"
+msgstr "E837:    Vim   :py3  :python"
 
 msgid "E838: NetBeans is not supported with this GUI"
 msgstr "E838: NetBeans      "
@@ -6700,7 +6701,7 @@ msgstr "E840:    "
 
 msgid "E841: Reserved name, cannot be used for user defined command"
 msgstr ""
-"E841:        "
+"E841:         "
 
 msgid "E842: No line number to use for \"<slnum>\""
 msgstr "E842:      \"<slnum>\""
@@ -6743,7 +6744,7 @@ msgid "E854: Path too long for completio
 msgstr "E854:     "
 
 msgid "E855: Autocommands caused command to abort"
-msgstr "E855:    "
+msgstr "E855:    - "
 
 msgid ""
 "E856: \"assert_fails()\" second argument must be a string or a list with one "
@@ -6937,10 +6938,10 @@ msgid "E903: Received command with non-s
 msgstr "E903:     "
 
 msgid "E904: Last argument for expr/call must be a number"
-msgstr "E904:         "
+msgstr "E904:    expr  call   "
 
 msgid "E904: Third argument for call must be a list"
-msgstr "E904:       "
+msgstr "E904:    call   "
 
 #, c-format
 msgid "E905: Received unknown command: %s"
@@ -6968,8 +6969,8 @@ msgstr "E911:       "
 
 msgid "E912: Cannot use ch_evalexpr()/ch_sendexpr() with a raw or nl channel"
 msgstr ""
-"E912:   ch_evalexpr()  ch_sendexpr()   nl "
-" raw"
+"E912:   ch_evalexpr()  ch_sendexpr()   NL "
+" RAW"
 
 msgid "E913: Using a Channel as a Number"
 msgstr "E913:    "
@@ -6978,7 +6979,9 @@ msgid "E914: Using a Channel as a Float"
 msgstr "E914:       "
 
 msgid "E915: in_io buffer requires in_buf or in_name to be set"
-msgstr "E915:  in_io   in_buf  in_name"
+msgstr ""
+"E915:  in_io  \"buffer\",     "
+"in_buf  in_name"
 
 msgid "E916: Not a valid job"
 msgstr "E916:  "
@@ -6996,7 +6999,8 @@ msgid "E919: Directory not found in '%s'
 msgstr "E919:     '%s': \"%s\""
 
 msgid "E920: _io file requires _name to be set"
-msgstr "E920:  _io   _name"
+msgstr ""
+"E920:  _io  \"file\",     _name"
 
 msgid "E921: Invalid callback argument"
 msgstr "E921:    "
@@ -7079,7 +7083,7 @@ msgid "E944: Reverse range in character 
 msgstr "E944:     "
 
 msgid "E945: Range too large in character class"
-msgstr "E945:      "
+msgstr "E945:      "
 
 msgid "E946: Cannot make a terminal with running job modifiable"
 msgstr "E946:       "
@@ -7178,7 +7182,7 @@ msgstr "E972:      "
 
 msgid "E973: Blob literal should have an even number of hex characters"
 msgstr ""
-"E973: -      "
+"E973: -      "
 
 msgid "E974: Using a Blob as a Number"
 msgstr "E974:    "
@@ -7226,7 +7230,7 @@ msgstr "E987:     tagfunc"
 
 msgid "E988: GUI cannot be used. Cannot execute gvim.exe."
 msgstr ""
-"E988:      .   "
+"E988:      .    "
 "gvim.exe"
 
 msgid "E989: Non-default argument follows default argument"
@@ -7555,8 +7559,8 @@ msgstr "E1075:    : %s"
 
 msgid "E1076: This Vim is not compiled with float support"
 msgstr ""
-"E1076:  Vim        "
-""
+"E1076:   Vim      "
+"  "
 
 #, c-format
 msgid "E1077: Missing argument type for %s"
@@ -7568,7 +7572,7 @@ msgstr ""
 "\"++nested\"?"
 
 msgid "E1079: Cannot declare a variable on the command line"
-msgstr "E1079:      "
+msgstr "E1079:      "
 
 msgid "E1080: Invalid assignment"
 msgstr "E1080:   "
@@ -7982,7 +7986,7 @@ msgid "E1192: Empty function name"
 msgstr "E1192:   "
 
 msgid "E1193: cryptmethod xchacha20 not built into this Vim"
-msgstr "E1193:   xchacha20    Vim"
+msgstr "E1193:   xchacha20     Vim"
 
 msgid "E1194: Cannot encrypt header, not enough space"
 msgstr "E1194:    -  "
@@ -8350,6 +8354,10 @@ msgstr "E1289:      SIGALRM: %s"
 msgid "E1290: substitute nesting too deep"
 msgstr "E1290:      "
 
+#, c-format
+msgid "E1291: Invalid argument: %ld"
+msgstr "E1291:  : %ld"
+
 msgid "--No lines in buffer--"
 msgstr "--     --"
 
@@ -8552,7 +8560,7 @@ msgid "failed to rename buffer"
 msgstr "  "
 
 msgid "mark name must be a single character"
-msgstr "     "
+msgstr "      "
 
 #, c-format
 msgid "expected vim.Buffer object, but got %s"
@@ -8608,7 +8616,7 @@ msgid ""
 msgstr ""
 "    : sys.path_hooks   \n"
 "  :\n"
-"  vim.path_hook   sys.path_hooks\n"
+"  vim.path_hook  sys.path_hooks\n"
 "  vim.VIM_SPECIAL_PATH  sys.path\n"
 
 msgid ""
@@ -8725,18 +8733,18 @@ msgid "use Insert mode as the default mo
 msgstr "     "
 
 msgid "paste mode, insert typed text literally"
-msgstr "      "
+msgstr " :    "
 
 msgid "key sequence to toggle paste mode"
 msgstr "     "
 
 msgid "list of directories used for runtime files and plugins"
 msgstr ""
-"       \n"
+"       \n"
 ""
 
 msgid "list of directories used for plugin packages"
-msgstr "    "
+msgstr "    "
 
 msgid "name of the main help file"
 msgstr "   "
@@ -8757,7 +8765,7 @@ msgstr ""
 "  "
 
 msgid "nroff macro names that separate paragraphs"
-msgstr " nroff,  "
+msgstr " nroff,  "
 
 msgid "nroff macro names that separate sections"
 msgstr " nroff,  "
@@ -8793,7 +8801,7 @@ msgid "ignore case when using a search p
 msgstr "      "
 
 msgid "override 'ignorecase' when pattern has upper case characters"
-msgstr " 'ignorecase',      "
+msgstr " 'ignorecase',      "
 
 msgid "what method to use for changing case of letters"
 msgstr "   "
@@ -9234,7 +9242,7 @@ msgid "list of font names to be used for
 msgstr "     "
 
 msgid "use smooth, antialiased fonts"
-msgstr "  "
+msgstr "   "
 
 msgid "list of flags that specify how the GUI works"
 msgstr "    . "
@@ -9248,7 +9256,7 @@ msgid "size of toolbar icons"
 msgstr "   "
 
 msgid "room (in pixels) left above/below the window"
-msgstr " ( )     "
+msgstr "       "
 
 msgid "list of ASCII characters that can be combined into complex shapes"
 msgstr ""
@@ -9256,7 +9264,7 @@ msgstr ""
 " "
 
 msgid "options for text rendering"
-msgstr "   "
+msgstr "  "
 
 msgid "use a pseudo-tty for I/O to external commands"
 msgstr "   -  "
@@ -9317,13 +9325,13 @@ msgstr "  PostScript,   :hardcopy"
 
 msgid "the CJK character set to be used for CJK output from :hardcopy"
 msgstr ""
-"  ,     \n"
+"  ,     \n"
 "  :hardcopy"
 
 msgid "list of font names to be used for CJK output from :hardcopy"
 msgstr ""
-"     ,  \n"
-"   :hardcopy"
+"     ,  \n"
+"   :hardcopy"
 
 msgid "messages and info"
 msgstr "  "
@@ -9375,7 +9383,8 @@ msgid "do not ring the bell for these re
 msgstr "  -  "
 
 msgid "list of preferred languages for finding help"
-msgstr "     "
+msgstr ""
+"       "
 
 msgid "selecting text"
 msgstr " "
@@ -9436,7 +9445,7 @@ msgid "margin from the right in which to
 msgstr " ,      "
 
 msgid "specifies what <BS>, CTRL-W, etc. can do in Insert mode"
-msgstr " <BS>, CTRL-W  ..     "
+msgstr " <BS>, CTRL-W  ..     "
 
 msgid "definition of what comment lines look like"
 msgstr "   "
@@ -9749,14 +9758,13 @@ msgstr ""
 
 msgid "keep oldest version of a file; specifies file name extension"
 msgstr ""
-"    ;   \n"
-""
+"   ;    "
 
 msgid "forcibly sync the file to disk after writing it"
 msgstr "      "
 
 msgid "use 8.3 file names"
-msgstr "   8.3"
+msgstr "     8.3"
 
 msgid "encryption method for file writing: zip, blowfish or blowfish2"
 msgstr "    : zip, blowfish  blowfish2"
@@ -9856,7 +9864,7 @@ msgid "used to redirect command output t
 msgstr "      "
 
 msgid "use a temp file for shell commands instead of using a pipe"
-msgstr "     ,   "
+msgstr "     ,   "
 
 msgid "program used for \"=\" command"
 msgstr ",   \"=\""
@@ -9888,7 +9896,7 @@ msgid "string used to put the output of 
 msgstr "    \":make\"   "
 
 msgid "name of the errorfile for the 'makeprg' command"
-msgstr "     'makeprg'"
+msgstr "    'makeprg'"
 
 msgid "program used for the \":grep\" command"
 msgstr ",   \":grep\""
@@ -9980,9 +9988,7 @@ msgid "apply 'langmap' to mapped charact
 msgstr " 'langmap'   "
 
 msgid "when set never use IM; overrules following IM options"
-msgstr ""
-" ,      ;\n"
-"  "
+msgstr "  ,   "
 
 msgid "in Insert mode: 1: use :lmap; 2: use IM; 0: neither"
 msgstr ""
--- a/src/po/ru.po
+++ b/src/po/ru.po
@@ -12,8 +12,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: vim_ru\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-06-29 13:47+0300\n"
-"PO-Revision-Date: 2022-07-06 17:23+0300\n"
+"POT-Creation-Date: 2022-07-24 18:31+0300\n"
+"PO-Revision-Date: 2022-07-24 18:35+0300\n"
 "Last-Translator: Matvey Tarasov <matthewtarasov@yandex.ru>\n"
 "Language-Team: \n"
 "Language: Russian\n"
@@ -47,7 +47,7 @@ msgstr "--Удалено--"
 
 #, c-format
 msgid "auto-removing autocommand: %s <buffer=%d>"
-msgstr "авто-удаление автокоманды: %s <буфер=%d>"
+msgstr "автоудаление автокоманды: %s <буфер=%d>"
 
 msgid "W19: Deleting augroup that is still in use"
 msgstr "W19: Удаление ещё используемой группы автокоманд"
@@ -65,7 +65,7 @@ msgstr "Нет подходящих автокоманд: %s"
 
 #, c-format
 msgid "%s Autocommands for \"%s\""
-msgstr "%s Автокоманды для \"%s\""
+msgstr "%s автокоманда для шаблона \"%s\""
 
 #, c-format
 msgid "Executing %s"
@@ -104,9 +104,9 @@ msgstr[2] "Удалено %d буферов"
 #, c-format
 msgid "%d buffer wiped out"
 msgid_plural "%d buffers wiped out"
-msgstr[0] "Очищен %d буфер"
-msgstr[1] "Очищено %d буфера"
-msgstr[2] "Очищено %d буферов"
+msgstr[0] "Стёрт %d буфер"
+msgstr[1] "Стёрто %d буфера"
+msgstr[2] "Стёрто %d буферов"
 
 msgid "W14: Warning: List of file names overflow"
 msgstr "W14: Предупреждение: переполнение списка имён файлов"
@@ -163,7 +163,7 @@ msgid "Top"
 msgstr "Наверху"
 
 msgid "[Prompt]"
-msgstr "[Уведомление]"
+msgstr "[Запрос]"
 
 msgid "[Popup]"
 msgstr "[Всплывающий]"
@@ -194,7 +194,7 @@ msgid "[NOT converted]"
 msgstr "[БЕЗ преобразований]"
 
 msgid "[converted]"
-msgstr "[перекодировано]"
+msgstr "[преобразовано]"
 
 msgid "[Device]"
 msgstr "[Устройство]"
@@ -231,14 +231,14 @@ msgid ": Send failed.\n"
 msgstr ": Отправка не удалась.\n"
 
 msgid ": Send failed. Trying to execute locally\n"
-msgstr ": Отправка не удалась. Попытка местного выполнения\n"
+msgstr ": Отправка не удалась. Попытка выполнить локально\n"
 
 #, c-format
 msgid "%d of %d edited"
 msgstr "отредактировано %d из %d"
 
 msgid "No display: Send expression failed.\n"
-msgstr "Нет дисплея: отправка выражения не удалась.\n"
+msgstr "Нет дисплея, отправка выражения не удалась.\n"
 
 msgid ": Send expression failed.\n"
 msgstr ": Отправка выражения не удалась.\n"
@@ -303,10 +303,10 @@ msgstr "максимальный фрейм: %d"
 
 #, c-format
 msgid "Breakpoint in \"%s%s\" line %ld"
-msgstr "Точка остановки в \"%s%s\" стр. %ld"
+msgstr "Точка останова в \"%s%s\" стр. %ld"
 
 msgid "No breakpoints defined"
-msgstr "Точки остановки не определены"
+msgstr "Точки останова не определены"
 
 #, c-format
 msgid "%3d  %s %s  line %ld"
@@ -327,37 +327,37 @@ msgid "Patch file"
 msgstr "Файл-заплатка"
 
 msgid "Custom"
-msgstr "Специальные"
+msgstr "Частная область"
 
 msgid "Latin supplement"
-msgstr "Латынь дополненная"
+msgstr "Дополнение к латинице"
 
 msgid "Greek and Coptic"
-msgstr "Греческий и Коптский"
+msgstr "Греческое и коптское письмо"
 
 msgid "Cyrillic"
 msgstr "Кириллица"
 
 msgid "Hebrew"
-msgstr "Иврит"
+msgstr "Еврейское письмо"
 
 msgid "Arabic"
-msgstr "Арабский"
+msgstr "Арабское письмо"
 
 msgid "Latin extended"
-msgstr "Латынь расширенная"
+msgstr "Расширенная латиница"
 
 msgid "Greek extended"
-msgstr "Греческий расширенный"
+msgstr "Расширенное греческое письмо"
 
 msgid "Punctuation"
-msgstr "Пунктуация"
+msgstr "Основная пунктуация"
 
 msgid "Super- and subscripts"
-msgstr "Над- и подстрочные"
+msgstr "Надстрочные и подстрочные знаки"
 
 msgid "Currency"
-msgstr "Валюта"
+msgstr "Знаки валют"
 
 msgid "Other"
 msgstr "Прочее"
@@ -372,7 +372,7 @@ msgid "Mathematical operators"
 msgstr "Математические операторы"
 
 msgid "Technical"
-msgstr "Техника"
+msgstr "Разные технические знаки"
 
 msgid "Box drawing"
 msgstr "Псевдографика"
@@ -384,13 +384,13 @@ msgid "Geometric shapes"
 msgstr "Геометрические фигуры"
 
 msgid "Symbols"
-msgstr "Символы"
+msgstr "Разные символы"
 
 msgid "Dingbats"
-msgstr "Орнамент"
+msgstr "Декоративные символы"
 
 msgid "CJK symbols and punctuation"
-msgstr "Китайские, Японские и Корейские символы и пунктуация"
+msgstr "Китайские, корейские и японские символы и пунктуация"
 
 msgid "Hiragana"
 msgstr "Хирагана"
@@ -399,7 +399,7 @@ msgid "Katakana"
 msgstr "Катакана"
 
 msgid "Bopomofo"
-msgstr "Чжуинь (бопомофо)"
+msgstr "Чжуинь фухао (бопомофо)"
 
 msgid "Not enough memory to set references, garbage collection aborted!"
 msgstr "Недостаточно памяти для установки ссылок — сборка мусора прекращена!"
@@ -647,7 +647,7 @@ msgstr "Обработка исключительной ситуации: %s"
 
 #, c-format
 msgid "%s made pending"
-msgstr "%s выполняет ожидание"
+msgstr "%s приостановлено"
 
 #, c-format
 msgid "%s resumed"
@@ -703,7 +703,7 @@ msgid "[fifo]"
 msgstr "[fifo]"
 
 msgid "[socket]"
-msgstr "[гнездо]"
+msgstr "[сокет]"
 
 msgid "[character special]"
 msgstr "[специальный символьный]"
@@ -726,7 +726,7 @@ msgid "[READ ERRORS]"
 msgstr "[ОШИБКИ ЧТЕНИЯ]"
 
 msgid "Can't find temp file for conversion"
-msgstr "Временный файл для перекодирования не найден"
+msgstr "Временный файл для преобразования не найден"
 
 msgid "Conversion with 'charconvert' failed"
 msgstr "Преобразование с помощью 'charconvert' не выполнено"
@@ -794,8 +794,8 @@ msgstr "См. \":help W11\" для дополнительной информации."
 #, c-format
 msgid "W16: Warning: Mode of file \"%s\" has changed since editing started"
 msgstr ""
-"W16: Предупреждение: режим доступа к файлу \"%s\" был изменён после начала "
-"редактирования"
+"W16: Предупреждение: режим доступа к файлу \"%s\" был изменён после "
+"начала редактирования"
 
 msgid "See \":help W16\" for more info."
 msgstr "См. \":help W16\" для дополнительной информации."
@@ -1091,7 +1091,7 @@ msgid "Show this message"
 msgstr "Показать это сообщение"
 
 msgid "Kill a connection"
-msgstr "Убить соединение"
+msgstr "Разорвать соединение"
 
 msgid "Reinit all connections"
 msgstr "Заново инициализировать все соединения"
@@ -1264,7 +1264,7 @@ msgid "unknown vimOption"
 msgstr "неизвестная vimOption"
 
 msgid "keyboard interrupt"
-msgstr "клавиатурное прерывание"
+msgstr "прервано с клавиатуры"
 
 msgid "cannot create buffer/window command: object is being deleted"
 msgstr "невозможно создать команду буфера или окна: объект в процессе удаления"
@@ -1449,11 +1449,10 @@ msgid "netbeans is not supported with th
 msgstr "NetBeans не поддерживается с этим графическим интерфейсом\n"
 
 msgid "'-nb' cannot be used: not enabled at compile time\n"
-msgstr "Невозможно использовать '-nb': не включено при компиляции\n"
+msgstr "Невозможно использовать '-nb': выключено при компиляции\n"
 
 msgid "This Vim was not compiled with the diff feature."
-msgstr ""
-"Данный Vim был скомпилирован с выключенной особенностью просмотра отличий."
+msgstr "Эта версия Vim была собрана без особенности просмотра отличий."
 
 msgid "Attempt to open script file again: \""
 msgstr "Попытка повторного открытия файла сценария: \""
@@ -1552,7 +1551,7 @@ msgid "-g\t\t\tRun using GUI (like \"gvi
 msgstr "-g\t\t\tЗапустить с графическим интерфейсом (как \"gvim\")"
 
 msgid "-f  or  --nofork\tForeground: Don't fork when starting GUI"
-msgstr "-f  или --nofork\tВ активной задаче: Не выполнять fork при запуске GUI"
+msgstr "-f  или --nofork\tВ активной задаче: не выполнять fork при запуске GUI"
 
 msgid "-v\t\t\tVi mode (like \"vi\")"
 msgstr "-v\t\t\tРежим Vi (как \"vi\")"
@@ -1624,10 +1623,10 @@ msgid "-dev <device>\t\tUse <device> for
 msgstr "-dev <устройство>\t\tИспользовать для I/O указанное <устройство>"
 
 msgid "-A\t\t\tStart in Arabic mode"
-msgstr "-A\t\t\tЗапуск в Арабском режиме"
+msgstr "-A\t\t\tЗапуск с поддержкой арабского языка"
 
 msgid "-H\t\t\tStart in Hebrew mode"
-msgstr "-H\t\t\tЗапуск в режиме \"Иврит\""
+msgstr "-H\t\t\tЗапуск с поддержкой иврита"
 
 msgid "-T <terminal>\tSet terminal type to <terminal>"
 msgstr "-T <терминал>\tНазначить указанный тип <терминала>"
@@ -1653,13 +1652,13 @@ msgstr "--noplugin\t\tНе загружать сценарии модулей"
 # \n\t\t.. для умещения в 80 столбцов
 msgid "-p[N]\t\tOpen N tab pages (default: one for each file)"
 msgstr ""
-"-p[N]\t\tОткрыть N вкладок (по умолчанию: по одной\n"
+"-p[N]\t\tОткрыть N вкладок (по умолчанию по одной\n"
 "\t\t\t\tна каждый файл)"
 
 # \n\t\t.. для умещения в 80 столбцов
 msgid "-o[N]\t\tOpen N windows (default: one for each file)"
 msgstr ""
-"-o[N]\t\tОткрыть N окон (по умолчанию: по одному\n"
+"-o[N]\t\tОткрыть N окон (по умолчанию по одному\n"
 "\t\t\t\tна каждый файл)"
 
 msgid "-O[N]\t\tLike -o but split vertically"
@@ -1699,10 +1698,10 @@ msgid "-x\t\t\tEdit encrypted files"
 msgstr "-x\t\t\tРедактирование зашифрованных файлов"
 
 msgid "-display <display>\tConnect Vim to this particular X-server"
-msgstr "-display <экран>\tПодсоединить Vim к указанному X-серверу"
+msgstr "-display <дисплей>\tСоединить Vim с указанным X-сервером"
 
 msgid "-X\t\t\tDo not connect to X server"
-msgstr "-X\t\t\tНе выполнять соединение с сервером X"
+msgstr "-X\t\t\tНе выполнять соединение с X-сервером"
 
 msgid "--remote <files>\tEdit <files> in a Vim server if possible"
 msgstr "--remote <файлы>\tПо возможности редактировать <файлы> на сервере Vim"
@@ -1732,14 +1731,15 @@ msgid "--remote-expr <expr>\tEvaluate <e
 msgstr "--remote-expr <выраж>\tВычислить <выраж> на сервере Vim и напечатать"
 
 msgid "--serverlist\t\tList available Vim server names and exit"
-msgstr "--serverlist\t\tПоказать список имён серверов Vim и завершить работу"
+msgstr "--serverlist\t\tПоказать список серверов Vim и завершить работу"
 
 msgid "--servername <name>\tSend to/become the Vim server <name>"
 msgstr ""
-"--servername <имя>\tОтправить на/стать сервером Vim с указанным <именем>"
+"--servername <имя>\tОтправить на сервер или стать сервером Vim\n"
+"\t\t\t\tс указанным <именем>"
 
 msgid "--startuptime <file>\tWrite startup timing messages to <file>"
-msgstr "--startuptime <файл>\tЗаписать временную метку о запуске в <файл>"
+msgstr "--startuptime <файл>\tЗаписать временные метки запуска в <файл>"
 
 msgid "--log <file>\tStart logging to <file> early"
 msgstr ""
@@ -1984,14 +1984,14 @@ msgid "and run diff with the original fi
 msgstr "файлом при помощи программы diff)"
 
 msgid "Recovery completed. Buffer contents equals file contents."
-msgstr "Восстановление завершено. Содержимое буферов и файлов эквивалентно."
+msgstr "Восстановление завершено. Содержимое буфера и файла эквивалентно."
 
 msgid ""
 "\n"
 "You may want to delete the .swp file now."
 msgstr ""
 "\n"
-"Вероятно, сейчас вы захотите удалить файл .swp."
+"Файл .swp теперь можно удалить."
 
 msgid ""
 "\n"
@@ -2304,7 +2304,7 @@ msgstr "Би-би!"
 
 #, c-format
 msgid "Calling shell to execute: \"%s\""
-msgstr "Вызов оболочки для исполнения: \"%s\""
+msgstr "Вызов оболочки для выполнения \"%s\""
 
 msgid "Warning: terminal cannot highlight"
 msgstr "Предупреждение: терминал не может выполнять подсветку"
@@ -2381,7 +2381,8 @@ msgstr "(+%lld с учётом BOM)"
 
 msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'"
 msgstr ""
-"W17: Арабский требует использования UTF-8, введите ':set encoding=utf-8'"
+"W17: Арабский язык поддерживается только с UTF-8, введите "
+"':set encoding=utf-8'"
 
 msgid ""
 "\n"
@@ -2532,7 +2533,7 @@ msgid ""
 "Cannot create pipes\n"
 msgstr ""
 "\n"
-"Невозможно создать трубы\n"
+"Невозможно создать конвейер\n"
 
 msgid ""
 "\n"
@@ -2695,10 +2696,10 @@ msgid " (vreplace)"
 msgstr " (виртуальная замена)"
 
 msgid " Hebrew"
-msgstr " Иврит"
+msgstr " иврит"
 
 msgid " Arabic"
-msgstr " Арабский"
+msgstr " арабский"
 
 msgid " (paste)"
 msgstr " (вклейка)"
@@ -3113,7 +3114,7 @@ msgid "Estimated runtime memory use: %d 
 msgstr "Оценка использования памяти при выполнении: %d байтов"
 
 msgid "Warning: both compounding and NOBREAK specified"
-msgstr "Предупреждение: флаги \"составной\" и NOBREAK указаны вместе"
+msgstr "Предупреждение: правило для составных слов указано вместе с NOBREAK"
 
 #, c-format
 msgid "Writing spell file %s..."
@@ -3511,7 +3512,7 @@ msgid ""
 "Compiled "
 msgstr ""
 "\n"
-"Скомпилировано: "
+"Скомпилировано"
 
 msgid "by "
 msgstr " "
@@ -3751,7 +3752,7 @@ msgid ""
 "# Bar lines, copied verbatim:\n"
 msgstr ""
 "\n"
-"# Строк с '|', точно скопировано:\n"
+"# Строки с '|' скопированы дословно:\n"
 
 #, c-format
 msgid "%sviminfo: %s in line: "
@@ -3944,10 +3945,10 @@ msgstr ""
 "компиляции"
 
 msgid "E26: Hebrew cannot be used: Not enabled at compile time\n"
-msgstr "E26: Иврит выключен при компиляции\n"
+msgstr "E26: Поддержка иврита выключена при компиляции\n"
 
 msgid "E27: Farsi support has been removed\n"
-msgstr "E27: Поддержка Персидского была удалена\n"
+msgstr "E27: Поддержка персидского языка была удалена\n"
 
 #, c-format
 msgid "E28: No such highlight group name: %s"
@@ -4052,7 +4053,7 @@ msgstr "E59: Недопустимый символ после %s@"
 
 #, c-format
 msgid "E60: Too many complex %s{...}s"
-msgstr "E60: Слишком много сложных конструкций %s{...}"
+msgstr "E60: Чересчур много сложных квантификаторов %s{...}"
 
 #, c-format
 msgid "E61: Nested %s*"
@@ -4076,7 +4077,7 @@ msgid "E66: \\z( not allowed here"
 msgstr "E66: \\z( не может быть использовано здесь"
 
 msgid "E67: \\z1 - \\z9 not allowed here"
-msgstr "E67: \\z1 и т.п. не могут быть использованы здесь"
+msgstr "E67: \\z1 и т.п. здесь не разрешены"
 
 msgid "E68: Invalid character after \\z"
 msgstr "E68: Недопустимый символ после \\z"
@@ -4133,7 +4134,7 @@ msgid "E84: No modified buffer found"
 msgstr "E84: Изменённых буферов не обнаружено"
 
 msgid "E85: There is no listed buffer"
-msgstr "E85: Буферы в списке отсутствуют"
+msgstr "E85: Список буферов пуст"
 
 #, c-format
 msgid "E86: Buffer %ld does not exist"
@@ -4154,7 +4155,7 @@ msgid "E90: Cannot unload last buffer"
 msgstr "E90: Невозможно выгрузить из памяти последний буфер"
 
 msgid "E91: 'shell' option is empty"
-msgstr "E91: Значением опции 'shell' является пустая строка"
+msgstr "E91: Значение опции 'shell' не задано"
 
 #, c-format
 msgid "E92: Buffer %d not found"
@@ -4338,7 +4339,7 @@ msgstr "E142: Файл не сохранён: запись отключена опцией 'write'"
 
 #, c-format
 msgid "E143: Autocommands unexpectedly deleted new buffer %s"
-msgstr "E143: Автокоманды неожиданно убили новый буфер %s"
+msgstr "E143: Автокоманды неожиданно удалили новый буфер %s"
 
 msgid "E144: Non-numeric argument to :z"
 msgstr "E144: Параметр команды :z должен быть числом"
@@ -4405,7 +4406,7 @@ msgstr "E160: Неизвестная команда значка %s"
 
 #, c-format
 msgid "E161: Breakpoint not found: %s"
-msgstr "E161: Точка остановки не найдена: %s"
+msgstr "E161: Точка останова не найдена: %s"
 
 #, c-format
 msgid "E162: No write since last change for buffer \"%s\""
@@ -4421,7 +4422,7 @@ msgid "E165: Cannot go beyond last file"
 msgstr "E165: Это последний файл"
 
 msgid "E166: Can't open linked file for writing"
-msgstr "E166: Невозможно открыть файл по ссылке для записи"
+msgstr "E166: Файл по ссылке не доступен для записи"
 
 msgid "E167: :scriptencoding used outside of a sourced file"
 msgstr "E167: Команда :scriptencoding используется вне файла сценария"
@@ -4547,7 +4548,7 @@ msgid "E201: *ReadPre autocommands must 
 msgstr "E201: Автокоманды *ReadPre не должны изменять активный буфер"
 
 msgid "E202: Conversion made file unreadable!"
-msgstr "E202: В результате преобразования файл стал нечитаемым!"
+msgstr "E202: В результате преобразования файл стал нечитаем!"
 
 msgid "E203: Autocommands deleted or unloaded buffer to be written"
 msgstr ""
@@ -4586,7 +4587,7 @@ msgstr "E212: Невозможно открыть файл для записи"
 
 msgid "E213: Cannot convert (add ! to write without conversion)"
 msgstr ""
-"E213: Перекодировка невозможна (добавьте ! для записи без перекодировки)"
+"E213: Преобразование невозможно (добавьте ! для записи без преобразования)"
 
 msgid "E214: Can't find temp file for writing"
 msgstr "E214: Временный файл для записи не найден"
@@ -4718,7 +4719,7 @@ msgid "E248: Failed to send command to t
 msgstr "E248: Не удалась отправка команды в другую программу"
 
 msgid "E249: Window layout changed unexpectedly"
-msgstr "E249: Неожиданно изменилось расположение окна"
+msgstr "E249: Неожиданно изменилось расположение окон"
 
 #, c-format
 msgid "E250: Fonts for the following charsets are missing in fontset %s:"
@@ -4726,8 +4727,7 @@ msgstr "E250: В наборе шрифтов %s отсутствуют шрифты для следующих кодировок:"
 
 msgid "E251: VIM instance registry property is badly formed.  Deleted!"
 msgstr ""
-"E251: Неправильно сформировано значение данного процесса VIM в реестре. "
-"Удалено!"
+"E251: Неправильно сформировано значение процесса VIM в реестре. Удалено!"
 
 #, c-format
 msgid "E252: Fontset name: %s - Font '%s' is not fixed-width"
@@ -4763,7 +4763,7 @@ msgstr "E261: Соединение с cscope %s не обнаружено"
 
 #, c-format
 msgid "E262: Error reading cscope connection %d"
-msgstr "E262: Ошибка чтения соединения cscope %d"
+msgstr "E262: Ошибка чтения из cscope, соединение %d"
 
 msgid ""
 "E263: Sorry, this command is disabled, the Python library could not be "
@@ -4826,8 +4826,8 @@ msgid ""
 "E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim."
 "org"
 msgstr ""
-"E280: КРИТИЧЕСКАЯ ОШИБКА TCL: повреждён список ссылок?! Сообщите об этом по "
-"адресу vim-dev@vim.org"
+"E280: КРИТИЧЕСКАЯ ОШИБКА TCL: возможно, повреждён список ссылок. "
+"Пожалуйста, сообщите об этом по адресу vim-dev@vim.org"
 
 #, c-format
 msgid "E282: Cannot read from \"%s\""
@@ -5005,7 +5005,7 @@ msgid "E327: Part of menu-item path is n
 msgstr "E327: Компонент пути к элементу меню не является подменю"
 
 msgid "E328: Menu only exists in another mode"
-msgstr "E328: Меню в этом режиме не существует"
+msgstr "E328: Меню существует только в другом режиме"
 
 #, c-format
 msgid "E329: No menu \"%s\""
@@ -5131,7 +5131,7 @@ msgstr "E363: Шаблон использует больше памяти, чем 'maxmempattern'"
 
 #, c-format
 msgid "E364: Library call failed for \"%s()\""
-msgstr "E364: Неудачный вызов функции \"%s()\" из библиотеки"
+msgstr "E364: Неудачный вызов \"%s()\" из сторонней библиотеки"
 
 msgid "E365: Failed to print PostScript file"
 msgstr "E365: Не удалось выполнить печать файла PostScript"
@@ -5195,7 +5195,7 @@ msgstr "E381: Наверху стека быстрых исправлений"
 
 msgid "E382: Cannot write, 'buftype' option is set"
 msgstr ""
-"E382: Запись невозможна: значение опции 'buftype' не является пустой строкой"
+"E382: Запись невозможна: опция 'buftype' не пуста"
 
 #, c-format
 msgid "E383: Invalid search string: %s"
@@ -5310,7 +5310,7 @@ msgid "E413: Too many arguments: \":high
 msgstr "E413: Слишком много параметров: \":highlight link %s\""
 
 msgid "E414: Group has settings, highlight link ignored"
-msgstr "E414: У группы есть настройки — highlight link игнорируется"
+msgstr "E414: У группы есть настройки, highlight link игнорируется"
 
 #, c-format
 msgid "E415: Unexpected equal sign: %s"
@@ -5336,7 +5336,7 @@ msgstr "E420: Неизвестный цвет фона"
 
 #, c-format
 msgid "E421: Color name or number not recognized: %s"
-msgstr "E421: Имя или номер цвета не известно: %s"
+msgstr "E421: Имя или номер цвета неизвестно: %s"
 
 #, c-format
 msgid "E422: Terminal code too long: %s"
@@ -5440,7 +5440,7 @@ msgid "E451: Expected }: %s"
 msgstr "E451: Ожидалась скобка }: %s"
 
 msgid "E452: Double ; in list of variables"
-msgstr "E452: Двойная ; в списке переменных"
+msgstr "E452: Две точки с запятой в списке переменных"
 
 msgid "E453: UL color unknown"
 msgstr "E453: Неизвестный цвет подчёркивания"
@@ -5465,7 +5465,7 @@ msgstr "E457: Невозможно прочитать файл ресурсов PostScript \"%s\""
 
 msgid "E458: Cannot allocate colormap entry, some colors may be incorrect"
 msgstr ""
-"E458: Невозможно выделить запись в таблице цвета — некоторые цвета могут "
+"E458: Невозможно выделить запись в таблице цветов — некоторые цвета могут "
 "отображаться неправильно"
 
 msgid "E459: Cannot go back to previous directory"
@@ -5507,7 +5507,7 @@ msgstr ""
 
 #, c-format
 msgid "E469: Invalid cscopequickfix flag %c for %c"
-msgstr "E469: Неправильный флаг cscopequickfix %c для %c"
+msgstr "E469: Неправильный флаг cscopequickfix %c после %c"
 
 msgid "E470: Command aborted"
 msgstr "E470: Выполнение команды прервано"
@@ -5627,7 +5627,7 @@ msgid "E499: Empty file name for '%' or 
 msgstr "E499: Пустое имя файла для '%' или '#' работает только c \":p:h\""
 
 msgid "E500: Evaluates to an empty string"
-msgstr "E500: Результатом выражения является пустая строка"
+msgstr "E500: Результатом является пустая строка"
 
 msgid "E501: At end-of-file"
 msgstr "E501: В конце файла"
@@ -5675,7 +5675,7 @@ msgid "E511: NetBeans already connected"
 msgstr "E511: Уже соединён с NetBeans"
 
 msgid "E512: Close failed"
-msgstr "E512: Операция закрытия не удалась"
+msgstr "E512: Не удалось закрыть файл"
 
 msgid "E513: Write error, conversion failed (make 'fenc' empty to override)"
 msgstr ""
@@ -5687,7 +5687,7 @@ msgid ""
 "E513: Write error, conversion failed in line %ld (make 'fenc' empty to "
 "override)"
 msgstr ""
-"E513: Ошибка записи, преобразование не удалось на строке %ld (очистите "
+"E513: Ошибка записи, преобразование не удалось в строке %ld (очистите "
 "'fenc', чтобы обойти)"
 
 msgid "E514: Write error (file system full?)"
@@ -5700,7 +5700,7 @@ msgid "E516: No buffers were deleted"
 msgstr "E516: Ни один буфер не был удалён"
 
 msgid "E517: No buffers were wiped out"
-msgstr "E517: Ни один буфер не был очищен"
+msgstr "E517: Ни один буфер не был стёрт"
 
 msgid "E518: Unknown option"
 msgstr "E518: Неизвестная опция"
@@ -5719,7 +5719,7 @@ msgid "E521: Number required: &%s = '%s'
 msgstr "E521: Требуется указать число: &%s = '%s'"
 
 msgid "E522: Not found in termcap"
-msgstr "E522: Не обнаружено в termcap"
+msgstr "E522: Не найдено в termcap"
 
 msgid "E523: Not allowed here"
 msgstr "E523: Здесь не разрешено"
@@ -5778,7 +5778,7 @@ msgid "E539: Illegal character <%s>"
 msgstr "E539: Недопустимый символ <%s>"
 
 msgid "E540: Unclosed expression sequence"
-msgstr "E540: Незакрытая последовательность выражения"
+msgstr "E540: Незакрытое выражение"
 
 msgid "E542: Unbalanced groups"
 msgstr "E542: Несбалансированные группы"
@@ -5857,7 +5857,7 @@ msgid "E565: Not allowed to change text 
 msgstr "E565: Не разрешается изменять текст либо переходить в другое окно"
 
 msgid "E566: Could not create cscope pipes"
-msgstr "E566: Невозможно создать трубу для cscope"
+msgstr "E566: Не удалось создать конвейерное подключение к cscope"
 
 msgid "E567: No cscope connections"
 msgstr "E567: Соединений с cscope не создано"
@@ -6034,7 +6034,7 @@ msgid "E621: \"%s\" resource file has wr
 msgstr "E621: Файл ресурсов \"%s\" неизвестной версии"
 
 msgid "E622: Could not fork for cscope"
-msgstr "E622: Невозможно выполнить fork() для cscope"
+msgstr "E622: Не удалось выполнить fork() для cscope"
 
 msgid "E623: Could not spawn cscope process"
 msgstr "E623: Не удалось запустить процесс cscope"
@@ -6089,7 +6089,7 @@ msgid "E663: At end of changelist"
 msgstr "E663: В конце списка изменений"
 
 msgid "E664: Changelist is empty"
-msgstr "E664: Список изменений пустой"
+msgstr "E664: Список изменений пуст"
 
 msgid "E665: Cannot start GUI, no valid font found"
 msgstr ""
@@ -6105,7 +6105,8 @@ msgstr "E667: Не удалось выполнить вызов fsync()"
 #, c-format
 msgid "E668: Wrong access mode for NetBeans connection info file: \"%s\""
 msgstr ""
-"E668: Неправильный режим доступа к информации о соединении с NetBeans: \"%s\""
+"E668: Файл информации о соединениях NetBeans имеет неправильный режим "
+"доступа: \"%s\""
 
 msgid "E669: Unprintable character in group name"
 msgstr "E669: Непечатный символ в имени группы"
@@ -6169,10 +6170,10 @@ msgid "E686: Argument of %s must be a Li
 msgstr "E686: Параметр %s должен быть списком"
 
 msgid "E687: Less targets than List items"
-msgstr "E687: Целей меньше, чем элементов списка"
+msgstr "E687: Целей меньше, чем элементов в списке"
 
 msgid "E688: More targets than List items"
-msgstr "E688: Целей больше, чем элементов списка"
+msgstr "E688: Целей больше, чем элементов в списке"
 
 msgid "E689: Can only index a List, Dictionary or Blob"
 msgstr "E689: Индексировать можно только список, словарь или блоб"
@@ -6234,7 +6235,7 @@ msgid "E707: Function name conflicts wit
 msgstr "E707: Имя функции конфликтует с переменной: %s"
 
 msgid "E708: [:] must come last"
-msgstr "E708: [:] должно идти последним"
+msgstr "E708: [:] должно идти после переменной"
 
 msgid "E709: [:] requires a List or Blob value"
 msgstr "E709: [:] требует указания списка или блоба"
@@ -6330,7 +6331,7 @@ msgstr "E736: Недопустимая операция для словаря"
 
 #, c-format
 msgid "E737: Key already exists: %s"
-msgstr "E737: Ключ уже существует: %s"
+msgstr "E737: Ключ %s уже существует"
 
 #, c-format
 msgid "E738: Can't list variables for %s"
@@ -6380,13 +6381,13 @@ msgid "E748: No previously used register
 msgstr "E748: Нет предыдущего использованного регистра"
 
 msgid "E749: Empty buffer"
-msgstr "E749: Пустой буфер"
+msgstr "E749: Буфер пуст"
 
 msgid "E750: First use \":profile start {fname}\""
 msgstr "E750: В первый раз используйте \":profile start {имя-файла}\""
 
 msgid "E751: Output file name must not have region name"
-msgstr "E751: Имя выходного файла не должно содержать названия региона"
+msgstr "E751: Имя выходного файла не должно содержать название региона"
 
 msgid "E752: No previous spell replacement"
 msgstr "E752: Нет предыдущей замены правописания"
@@ -6464,7 +6465,7 @@ msgid "E773: Symlink loop for \"%s\""
 msgstr "E773: Петля символьных ссылок для \"%s\""
 
 msgid "E774: 'operatorfunc' is empty"
-msgstr "E774: Значением опции 'operatorfunc' является пустая строка"
+msgstr "E774: Значение опции 'operatorfunc' не задано"
 
 msgid "E775: Eval feature not available"
 msgstr "E775: Особенность +eval недоступна"
@@ -6551,14 +6552,14 @@ msgstr "E797: Буфер удалён при выполнении автокоманды SpellFileMissing"
 
 #, c-format
 msgid "E798: ID is reserved for \":match\": %d"
-msgstr "E798: Идентификатор зарезервирован для \":match\": %d"
+msgstr "E798: Идентификатор зарезервирован за \":match\": %d"
 
 #, c-format
 msgid "E799: Invalid ID: %d (must be greater than or equal to 1)"
 msgstr "E799: Неверный идентификатор: %d (должен быть больше или равен 1)"
 
 msgid "E800: Arabic cannot be used: Not enabled at compile time\n"
-msgstr "E800: Арабский выключен при компиляции\n"
+msgstr "E800: Поддержка арабского языка выключена при компиляции\n"
 
 #, c-format
 msgid "E801: ID already taken: %d"
@@ -6687,10 +6688,10 @@ msgid "E835: Conflicts with value of 'fi
 msgstr "E835: Конфликтует со значением 'fillchars'"
 
 msgid "E836: This Vim cannot execute :python after using :py3"
-msgstr "E836: Данный Vim не может выполнить :python после использования :py3"
+msgstr "E836: В этой версии Vim нельзя выполнить :python после :py3"
 
 msgid "E837: This Vim cannot execute :py3 after using :python"
-msgstr "E837: Данный Vim не может выполнить :py3 после использования :python"
+msgstr "E837: В этой версии Vim нельзя выполнить :py3 после :python"
 
 msgid "E838: NetBeans is not supported with this GUI"
 msgstr "E838: NetBeans не поддерживается с этим графическим интерфейсом"
@@ -6700,7 +6701,7 @@ msgstr "E840: Функция автодополнения удалила текст"
 
 msgid "E841: Reserved name, cannot be used for user defined command"
 msgstr ""
-"E841: Зарезервированное имя не может использоваться для команд пользователя"
+"E841: Имя зарезервировано и не может использоваться для команды пользователя"
 
 msgid "E842: No line number to use for \"<slnum>\""
 msgstr "E842: Нет номера строки для замены \"<slnum>\""
@@ -6743,7 +6744,7 @@ msgid "E854: Path too long for completio
 msgstr "E854: Слишком большой путь для автодополнения"
 
 msgid "E855: Autocommands caused command to abort"
-msgstr "E855: Автокоманды вызвали прекращение команды"
+msgstr "E855: Выполнение команды прервано из-за автокоманд"
 
 msgid ""
 "E856: \"assert_fails()\" second argument must be a string or a list with one "
@@ -6937,10 +6938,10 @@ msgid "E903: Received command with non-s
 msgstr "E903: Получена команда с нестроковым параметром"
 
 msgid "E904: Last argument for expr/call must be a number"
-msgstr "E904: Последний параметр для выражения или вызова должен быть числом"
+msgstr "E904: Последний параметр команды expr или call должен быть числом"
 
 msgid "E904: Third argument for call must be a list"
-msgstr "E904: Третий параметр для вызова должен быть списком"
+msgstr "E904: Третий параметр команды call должен быть списком"
 
 #, c-format
 msgid "E905: Received unknown command: %s"
@@ -6968,8 +6969,8 @@ msgstr "E911: Использование задания вместо числа с плавающей точкой"
 
 msgid "E912: Cannot use ch_evalexpr()/ch_sendexpr() with a raw or nl channel"
 msgstr ""
-"E912: Невозможно использовать ch_evalexpr() или ch_sendexpr() с каналом nl "
-"или raw"
+"E912: Невозможно использовать ch_evalexpr() или ch_sendexpr() с каналом NL "
+"либо RAW"
 
 msgid "E913: Using a Channel as a Number"
 msgstr "E913: Использование канала вместо числа"
@@ -6978,7 +6979,9 @@ msgid "E914: Using a Channel as a Float"
 msgstr "E914: Использование канала вместо числа с плавающей точкой"
 
 msgid "E915: in_io buffer requires in_buf or in_name to be set"
-msgstr "E915: Буфер in_io требует установленного in_buf или in_name"
+msgstr ""
+"E915: Если in_io равно \"buffer\", то нужно также установить "
+"in_buf либо in_name"
 
 msgid "E916: Not a valid job"
 msgstr "E916: Недопустимое задание"
@@ -6996,7 +6999,8 @@ msgid "E919: Directory not found in '%s'
 msgstr "E919: Каталог не найден в '%s': \"%s\""
 
 msgid "E920: _io file requires _name to be set"
-msgstr "E920: Файл _io требует установленного _name"
+msgstr ""
+"E920: Если _io равно \"file\", то нужно также установить _name"
 
 msgid "E921: Invalid callback argument"
 msgstr "E921: Недопустимый параметр обратного вызова"
@@ -7079,7 +7083,7 @@ msgid "E944: Reverse range in character 
 msgstr "E944: Обратный диапазон в символьном классе"
 
 msgid "E945: Range too large in character class"
-msgstr "E945: Диапазон слишком велик в символьном классе"
+msgstr "E945: Слишком большой диапазон в символьном классе"
 
 msgid "E946: Cannot make a terminal with running job modifiable"
 msgstr "E946: Терминал с запущенным заданием нельзя сделать изменяемым"
@@ -7178,7 +7182,7 @@ msgstr "E972: Неверное количество байтов в значении блоба"
 
 msgid "E973: Blob literal should have an even number of hex characters"
 msgstr ""
-"E973: Блоб-литерал должен иметь чётное количество шестнадцатеричных символов"
+"E973: Блоб-литерал должен иметь чётное количество шестнадцатеричных разрядов"
 
 msgid "E974: Using a Blob as a Number"
 msgstr "E974: Использование блоба вместо числа"
@@ -7226,7 +7230,7 @@ msgstr "E987: Неправильное возвращаемое значение из tagfunc"
 
 msgid "E988: GUI cannot be used. Cannot execute gvim.exe."
 msgstr ""
-"E988: Графический интерфейс не может быть использован. Невозможно выполнить "
+"E988: Графический интерфейс не может быть задействован. Сбой при запуске "
 "gvim.exe"
 
 msgid "E989: Non-default argument follows default argument"
@@ -7555,8 +7559,8 @@ msgstr "E1075: Пространство имён не поддерживается: %s"
 
 msgid "E1076: This Vim is not compiled with float support"
 msgstr ""
-"E1076: Данный Vim был скомпилирован без поддержки вычислений с плавающей "
-"точкой"
+"E1076: Эта версия Vim была собрана без поддержки вычислений "
+"с плавающей точкой"
 
 #, c-format
 msgid "E1077: Missing argument type for %s"
@@ -7568,7 +7572,7 @@ msgstr ""
 "\"++nested\"?"
 
 msgid "E1079: Cannot declare a variable on the command line"
-msgstr "E1079: Нельзя объявить переменную в командной строке"
+msgstr "E1079: Переменную нельзя объявить в командной строке"
 
 msgid "E1080: Invalid assignment"
 msgstr "E1080: Неправильный оператор присваивания"
@@ -7982,7 +7986,7 @@ msgid "E1192: Empty function name"
 msgstr "E1192: Пустое имя функции"
 
 msgid "E1193: cryptmethod xchacha20 not built into this Vim"
-msgstr "E1193: Алгоритм шифрования xchacha20 недоступен в данном Vim"
+msgstr "E1193: Алгоритм шифрования xchacha20 недоступен в этой версии Vim"
 
 msgid "E1194: Cannot encrypt header, not enough space"
 msgstr "E1194: Невозможно зашифровать заголовок из-за нехватки памяти"
@@ -8350,6 +8354,10 @@ msgstr "E1289: Невозможно проверить наличие ожидающих сигналов SIGALRM: %s"
 msgid "E1290: substitute nesting too deep"
 msgstr "E1290: Слишком глубоко вложенная замена в подстановке"
 
+#, c-format
+msgid "E1291: Invalid argument: %ld"
+msgstr "E1291: Недопустимый параметр: %ld"
+
 msgid "--No lines in buffer--"
 msgstr "-- Нет строк в буфере --"
 
@@ -8552,7 +8560,7 @@ msgid "failed to rename buffer"
 msgstr "Невозможно переименовать буфер"
 
 msgid "mark name must be a single character"
-msgstr "Название отметки должно быть одним символом"
+msgstr "Имя отметки должно состоять из одного символа"
 
 #, c-format
 msgid "expected vim.Buffer object, but got %s"
@@ -8608,7 +8616,7 @@ msgid ""
 msgstr ""
 "Ошибка при установке перехватчика пути: sys.path_hooks не является списком\n"
 "Следует сделать следующее:\n"
-"— Добавить vim.path_hook  в sys.path_hooks\n"
+"— Добавить vim.path_hook в sys.path_hooks\n"
 "— Добавить vim.VIM_SPECIAL_PATH в sys.path\n"
 
 msgid ""
@@ -8725,18 +8733,18 @@ msgid "use Insert mode as the default mo
 msgstr "сделать режим Вставки режимом по умолчанию"
 
 msgid "paste mode, insert typed text literally"
-msgstr "режим вклейки — напечатанный текст вставляется буквально"
+msgstr "режим вклейки: напечатанный текст вставляется буквально"
 
 msgid "key sequence to toggle paste mode"
 msgstr "последовательность клавиш для переключения режима вклейки"
 
 msgid "list of directories used for runtime files and plugins"
 msgstr ""
-"список каталогов с файлами среды исполнения и дополнительными\n"
+"список каталогов с файлами среды выполнения и дополнительными\n"
 "модулями"
 
 msgid "list of directories used for plugin packages"
-msgstr "список каталогов с комплектами модулей"
+msgstr "список каталогов с пакетами модулей"
 
 msgid "name of the main help file"
 msgstr "имя основного файла помощи"
@@ -8757,7 +8765,7 @@ msgstr ""
 "непробельный символ строки"
 
 msgid "nroff macro names that separate paragraphs"
-msgstr "макросы nroff, отделяющие параграфы"
+msgstr "макросы nroff, отделяющие абзацы"
 
 msgid "nroff macro names that separate sections"
 msgstr "макросы nroff, отделяющие разделы"
@@ -8793,7 +8801,7 @@ msgid "ignore case when using a search p
 msgstr "игнорировать регистр букв при поиске по шаблону"
 
 msgid "override 'ignorecase' when pattern has upper case characters"
-msgstr "отменить 'ignorecase', если в шаблоне есть прописные буквы"
+msgstr "отменить 'ignorecase', если в шаблоне есть заглавные буквы"
 
 msgid "what method to use for changing case of letters"
 msgstr "способ изменения регистра букв"
@@ -9234,7 +9242,7 @@ msgid "list of font names to be used for
 msgstr "список шрифтов для символов двойной ширины"
 
 msgid "use smooth, antialiased fonts"
-msgstr "использовать сглаженные шрифты"
+msgstr "использовать шрифты со сглаживанием"
 
 msgid "list of flags that specify how the GUI works"
 msgstr "список флагов для настройки граф. интерфейса"
@@ -9248,7 +9256,7 @@ msgid "size of toolbar icons"
 msgstr "размер иконок панели инструментов"
 
 msgid "room (in pixels) left above/below the window"
-msgstr "пространство (в пикселах) сверху или снизу от окна"
+msgstr "пространство в пикселах сверху или снизу от окна"
 
 msgid "list of ASCII characters that can be combined into complex shapes"
 msgstr ""
@@ -9256,7 +9264,7 @@ msgstr ""
 "составные фигуры"
 
 msgid "options for text rendering"
-msgstr "опции для отрисовки текста"
+msgstr "опции отрисовки текста"
 
 msgid "use a pseudo-tty for I/O to external commands"
 msgstr "использовать псевдотерминал для ввода-вывода внешних команд"
@@ -9317,13 +9325,13 @@ msgstr "кодировка файла PostScript, созданного командой :hardcopy"
 
 msgid "the CJK character set to be used for CJK output from :hardcopy"
 msgstr ""
-"набор символов китайского, японского или корейского языков для\n"
+"набор символов китайского, корейского или японского языков для\n"
 "вывода командой :hardcopy"
 
 msgid "list of font names to be used for CJK output from :hardcopy"
 msgstr ""
-"список шрифтов для вывода символов китайского, японского или\n"
-"корейского языков командой :hardcopy"
+"список шрифтов для вывода символов китайского, корейского или\n"
+"японского языков командой :hardcopy"
 
 msgid "messages and info"
 msgstr "информация и сообщения"
@@ -9375,7 +9383,8 @@ msgid "do not ring the bell for these re
 msgstr "не звенеть из-за этих причин"
 
 msgid "list of preferred languages for finding help"
-msgstr "список предпочтительных языков для поиска справки"
+msgstr ""
+"список предпочтительных языков для поиска во встроенной справке"
 
 msgid "selecting text"
 msgstr "выделение текста"
@@ -9436,7 +9445,7 @@ msgid "margin from the right in which to
 msgstr "поле справа, в котором строка будет перенесена автоматически"
 
 msgid "specifies what <BS>, CTRL-W, etc. can do in Insert mode"
-msgstr "что <BS>, CTRL-W и т.п. может делать в режиме Вставки"
+msgstr "что <BS>, CTRL-W и т.п. могут делать в режиме Вставки"
 
 msgid "definition of what comment lines look like"
 msgstr "как выглядят строки комментариев"
@@ -9749,14 +9758,13 @@ msgstr ""
 
 msgid "keep oldest version of a file; specifies file name extension"
 msgstr ""
-"сохранять самую старую версию файла; указывает расширение имени\n"
-"файла"
+"сохранить первую версию файла; указывает расширение имени файла"
 
 msgid "forcibly sync the file to disk after writing it"
 msgstr "принудительная синхронизация после записи файла на диск"
 
 msgid "use 8.3 file names"
-msgstr "использовать имена файлов 8.3"
+msgstr "использовать имена файлов в формате 8.3"
 
 msgid "encryption method for file writing: zip, blowfish or blowfish2"
 msgstr "метод шифрования при записи файла: zip, blowfish или blowfish2"
@@ -9856,7 +9864,7 @@ msgid "used to redirect command output t
 msgstr "используется для перенаправления вывода команды в файл"
 
 msgid "use a temp file for shell commands instead of using a pipe"
-msgstr "использовать для команд оболочки временный файл, а не трубу"
+msgstr "использовать для команд оболочки временный файл, а не конвейер"
 
 msgid "program used for \"=\" command"
 msgstr "программа, используемая командой \"=\""
@@ -9888,7 +9896,7 @@ msgid "string used to put the output of 
 msgstr "строка для перенаправления вывода \":make\" в файл ошибок"
 
 msgid "name of the errorfile for the 'makeprg' command"
-msgstr "имя файла ошибок для команды 'makeprg'"
+msgstr "имя файла ошибок для 'makeprg'"
 
 msgid "program used for the \":grep\" command"
 msgstr "программа, используемая командой \":grep\""
@@ -9980,9 +9988,7 @@ msgid "apply 'langmap' to mapped charact
 msgstr "применять 'langmap' к привязанным символам"
 
 msgid "when set never use IM; overrules following IM options"
-msgstr ""
-"если установлено, то метод ввода никогда не используется;\n"
-"отменяет нижеследующие опции"
+msgstr "заблокировать метод ввода, сбросить нижеследующие опции"
 
 msgid "in Insert mode: 1: use :lmap; 2: use IM; 0: neither"
 msgstr ""