Update runtime files
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index d182f47..f700d4e 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -5775,8 +5775,8 @@
 		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 @@
 <		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.
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index 89a2491..5ac2f63 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -802,6 +802,8 @@
 |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,
diff --git a/runtime/doc/channel.txt b/runtime/doc/channel.txt
index 65dbd30..5b4ea2b 100644
--- a/runtime/doc/channel.txt
+++ b/runtime/doc/channel.txt
@@ -27,6 +27,7 @@
 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}
diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt
index ffb0832..e09ec39 100644
--- a/runtime/doc/cmdline.txt
+++ b/runtime/doc/cmdline.txt
@@ -1147,6 +1147,8 @@
 
 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
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 3dfacf7..9a35461 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1399,7 +1399,7 @@
 	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 @@
 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 @@
 			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.
diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt
index d5e9915..7700d26 100644
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -928,7 +928,7 @@
 	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).
diff --git a/runtime/doc/popup.txt b/runtime/doc/popup.txt
index 6a2471a..d11557c 100644
--- a/runtime/doc/popup.txt
+++ b/runtime/doc/popup.txt
@@ -591,7 +591,7 @@
 
 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
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index a7e0e7e..f15d3b1 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -103,7 +103,7 @@
 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
diff --git a/runtime/doc/tags b/runtime/doc/tags
index df1a64f..5daad6a 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4068,10 +4068,12 @@
 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 @@
 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 @@
 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*
diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt
index 7e8e8b9..f251781 100644
--- a/runtime/doc/testing.txt
+++ b/runtime/doc/testing.txt
@@ -186,6 +186,7 @@
 				    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
diff --git a/runtime/doc/textprop.txt b/runtime/doc/textprop.txt
index 6b4c023..d231082 100644
--- a/runtime/doc/textprop.txt
+++ b/runtime/doc/textprop.txt
@@ -171,7 +171,8 @@
 		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)
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 20dbce9..7156df7 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -39,18 +39,24 @@
 -------------------- 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
+    problem depending on whether window is focused or not
 
-Support virtual text:
-- clear b_textprop_text when buffer is cleared
+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 @@
 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: 
diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt
index 4b54f18..ce1b182 100644
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -281,7 +281,7 @@
 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 @@
 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 @@
 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 @@
 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 @@
 
 
 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}
diff --git a/runtime/ftplugin/debchangelog.vim b/runtime/ftplugin/debchangelog.vim
index a78f781..cf8dd17 100644
--- 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 @@
   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 @@
 " 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 @@
     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 @@
 
 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 @@
 
 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 @@
 
 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 @@
 
 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 @@
 
 " }}}
 
+" Restore the previous value of 'cpoptions'.
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
 " vim: set foldmethod=marker:
diff --git a/runtime/ftplugin/desktop.vim b/runtime/ftplugin/desktop.vim
new file mode 100644
index 0000000..bd6fd70
--- /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<'
diff --git a/runtime/ftplugin/swayconfig.vim b/runtime/ftplugin/swayconfig.vim
new file mode 100644
index 0000000..45d6bdb
--- /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
diff --git a/runtime/indent/html.vim b/runtime/indent/html.vim
index a3c32d6..65e0ffc 100644
--- a/runtime/indent/html.vim
+++ b/runtime/indent/html.vim
@@ -600,7 +600,7 @@
   endif
   if b:hi_indent.scripttype == "javascript"
     " indent for further lines
-    return eval(b:hi_js1indent) + GetJavascriptIndent()
+    return GetJavascriptIndent()
   else
     return -1
   endif
diff --git a/runtime/indent/javascript.vim b/runtime/indent/javascript.vim
index f3bf96a..8077442 100644
--- a/runtime/indent/javascript.vim
+++ b/runtime/indent/javascript.vim
@@ -473,6 +473,12 @@
   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
 
diff --git a/runtime/lang/Makefile b/runtime/lang/Makefile
index 4a122cb..901c4eb 100644
--- a/runtime/lang/Makefile
+++ b/runtime/lang/Makefile
@@ -22,6 +22,9 @@
 		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_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_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 @@
 	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
diff --git a/runtime/lang/menu_chinese_gb.936.vim b/runtime/lang/menu_chinese_gb.936.vim
index a58ec9c..915cd80 100644
--- 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 @@
 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 @@
 " }}}
 
 " 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 @@
 " }}}
 
 " 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 @@
   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 @@
 " }}}
 
 " 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 @@
   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
 
diff --git a/runtime/lang/menu_hu_hu.iso_8859-2.vim b/runtime/lang/menu_hu_hu.iso_8859-2.vim
index 262f044..6917417 100644
--- 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:	Zoltán Árpádffy
 " 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 gyorsbillentyût rendelni, lehetõleg nem ékezeteset.
-" További tennivaló az y és z gyorsbillentyûk kiirtása, ezenkívül a g, j
-" billentyûk irtása is, mivel ez utóbbiak aláhúzott változatát nem könnyû
-" felismerni.
-" Amennyiben valahol nem egyértelmûk a gyorsbillentyûk (a gyorsbillentyût
-" leütve nem hajtódik végre a kiszemelt menüpont, hanem csak kiválasztódik,
-" vagy másik menüpont választódik ki), vagy egyéb hibát találsz, kérlek jelezd
-" nekem a fenti email címen.
-" Mindennemû visszajelzést szívesen 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")
diff --git a/runtime/lang/menu_sk_sk.iso_8859-2.vim b/runtime/lang/menu_sk_sk.iso_8859-2.vim
index c2ff90a..29e6fb9 100644
--- 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")
diff --git a/runtime/lang/menu_zh_cn.utf-8.vim b/runtime/lang/menu_zh_cn.utf-8.vim
index d19945c..baf56cb 100644
--- 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\ script Vim\ 脚本
 menutrans Viminfo\ file Vim\ 信息文件
 menutrans Virata\ config Virata\ 配置文件
+menutrans Whitespace\ (add) 增加加亮空格
 " }}}
 
 " Netrw menu {{{1
@@ -462,25 +463,26 @@
 " 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 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 替换时把未设置命令视为错误
diff --git a/runtime/syntax/autohotkey.vim b/runtime/syntax/autohotkey.vim
index c6a68f7..a888394 100644
--- 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 @@
       \ matchgroup=autohotkeyStringDelimiter
       \ start=+"+
       \ end=+"+
-      \ contains=autohotkeyEscape
+      \ contains=autohotkeyEscape,autohotkeyMatchClass
 
 syn match autohotkeyVariable
       \ display
@@ -49,9 +49,9 @@
       \ 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 @@
       \ 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 @@
       \ 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 @@
       \ 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 @@
       \ 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=
diff --git a/runtime/syntax/debchangelog.vim b/runtime/syntax/debchangelog.vim
index 2efd919..9bd8368 100644
--- 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: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
 
diff --git a/runtime/syntax/debsources.vim b/runtime/syntax/debsources.vim
index e3ec6e6..ea9e59e 100644
--- 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 @@
 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
 
diff --git a/runtime/syntax/i3config.vim b/runtime/syntax/i3config.vim
index 0018081..caef244 100644
--- a/runtime/syntax/i3config.vim
+++ b/runtime/syntax/i3config.vim
@@ -17,6 +17,9 @@
 
 scriptencoding utf-8
 
+" Error
+syn match i3ConfigError /.*/
+
 " Todo
 syn keyword i3ConfigTodo TODO FIXME XXX contained
 
@@ -54,8 +57,8 @@
 " 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 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 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 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 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
diff --git a/runtime/syntax/python.vim b/runtime/syntax/python.vim
index 3af54cc..e67bf58 100644
--- 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	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
diff --git a/runtime/syntax/swayconfig.vim b/runtime/syntax/swayconfig.vim
new file mode 100644
index 0000000..2abfa38
--- /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"
diff --git a/runtime/tutor/tutor.zh_cn.utf-8 b/runtime/tutor/tutor.zh_cn.utf-8
index 65a766e..cc8e575 100644
--- 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> 键,然后光标定位到下一个错误第一个准备更改的字母处。