changeset 31579:7d68a90cbf5c

Update runtime files Commit: https://github.com/vim/vim/commit/f1dcd14fc5d4370476cd82895a4479ca2d252e54 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Dec 31 15:30:45 2022 +0000 Update runtime files
author Bram Moolenaar <Bram@vim.org>
date Sat, 31 Dec 2022 16:45:06 +0100
parents e90cb8fbfbb6
children 9f2a9dd57226
files .github/CODEOWNERS README.md README.txt runtime/autoload/dist/ft.vim runtime/doc/autocmd.txt runtime/doc/builtin.txt runtime/doc/diff.txt runtime/doc/options.txt runtime/doc/quickref.txt runtime/doc/sign.txt runtime/doc/syntax.txt runtime/doc/tags runtime/doc/term.txt runtime/doc/testing.txt runtime/doc/textprop.txt runtime/doc/todo.txt runtime/doc/usr_41.txt runtime/doc/various.txt runtime/doc/vim9class.txt runtime/filetype.vim runtime/indent/nginx.vim runtime/indent/testdir/vb.in runtime/indent/testdir/vb.ok runtime/indent/vb.vim runtime/indent/vue.vim runtime/optwin.vim runtime/syntax/2html.vim runtime/syntax/fstab.vim runtime/syntax/hgcommit.vim runtime/syntax/shared/hgcommitDiff.vim runtime/syntax/vim.vim src/po/ca.po
diffstat 32 files changed, 1428 insertions(+), 305 deletions(-) [+]
line wrap: on
line diff
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -299,6 +299,7 @@ runtime/plugin/tarPlugin.vim		@cecamp
 runtime/plugin/vimballPlugin.vim	@cecamp
 runtime/plugin/zipPlugin.vim		@cecamp
 runtime/plugin/manpager.vim		@Konfekt
+runtime/syntax/shared/hgcommitDiff.vim		@vegerot
 runtime/syntax/abaqus.vim		@costerwi
 runtime/syntax/aidl.vim			@dpelle
 runtime/syntax/amiga.vim		@cecamp
--- a/README.md
+++ b/README.md
@@ -101,7 +101,7 @@ for details (do `:help uganda` inside Vi
 
 Summary of the license: There are no restrictions on using or distributing an
 unmodified copy of Vim.  Parts of Vim may also be distributed, but the license
-text must always be included.  For modified versions a few restrictions apply.
+text must always be included.  For modified versions, a few restrictions apply.
 The license is GPL compatible, you may compile Vim with GPL libraries and
 distribute it.
 
@@ -122,7 +122,7 @@ For the most recent information about sp
 
 ## Contributing ##
 
-If you would like to help making Vim better, see the
+If you would like to help make Vim better, see the
 [CONTRIBUTING.md](/CONTRIBUTING.md) file.
 
 
--- a/README.txt
+++ b/README.txt
@@ -84,7 +84,7 @@ encouraged to make a donation to help or
 
 Summary of the license: There are no restrictions on using or distributing an
 unmodified copy of Vim.  Parts of Vim may also be distributed, but the license
-text must always be included.  For modified versions a few restrictions apply.
+text must always be included.  For modified versions, a few restrictions apply.
 The license is GPL compatible, you may compile Vim with GPL libraries and
 distribute it.
 
@@ -106,7 +106,7 @@ For the most recent information about sp
 
 CONTRIBUTING
 
-If you would like to help making Vim better, see the CONTRIBUTING.md file.
+If you would like to help make Vim better, see the CONTRIBUTING.md file.
 
 
 INFORMATION
--- a/runtime/autoload/dist/ft.vim
+++ b/runtime/autoload/dist/ft.vim
@@ -3,7 +3,7 @@ vim9script
 # Vim functions for file type detection
 #
 # Maintainer:	Bram Moolenaar <Bram@vim.org>
-# Last Change:	2022 Nov 24
+# Last Change:	2022 Dec 14
 
 # These functions are moved here from runtime/filetype.vim to make startup
 # faster.
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1,4 +1,4 @@
-*autocmd.txt*   For Vim version 9.0.  Last change: 2022 Nov 22
+*autocmd.txt*   For Vim version 9.0.  Last change: 2022 Dec 12
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -97,7 +97,7 @@ If the `:autocmd` is in Vim9 script (a s
 and in a `:def` function) then {cmd} will be executed as in Vim9
 script.  Thus this depends on where the autocmd is defined, not where it is
 triggered.
-
+							*:autocmd-block*
 {cmd} can be a block, like with `:command`, see |:command-repl|.  Example: >
 	au BufReadPost *.xml {
 		  setlocal matchpairs+=<:>
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -1,4 +1,4 @@
-*builtin.txt*	For Vim version 9.0.  Last change: 2022 Dec 05
+*builtin.txt*	For Vim version 9.0.  Last change: 2022 Dec 23
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -4137,7 +4137,7 @@ getscriptinfo([{opts})					*getscriptinf
 				this script name links to, if any, otherwise
 				zero
 		    variables   A dictionary with the script-local variables.
-				Present only when the a particular script is
+				Present only when a particular script is
 				specified using the "sid" item in {opts}.
 				Note that this is a copy, the value of
 				script-local variables cannot be changed using
@@ -9113,6 +9113,8 @@ string({expr})	Return {expr} converted t
 			Blob		0z00112233.44556677.8899
 			List		[item, item]
 			Dictionary	{key: value, key: value}
+			Class		class SomeName
+			Object		object of SomeName {lnum: 1, col: 3}
 
 		When a |List| or |Dictionary| has a recursive reference it is
 		replaced by "[...]" or "{...}".  Using eval() on the result
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -1,4 +1,4 @@
-*diff.txt*      For Vim version 9.0.  Last change: 2022 Oct 01
+*diff.txt*      For Vim version 9.0.  Last change: 2022 Dec 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -148,6 +148,10 @@ Otherwise they are set to their default 
 	'foldmethod'	"manual"
 	'foldcolumn'	0
 
+'foldenable' will most-likely be reset to off.  That is when 'foldmethod' is
+is restored to "manual".  The folds themselves are not cleared but they should
+not show up, resetting 'foldenable' is the best way to do that.
+
 ==============================================================================
 2. Viewing diffs						*view-diffs*
 
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 9.0.  Last change: 2022 Dec 09
+*options.txt*	For Vim version 9.0.  Last change: 2022 Dec 31
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -34,6 +34,8 @@ 1. Setting options					*set-option* *E76
 			key codes are not shown, because they are generated
 			internally and can't be changed.  Changing the terminal
 			codes in the GUI is not useful either...
+			The options have the form t_AB, see
+			|terminal-options|.
 
 :se[t]! termcap		Idem, but don't use multiple columns.
 
@@ -1249,7 +1251,7 @@ A jump table for the options with a shor
 		\ ' on word "' .. v:beval_text .. '"'
     endfunction
     set bexpr=MyBalloonExpr()
-    set ballooneval
+    set ballooneval balloonevalterm
 <
 	Also see |balloon_show()|, it can be used if the content of the balloon
 	is to be fetched asynchronously.  In that case evaluating
@@ -4936,6 +4938,12 @@ A jump table for the options with a shor
 			    CSI ?u	request kitty keyboard protocol state
 			    CSI >c	request the termresponse
 
+	If you notice problems, such as characters being displayed that
+	disappear after `CTRL-L`, you might want to try making this option
+	empty.  Then set the 'term' option to have it take effect: >
+		set keyprotocol=
+		let &term = &term
+
 
 					*'keywordprg'* *'kp'*
 'keywordprg' 'kp'	string	(default "man" or "man -s",  DOS: ":help",
@@ -7112,7 +7120,7 @@ A jump table for the options with a shor
 						*'shortmess'* *'shm'*
 'shortmess' 'shm'	string	(Vim default "filnxtToOS", Vi default: "S",
 							POSIX default: "AS")
-			global
+			global					*E1336*
 	This option helps to avoid all the |hit-enter| prompts caused by file
 	messages, for example  with CTRL-G, and to avoid some other messages.
 	It is a list of flags:
@@ -7127,30 +7135,30 @@ A jump table for the options with a shor
 		and "[a]" instead of "appended" for ':w >> file' command
 	  x	use "[dos]" instead of "[dos format]", "[unix]"		*shm-x*
 		instead of "[unix format]" and "[mac]" instead of "[mac
-		format]".
+		format]"
 	  a	all of the above abbreviations				*shm-a*
 
 	  o	overwrite message for writing a file with subsequent	*shm-o*
 		message for reading a file (useful for ":wn" or when
 		'autowrite' on)
-	  O	message for reading a file overwrites any previous	*smh-O*
-		message.  Also for quickfix message (e.g., ":cn").
+	  O	message for reading a file overwrites any previous	*shm-O*
+		message;  also for quickfix message (e.g., ":cn")
 	  s	don't give "search hit BOTTOM, continuing at TOP" or	*shm-s*
 		"search hit TOP, continuing at BOTTOM" messages; when using
 		the search count do not show "W" after the count message (see
 		S below)
 	  t	truncate file message at the start if it is too long	*shm-t*
 		to fit on the command-line, "<" will appear in the left most
-		column.  Ignored in Ex mode.
+		column; ignored in Ex mode
 	  T	truncate other messages in the middle if they are too	*shm-T*
-		long to fit on the command line.  "..." will appear in the
-		middle.  Ignored in Ex mode.
+		long to fit on the command line; "..." will appear in the
+		middle; ignored in Ex mode
 	  W	don't give "written" or "[w]" when writing a file	*shm-W*
 	  A	don't give the "ATTENTION" message when an existing	*shm-A*
-		swap file is found.
+		swap file is found
 	  I	don't give the intro message when starting Vim,		*shm-I*
-	  	see |:intro|.
-	  c	don't give |ins-completion-menu| messages.  For		*shm-c*
+	  	see |:intro|
+	  c	don't give |ins-completion-menu| messages; for		*shm-c*
 		example, "-- XXX completion (YYY)", "match 1 of 2", "The only
 		match", "Pattern not found", "Back at original", etc.
 	  C	don't give messages while scanning for ins-completion	*shm-C*
@@ -7227,11 +7235,12 @@ A jump table for the options with a shor
 
 			*'showcmdloc'* *'sloc'*
 'showcmdloc' 'sloc'	string	(default "last")
+			global
 	This option can be used to display the (partially) entered command in
 	another location.  Possible values are:
 	  last		Last line of the screen (default).
 	  statusline	Status line of the current window.
-	  tabline	First line of the screen if 'showtabine' is enabled.
+	  tabline	First line of the screen if 'showtabline' is enabled.
 	Setting this option to "statusline" or "tabline" means that these will
 	be redrawn whenever the command changes, which can be on every key
 	pressed.
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -1,4 +1,4 @@
-*quickref.txt*  For Vim version 9.0.  Last change: 2022 Nov 23
+*quickref.txt*  For Vim version 9.0.  Last change: 2022 Dec 16
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -902,7 +902,8 @@ Short explanation of each option:		*opti
 'shortmess'	  'shm'     list of flags, reduce length of messages
 'shortname'	  'sn'	    Filenames assumed to be 8.3 chars
 'showbreak'	  'sbr'     string to use at the start of wrapped lines
-'showcmd'	  'sc'	    show (partial) command in status line
+'showcmd'	  'sc'	    show (partial) command somewhere
+'showcmdloc'	  'sloc'    where to show (partial) command
 'showfulltag'	  'sft'     show full tag pattern when completing tag
 'showmatch'	  'sm'	    briefly jump to matching bracket if insert one
 'showmode'	  'smd'     message on status line to show current mode
--- a/runtime/doc/sign.txt
+++ b/runtime/doc/sign.txt
@@ -1,4 +1,4 @@
-*sign.txt*      For Vim version 9.0.  Last change: 2021 Dec 05
+*sign.txt*      For Vim version 9.0.  Last change: 2022 Dec 20
 
 
 		  VIM REFERENCE MANUAL    by Gordon Prieur
@@ -625,9 +625,9 @@ sign_placelist({list})
 				then a new unique identifier is allocated.
 				Otherwise the specified number is used. See
 				|sign-identifier| for more information.
-		    lnum	line number in the buffer {expr} where the
-				sign is to be placed. For the accepted values,
-				see |line()|.
+		    lnum	line number in the buffer where the sign is to
+				be placed. For the accepted values, see
+				|line()|.
 		    name	name of the sign to place. See |sign_define()|
 		    		for more information.
 		    priority	priority of the sign. When multiple signs are
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 9.0.  Last change: 2022 Nov 24
+*syntax.txt*	For Vim version 9.0.  Last change: 2022 Dec 26
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -5003,7 +5003,7 @@ in their own color.
 
 						*highlight-clear* *:hi-clear*
 :hi[ghlight] clear	Reset all highlighting to the defaults.  Removes all
-			highlighting for groups added by the user!
+			highlighting for groups added by the user.
 			Uses the current value of 'background' to decide which
 			default colors to use.
 			If there was a default link, restore it. |:hi-link|
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -438,10 +438,8 @@
 'keymap'	options.txt	/*'keymap'*
 'keymodel'	options.txt	/*'keymodel'*
 'keyprotocol'	options.txt	/*'keyprotocol'*
-'keywordprg'	options.txt	/*'keywordprg'*
 'km'	options.txt	/*'km'*
 'kmp'	options.txt	/*'kmp'*
-'kp'	options.txt	/*'kp'*
 'kpc'	options.txt	/*'kpc'*
 'langmap'	options.txt	/*'langmap'*
 'langmenu'	options.txt	/*'langmenu'*
@@ -926,6 +924,7 @@
 'shortname'	options.txt	/*'shortname'*
 'showbreak'	options.txt	/*'showbreak'*
 'showcmd'	options.txt	/*'showcmd'*
+'showcmdloc'	options.txt	/*'showcmdloc'*
 'showfulltag'	options.txt	/*'showfulltag'*
 'showmatch'	options.txt	/*'showmatch'*
 'showmode'	options.txt	/*'showmode'*
@@ -938,6 +937,7 @@
 'siso'	options.txt	/*'siso'*
 'sj'	options.txt	/*'sj'*
 'slm'	options.txt	/*'slm'*
+'sloc'	options.txt	/*'sloc'*
 'slow'	vi_diff.txt	/*'slow'*
 'slowopen'	vi_diff.txt	/*'slowopen'*
 'sm'	options.txt	/*'sm'*
@@ -2201,6 +2201,7 @@ 90.5	usr_90.txt	/*90.5*
 :aun	gui.txt	/*:aun*
 :aunmenu	gui.txt	/*:aunmenu*
 :autocmd	autocmd.txt	/*:autocmd*
+:autocmd-block	autocmd.txt	/*:autocmd-block*
 :autocmd-verbose	autocmd.txt	/*:autocmd-verbose*
 :b	windows.txt	/*:b*
 :bN	windows.txt	/*:bN*
@@ -3017,6 +3018,7 @@ 90.5	usr_90.txt	/*90.5*
 :pts	tagsrch.txt	/*:pts*
 :ptselect	tagsrch.txt	/*:ptselect*
 :pu	change.txt	/*:pu*
+:public	vim9class.txt	/*:public*
 :put	change.txt	/*:put*
 :pw	editing.txt	/*:pw*
 :pwd	editing.txt	/*:pwd*
@@ -4383,7 +4385,19 @@ E1324	eval.txt	/*E1324*
 E1325	vim9class.txt	/*E1325*
 E1326	vim9class.txt	/*E1326*
 E1327	vim9class.txt	/*E1327*
+E1328	vim9class.txt	/*E1328*
+E1329	vim9class.txt	/*E1329*
 E133	userfunc.txt	/*E133*
+E1330	vim9class.txt	/*E1330*
+E1331	vim9class.txt	/*E1331*
+E1332	vim9class.txt	/*E1332*
+E1333	vim9class.txt	/*E1333*
+E1334	vim9class.txt	/*E1334*
+E1335	vim9class.txt	/*E1335*
+E1336	options.txt	/*E1336*
+E1337	vim9class.txt	/*E1337*
+E1338	vim9class.txt	/*E1338*
+E1339	textprop.txt	/*E1339*
 E134	change.txt	/*E134*
 E135	autocmd.txt	/*E135*
 E136	starting.txt	/*E136*
@@ -8200,6 +8214,7 @@ keypad-point	intro.txt	/*keypad-point*
 keys()	builtin.txt	/*keys()*
 keytrans()	builtin.txt	/*keytrans()*
 kitty-keyboard-protocol	map.txt	/*kitty-keyboard-protocol*
+kitty-terminal	term.txt	/*kitty-terminal*
 known-bugs	todo.txt	/*known-bugs*
 l	motion.txt	/*l*
 l:	eval.txt	/*l:*
@@ -9575,6 +9590,7 @@ shm-A	options.txt	/*shm-A*
 shm-C	options.txt	/*shm-C*
 shm-F	options.txt	/*shm-F*
 shm-I	options.txt	/*shm-I*
+shm-O	options.txt	/*shm-O*
 shm-S	options.txt	/*shm-S*
 shm-T	options.txt	/*shm-T*
 shm-W	options.txt	/*shm-W*
@@ -9630,7 +9646,6 @@ slice()	builtin.txt	/*slice()*
 slow-fast-terminal	term.txt	/*slow-fast-terminal*
 slow-start	starting.txt	/*slow-start*
 slow-terminal	term.txt	/*slow-terminal*
-smh-O	options.txt	/*smh-O*
 socket-interface	channel.txt	/*socket-interface*
 sort()	builtin.txt	/*sort()*
 sorting	change.txt	/*sorting*
@@ -10312,6 +10327,7 @@ test_garbagecollect_soon()	testing.txt	/
 test_getvalue()	testing.txt	/*test_getvalue()*
 test_gui_event()	testing.txt	/*test_gui_event()*
 test_ignore_error()	testing.txt	/*test_ignore_error()*
+test_mswin_event()	testing.txt	/*test_mswin_event()*
 test_null_blob()	testing.txt	/*test_null_blob()*
 test_null_channel()	testing.txt	/*test_null_channel()*
 test_null_dict()	testing.txt	/*test_null_dict()*
@@ -11068,6 +11084,7 @@ xterm-cursor-keys	term.txt	/*xterm-curso
 xterm-end-home-keys	term.txt	/*xterm-end-home-keys*
 xterm-focus-event	term.txt	/*xterm-focus-event*
 xterm-function-keys	term.txt	/*xterm-function-keys*
+xterm-kitty	term.txt	/*xterm-kitty*
 xterm-modifier-keys	term.txt	/*xterm-modifier-keys*
 xterm-mouse	options.txt	/*xterm-mouse*
 xterm-mouse-wheel	scroll.txt	/*xterm-mouse-wheel*
@@ -11076,6 +11093,7 @@ xterm-save-screen	tips.txt	/*xterm-save-
 xterm-screens	tips.txt	/*xterm-screens*
 xterm-scroll-region	term.txt	/*xterm-scroll-region*
 xterm-shifted-keys	term.txt	/*xterm-shifted-keys*
+xterm-terminfo-entries	term.txt	/*xterm-terminfo-entries*
 xterm-true-color	term.txt	/*xterm-true-color*
 y	change.txt	/*y*
 yaml.vim	syntax.txt	/*yaml.vim*
--- a/runtime/doc/term.txt
+++ b/runtime/doc/term.txt
@@ -1,4 +1,4 @@
-*term.txt*      For Vim version 9.0.  Last change: 2022 Dec 01
+*term.txt*      For Vim version 9.0.  Last change: 2022 Dec 31
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -88,7 +88,8 @@ Output resumes when you hit <BS>.
 
 Note: When 't_ti' is not empty, Vim assumes that it causes switching to the
 alternate screen.  This may slightly change what happens when executing a
-shell command or exiting Vim.  To avoid this use 't_TI' and 't_TE'.
+shell command or exiting Vim.  To avoid this use 't_TI' and 't_TE' (but make
+sure to add to them, not overwrite).
 
 Vim will try to detect what keyboard protocol the terminal is using with the
 't_RK' termcap entry.  This is sent after 't_TI', but only when there is no
@@ -126,7 +127,11 @@ automatically, you can try using somethi
 	  exec "set t_PS=\e[200~"
 	  exec "set t_PE=\e[201~"
 	endif
-<
+
+The terminfo entries "BE", "BD", "PS" and "PE" were added in ncurses version
+6.4, early 2023, for some terminals.  If you have this version then you may
+not have to manually configure your terminal.
+
 							*tmux-integration*
 If you experience issues when running Vim inside tmux, here are a few hints.
 You can comment-out parts if something doesn't work (it may depend on the
@@ -294,13 +299,32 @@ When Vim receives a response to the |t_R
 starts with CSI, it assumes that the terminal is in 8-bit mode and will
 convert all key sequences to their 8-bit variants.
 
+						*xterm-terminfo-entries*
+For some time the terminfo entries were insufficient to describe all the
+features tht Vim can use.  The builtin xterm termcap entries did have these,
+with the result that several terminals that were similar enough to xterm took
+advantage of these by prefixing "xterm-" to the terminal name in $TERM.
+
+This leads to problems, because quite often these terminals are not 100%
+compatible with xterm.  At the start of 2023 several entries have been added
+to the terminfo database to make it possible to use these features without
+using the "xterm" workaround.  These are the relevant entries (so far):
+
+	name	xterm value	description ~
+	RV	"\033[>c"	Request version |t_RV|
+
+	BE	"\033[?2004h"	enable bracketed paste mode |t_BE|
+	BD	"\033[?2004l"	disable bracketed paste mode |t_BD|
+	PS	"\033[200~"	pasted text start |t_PS|
+	PE	"\033[201~"	pasted text end |t_PE|
+
 						*xterm-kitty* *kitty-terminal*
-The Kitty terminal is a special case.  Mainly because it works different from
-most other terminals, but also because, instead of trying the fit in and make
-it behave like other terminals by default, it dictates how applications need
-to work when using Kitty.  This makes it very difficult for Vim to work in a
-Kitty terminal.  Some exceptions have been hard coded, but it is not at all
-nice to have to make exceptions for one specific terminal.
+The Kitty terminal is a special case.  Mainly because it works differently
+from most other terminals, but also because, instead of trying the fit in and
+make it behave like other terminals by default, it dictates how applications
+need to work when using Kitty.  This makes it very difficult for Vim to work
+in a Kitty terminal.  Some exceptions have been hard coded, but it is not at
+all nice to have to make exceptions for one specific terminal.
 
 One of the problems is that the value for $TERM is set to "xterm-kitty".  For
 Vim this is an indication that the terminal is xterm-compatible and the
@@ -448,10 +472,10 @@ Added by Vim (there are no standard code
 	t_Si	save icon text to stack				*t_Si* *'t_Si'*
 	t_Ri	restore icon text from stack			*t_Ri* *'t_Ri'*
 	t_TE	end of "raw" mode				*t_TE* *'t_TE'*
-	t_TI	put terminal into "raw" mode 			*t_TI* *'t_TI'*
-	t_fe	enable focus-event tracking 			*t_fe* *'t_fe'*
+	t_TI	put terminal into "raw" mode			*t_TI* *'t_TI'*
+	t_fe	enable focus-event tracking			*t_fe* *'t_fe'*
 		|xterm-focus-event|
-	t_fd	disable focus-event tracking 			*t_fd* *'t_fd'*
+	t_fd	disable focus-event tracking			*t_fd* *'t_fd'*
 		|xterm-focus-event|
 
 Some codes have a start, middle and end part.  The start and end are defined
@@ -461,8 +485,8 @@ by the termcap option, the middle part i
 	set cursor color:   t_SC  {color name}  t_EC
 
 t_SH must take one argument:
-	0, 1 or none  	blinking block cursor
-	2	      	block cursor
+	0, 1 or none	blinking block cursor
+	2		block cursor
 	3		blinking underline cursor
 	4		underline cursor
 	5		blinking vertical bar cursor
@@ -531,6 +555,7 @@ Note: Use the <> form if possible
 	t_%1	<Help>		help key			*t_%1* *'t_%1'*
 	t_&8	<Undo>		undo key			*t_&8* *'t_&8'*
 	t_kI	<Insert>	insert key			*t_kI* *'t_kI'*
+		<kInsert>	keypad insert key
 	t_kD	<Del>		delete key			*t_kD* *'t_kD'*
 	t_kb	<BS>		backspace key			*t_kb* *'t_kb'*
 	t_kB	<S-Tab>		back-tab (shift-tab)  *<S-Tab>*	*t_kB* *'t_kB'*
@@ -563,9 +588,13 @@ Note: Use the <> form if possible
 	t_KK	<k8>		keypad 8		 *<k8>*	*t_KK* *'t_KK'*
 	t_KL	<k9>		keypad 9		 *<k9>*	*t_KL* *'t_KL'*
 		<Mouse>		leader of mouse code		*<Mouse>*
-								*t_PS* *'t_PS'*
-	t_PS	start of bracketed paste |xterm-bracketed-paste|
-	t_PE	end of bracketed paste |xterm-bracketed-paste|  *t_PE* *'t_PE'*
+
+	t_PS	<PasteStart>	start of bracketed paste	*t_PS* *'t_PS'*
+				|xterm-bracketed-paste|
+	t_PE	<PasteEnd>	end of bracketed paste		*t_PE* *'t_PE'*
+				|xterm-bracketed-paste|
+		<FocusGained>	Vim window got focus (internal only)
+		<FocusLost>	Vim window lost focus (internal only)
 
 Note about t_so and t_mr: When the termcap entry "so" is not present the
 entry for "mr" is used.  And vice versa.  The same is done for "se" and "me".
@@ -604,12 +633,15 @@ work the 'termguicolors' option needs to
 See https://github.com/termstandard/colors for a list of terminals that
 support true colors.
 
-Sometimes setting 'termguicolors' is not enough and one has to set the |t_8f|
-and |t_8b| options explicitly. Default values of these options are
-"^[[38;2;%lu;%lu;%lum" and "^[[48;2;%lu;%lu;%lum" respectively, but it is only
-set when `$TERM` is `xterm`. Some terminals accept the same sequences, but
-with all semicolons replaced by colons (this is actually more compatible, but
-less widely supported): >
+For telling the terminal what RGB color to use the |t_8f| and |t_8b| termcap
+entries are used.  These are set by default to values that work for most
+terminals.  If that does not work for your terminal you can set them manually.
+The default values are set like this: >
+	 let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
+	 let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
+
+Some terminals accept the same sequences, but with all semicolons replaced by
+colons (this is actually more compatible, but less widely supported): >
 	 let &t_8f = "\<Esc>[38:2:%lu:%lu:%lum"
 	 let &t_8b = "\<Esc>[48:2:%lu:%lu:%lum"
 
@@ -627,7 +659,7 @@ is actually the case.
 To overrule the default, put this line in your ~/.Xdefaults or
 ~/.Xresources:
 >
-	XTerm*allowWindowOps: 		true
+	XTerm*allowWindowOps:		true
 
 And run "xrdb -merge .Xresources" to make it effective.  You can check the
 value with the context menu (right mouse button while CTRL key is pressed),
--- a/runtime/doc/testing.txt
+++ b/runtime/doc/testing.txt
@@ -1,4 +1,4 @@
-*testing.txt*	For Vim version 9.0.  Last change: 2022 Nov 28
+*testing.txt*	For Vim version 9.0.  Last change: 2022 Dec 30
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
--- a/runtime/doc/textprop.txt
+++ b/runtime/doc/textprop.txt
@@ -1,4 +1,4 @@
-*textprop.txt*  For Vim version 9.0.  Last change: 2022 Nov 18
+*textprop.txt*  For Vim version 9.0.  Last change: 2022 Dec 19
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -220,10 +220,16 @@ prop_add({lnum}, {col}, {props})
 		Any Tab and other control character in the text will be
 		changed to a space (Rationale: otherwise the size of the text
 		is difficult to compute).
-		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:
-		*E1293*
+		A negative "id" will be chosen and is returned.
+
+		Before text properties with text were supported it was
+		possible to use a negative "id", even though this was very
+		rare.  Now that negative "id"s are reserved for text
+		properties with text an error is given when using a negative
+		"id".  When a text property with text already exists using a
+		negative "id" results in *E1293* .  If a negative "id" was
+		used and later a text property with text is added results in
+		*E1339* .
 
 		Can also be used as a |method|: >
 			GetLnum()->prop_add(col, props)
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 9.0.  Last change: 2022 Dec 11
+*todo.txt*      For Vim version 9.0.  Last change: 2022 Dec 31
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -54,13 +54,19 @@ Upcoming larger works:
 
 Further Vim9 improvements, possibly after launch:
 - implement :class and :interface: See |vim9-classes|  #11544
-    make default constructor use "this.member = void"
-    make public / default read access / private work for members.
-    string value of class and object in echo_string_core()
-    object empty(), len() - can class define a method?
+    class members: add test for read/write access
+	Test for E1337
+    Should object members be declared with "var"?  Looks more normal.
+    Don't use "class method" in the help but use "class function", more people
+    are used to that.
+    implement class functions: static def Method()
+    Disallow shadowing class members, e.g. by function arguments.
     tv_equal() should compare values, not identity.
+    import/export of a class
+    using a class name as a type
     garbage collection: set_ref_in_item(): Mark items in class as used ?
     type() should return different type for each class?
+    object empty(), len() - can class define a method to be used for them?
     how about lock/unlock?
 - implement :type
 - implement :enum
@@ -70,6 +76,56 @@ Further Vim9 improvements, possibly afte
     has(featureName), len(someString)
 - Implement as part of an expression: ++expr, --expr, expr++, expr--.
 
+Information missing in terminfo:
+Priority:
+- t_RV	request terminal version string; xterm:	"\033[>c"
+Codes used for focus gained and lost (currently using use_xterm_like_mouse())
+  termcodes are hard-coded in set_termname(), not named.
+- t_fe	enable focus-event tracking
+- t_fd	disable focus-event tracking
+Underline and similar:
+- t_AU - Set underline color: like "AF" and "AB" entries.
+- t_Ce	undercurl and underline end
+- t_Cs	undercurl (curly underline) mode
+- t_Us	double underline mode
+- t_ds	dotted underline mode
+- t_Ds	dashed underline mode
+- t_Te	strikethrough end
+- t_Ts	strikethrough mode
+Cursor codes: |termcap-cursor-shape|
+- t_RC	request terminal cursor blinking
+- t_RS	request terminal cursor style
+- t_VS	cursor normally visible (no blink)
+- t_SI	start insert mode (bar cursor shape)
+- t_SR	start replace mode (underline cursor shape)
+- t_EI	end insert or replace mode (block cursor shape)
+- t_SC	set cursor color start
+- t_EC	set cursor color end
+- t_SH	set cursor shape
+State requests:
+- t_RF	request terminal foreground color
+- t_RB	request terminal background color
+Less important (not needed for regular editing):
+- t_IS	set icon text start
+- t_IE	set icon text end
+- t_ST	save window title to stack
+- t_RT	restore window title from stack
+- t_Si	save icon text to stack
+- t_Ri	restore icon text from stack
+- t_WP	set window position (Y, X) in pixels
+- t_GP	get window position (Y, X) in pixels
+- t_WS	set window size (height, width in cells)
+Vim internal, but there should be a terminfo entry for these:
+- t_8f	set foreground color (R, G, B) in printf() format
+- t_8b	set background color (R, G, B) in printf() format
+- t_8u	set underline color (R, G, B) in printf() format
+Probably Vim internal, not in terminfo:
+- t_TE	end of "raw" mode
+- t_TI	put terminal into "raw" mode
+- t_RK	request terminal keyboard protocol state; sent after |t_TI|
+Already working, not properly documented:
+- t_u7	request cursor position
+
 Popup windows:
 - Add a function to redraw a specific popup window.  Esp. to be used when
   editing the command line, when screen updating doesn't happen. (Shougo)
@@ -177,6 +233,10 @@ Terminal emulator window:
 - When 'encoding' is not utf-8, or the job is using another encoding, setup
   conversions.
 
+Patch adds showcmd() function  #11708  - tests missing StopVimInTerminal()
+
+Some setaf/setab/t_AF/t_AB values support RGB somehow?  Can we use that?
+
 Crash when a variable is removed while listing variables (Issue #11435)
 
 Autoconf: must use autoconf 2.69, later version generates lots of warnings
@@ -212,6 +272,12 @@ https://github.com/vim/vim/pull/5566
 
 PR #11579 to add visualtext(), return Visually selected text.
 
+Stray characters in the shell #11719, caused by requesting a response for:
+- XT key sequences
+- Whether modifyOtherKeys is active
+- Whether kitty keyboard protocol is active
+Can we not request XT key sequences, or reduce them drastically?
+
 Issue #10512: Dynamic loading broken with Perl 5.36
 Damien has a patch (2022 Dec 4)
 
@@ -426,6 +492,10 @@ work.
 Using "au!" after "filetype on" is a bit slow.  Can the matching of
 autocommands be made faster?  (#7056)
 
+Using a search pattern containing "\%V" and 'hlsearch' set keeps old matches
+when the Visual area changes.  #11694.  Do a redraw when starting a Visual
+selection?
+
 Append in Visual block mode inserts the wrong character.
 Test_visual_block_mode() already has the proper check, which is commented out.
 (#8288)
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -1,4 +1,4 @@
-*usr_41.txt*	For Vim version 9.0.  Last change: 2022 Dec 05
+*usr_41.txt*	For Vim version 9.0.  Last change: 2022 Dec 20
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 9.0.  Last change: 2022 Nov 04
+*various.txt*   For Vim version 9.0.  Last change: 2022 Dec 13
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -496,7 +496,7 @@ T  *+visualextra*	extra Visual mode comm
 T  *+vreplace*		|gR| and |gr|
    *+vtp*		on MS-Windows console: support for 'termguicolors'
 T  *+wildignore*	|'wildignore'|  Always enabled since 9.0.0278
-T  *+wildmenu*		|'wildmenu'||  Always enabled since 9.0.0279
+T  *+wildmenu*		|'wildmenu'|  Always enabled since 9.0.0279
 T  *+windows*		more than one window; Always enabled since 8.0.1118.
 m  *+writebackup*	|'writebackup'| is default on
 m  *+xim*		X input method |xim|
--- a/runtime/doc/vim9class.txt
+++ b/runtime/doc/vim9class.txt
@@ -1,4 +1,4 @@
-*vim9class.txt*	For Vim version 9.0.  Last change: 2022 Dec 11
+*vim9class.txt*	For Vim version 9.0.  Last change: 2022 Dec 20
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -117,7 +117,7 @@ Member write access ~
 Now try to change an object member directly: >
 
 	pos.lnum = 9
-
+<								*E1335*
 This will give you an error!  That is because by default object members can be
 read but not set.  That's why the class provides a method for it: >
 
@@ -128,7 +128,7 @@ way.  Most often there is no problem usi
 have side effects that need to be taken care of.  In this case, the SetLnum()
 method could check if the line number is valid and either give an error or use
 the closest valid value.
-
+						*:public* *E1331*
 If you don't care about side effects and want to allow the object member to be
 changed at any time, you can make it public: >
 
@@ -137,10 +137,14 @@ changed at any time, you can make it pub
 
 Now you don't need the SetLnum(), SetCol() and SetPosition() methods, setting
 "pos.lnum" directly above will no longer give an error.
+							*E1334*
+If you try to set an object member that doesn't exist you get an error: >
+	pos.other = 9
+<	E1334: Object member not found: other ~
 
 
 Private members ~
-
+							*E1332* *E1333*
 On the other hand, if you do not want the object members to be read directly,
 you can make them private.  This is done by prefixing an underscore to the
 name: >
@@ -245,7 +249,7 @@ class, for which objects can be created.
 	   enddef
 	endclass
 <
-						*class-member* *:static*
+					*class-member* *:static* *E1337* *E1338*
 Class members are declared with "static".  They are used by the name without a
 prefix: >
 
@@ -389,6 +393,17 @@ Inside a class, in betweeen `:class` and
   	def newName(arguments)
 - An object method: >
   	def SomeMethod(arguments)
+<							*E1329*
+For the object member the type must be specified.  The best way is to do this
+explicitly with ": {type}".  For simple types you can also use an initializer,
+such as "= 123", and Vim will see that the type is a number.  Avoid doing this
+for more complex types and when the type will be incomplete.  For example: >
+	this.nameList = []
+This specifies a list, but the item type is unknown.  Better use: >
+	this.nameList: list<string>
+The initialization isn't needed, the list is empty by default.
+							*E1330*
+Some types cannot be used, such as "void", "null" and "v:none".
 
 
 Defining an interface ~
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2022 Dec 05
+" Last Change:	2022 Dec 19
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
--- a/runtime/indent/nginx.vim
+++ b/runtime/indent/nginx.vim
@@ -1,19 +1,78 @@
 " Vim indent file
 " Language: nginx.conf
 " Maintainer: Chris Aumann <me@chr4.org>
-" Last Change:  2022 Apr 06
+" Last Change:  2022 Dec 01
 
-if exists("b:did_indent")
-    finish
+" Only load this indent file when no other was loaded.
+if exists('b:did_indent')
+  finish
 endif
 let b:did_indent = 1
 
-setlocal indentexpr=
+setlocal indentexpr=GetNginxIndent()
+
+setlocal indentkeys=0{,0},0#,!^F,o,O
+
+let b:undo_indent = 'setl inde< indk<'
+
+" Only define the function once.
+if exists('*GetNginxIndent')
+  finish
+endif
+
+function GetNginxIndent() abort
+  let plnum = s:PrevNotAsBlank(v:lnum - 1)
 
-" cindent actually works for nginx' simple file structure
-setlocal cindent
+  " Hit the start of the file, use zero indent.
+  if plnum == 0
+    return 0
+  endif
+
+  let ind = indent(plnum)
+
+  " Add a 'shiftwidth' after '{'
+  if s:AsEndWith(getline(plnum), '{')
+    let ind = ind + shiftwidth()
+  end
+
+  " Subtract a 'shiftwidth' on '}'
+  " This is the part that requires 'indentkeys'.
+  if getline(v:lnum) =~ '^\s*}'
+    let ind = ind - shiftwidth()
+  endif
+
+  let pplnum = s:PrevNotAsBlank(plnum - 1)
 
-" Just make sure that the comments are not reset as defs would be.
-setlocal cinkeys-=0#
+  if s:IsLineContinuation(plnum)
+    if !s:IsLineContinuation(pplnum)
+      let ind = ind + shiftwidth()
+    end
+  else
+    if s:IsLineContinuation(pplnum)
+      let ind = ind - shiftwidth()
+    end
+  endif
+
+  return ind
+endfunction
 
-let b:undo_indent = "setl inde< cin< cink<"
+" Find the first line at or above {lnum} that is non-blank and not a comment.
+function s:PrevNotAsBlank(lnum) abort
+  let lnum = prevnonblank(a:lnum)
+  while lnum > 0
+    if getline(lnum) !~ '^\s*#'
+      break
+    endif
+    let lnum = prevnonblank(lnum - 1)
+  endwhile
+  return lnum
+endfunction
+
+" Check whether {line} ends with {pat}, ignoring trailing comments.
+function s:AsEndWith(line, pat) abort
+  return a:line =~ a:pat . '\m\s*\%(#.*\)\?$'
+endfunction
+
+function s:IsLineContinuation(lnum) abort
+  return a:lnum > 0 && !s:AsEndWith(getline(a:lnum), '[;{}]')
+endfunction
new file mode 100644
--- /dev/null
+++ b/runtime/indent/testdir/vb.in
@@ -0,0 +1,134 @@
+' vim: filetype=vb shiftwidth=4 expandtab
+'
+' START_INDENT
+Public Type GEmployeeRecord     ' Create user-defined type. 
+ID As Integer               ' Define elements of data type. 
+Name As String * 20 
+Address As String * 30 
+Phone As Long 
+HireDate As Date 
+End Type 
+
+Public Enum InterfaceColors 
+icMistyRose = &HE1E4FF& 
+icSlateGray = &H908070& 
+icDodgerBlue = &HFF901E& 
+icDeepSkyBlue = &HFFBF00& 
+icSpringGreen = &H7FFF00& 
+icForestGreen = &H228B22& 
+icGoldenrod = &H20A5DA& 
+icFirebrick = &H2222B2& 
+End Enum
+
+Enum SecurityLevel 
+IllegalEntry = -1 
+SecurityLevel1 = 0 
+SecurityLevel2 = 1 
+End Enum 
+
+Public Function TestConditional (number As Integer, ext As String) As Boolean
+Dim inRange As Boolean
+
+Select Case number
+Case <= 0
+inRange = False
+Case > 10
+inRange = False
+Case Else
+inRange = True
+End Select
+
+' This is a special case identified in the indent script.
+Select Case number
+End Select
+
+If ext = ".xlm" Then
+If inRange Then
+TestConditional = True
+Else
+TestConditional = False
+End If
+ElseIf ext = ".xlsx" Then
+If inRange Then
+TestConditional = False
+Else
+TestConditional = True
+End If
+Else
+TestConditional = False
+End If
+End Function
+
+Private Sub TestIterators (lLimit As Integer, uLimit As Integer)
+Dim a() As Variant
+Dim elmt As Variant
+Dim found As Boolean
+Dim indx As Integer
+Const specialValue As Integer = 5
+
+If uLimit < lLimit Then
+Exit Sub
+End If
+
+ReDim a(lLimit To uLimit)
+For indx=lLimit To Ulimit
+a(indx) = 2 * indx
+Next indx
+
+found = False
+For Each elmt in a
+If elmt = specialValue Then
+found = True
+End If
+Next elmt
+
+If found then
+indx = uLimit
+Do While indx >= lLimit
+indx = indx - 1
+Loop
+End If
+
+End Sub
+
+Public Sub TestMultiline (cellAddr As String, rowNbr As Long)
+Dim rng As Range
+
+Set rng = Range(cellAddr)
+With rng
+.Cells(1,1).Value = _
+"Line 1 of multiline string; " & _
+"Line 2 of multiline string; " & _
+"Line 3 of multiline string"
+End With
+
+' The following lines have whitespace after the underscore character
+' and therefore do not form a valid multiline statement.  The indent
+' script correctly treats them as four single line statements contrary
+' to the author's obvious indent.
+rng..Cells(1,1).Value = _ 
+"Line 1 of multiline string; " & _ 
+"Line 2 of multiline string; " & _ 
+"Line 3 of multiline string"
+
+End Sub
+
+Private Sub TestStmtLabel()
+GoTo stmtLabel
+
+' Statement labels are never indented
+stmtLabel:
+
+End Sub
+
+Sub TestTypeKeyword()
+Type EmployeeRecord         ' Create user-defined type. 
+ID As Integer           ' Define elements of data type. 
+Name As String * 20 
+Address As String * 30 
+Phone As Long 
+HireDate As Date 
+End Type 
+Dim varType As EmployeeRecord
+End Sub
+' END_INDENT
new file mode 100644
--- /dev/null
+++ b/runtime/indent/testdir/vb.ok
@@ -0,0 +1,134 @@
+' vim: filetype=vb shiftwidth=4 expandtab
+'
+' START_INDENT
+Public Type GEmployeeRecord     ' Create user-defined type. 
+    ID As Integer               ' Define elements of data type. 
+    Name As String * 20 
+    Address As String * 30 
+    Phone As Long 
+    HireDate As Date 
+End Type 
+
+Public Enum InterfaceColors 
+    icMistyRose = &HE1E4FF& 
+    icSlateGray = &H908070& 
+    icDodgerBlue = &HFF901E& 
+    icDeepSkyBlue = &HFFBF00& 
+    icSpringGreen = &H7FFF00& 
+    icForestGreen = &H228B22& 
+    icGoldenrod = &H20A5DA& 
+    icFirebrick = &H2222B2& 
+End Enum
+
+Enum SecurityLevel 
+    IllegalEntry = -1 
+    SecurityLevel1 = 0 
+    SecurityLevel2 = 1 
+End Enum 
+
+Public Function TestConditional (number As Integer, ext As String) As Boolean
+    Dim inRange As Boolean
+
+    Select Case number
+        Case <= 0
+            inRange = False
+        Case > 10
+            inRange = False
+        Case Else
+            inRange = True
+    End Select
+
+    ' This is a special case identified in the indent script.
+    Select Case number
+    End Select
+
+    If ext = ".xlm" Then
+        If inRange Then
+            TestConditional = True
+        Else
+            TestConditional = False
+        End If
+    ElseIf ext = ".xlsx" Then
+        If inRange Then
+            TestConditional = False
+        Else
+            TestConditional = True
+        End If
+    Else
+        TestConditional = False
+    End If
+End Function
+
+Private Sub TestIterators (lLimit As Integer, uLimit As Integer)
+    Dim a() As Variant
+    Dim elmt As Variant
+    Dim found As Boolean
+    Dim indx As Integer
+    Const specialValue As Integer = 5
+
+    If uLimit < lLimit Then
+        Exit Sub
+    End If
+
+    ReDim a(lLimit To uLimit)
+    For indx=lLimit To Ulimit
+        a(indx) = 2 * indx
+    Next indx
+
+    found = False
+    For Each elmt in a
+        If elmt = specialValue Then
+            found = True
+        End If
+    Next elmt
+
+    If found then
+        indx = uLimit
+        Do While indx >= lLimit
+            indx = indx - 1
+        Loop
+    End If
+
+End Sub
+
+Public Sub TestMultiline (cellAddr As String, rowNbr As Long)
+    Dim rng As Range
+
+    Set rng = Range(cellAddr)
+    With rng
+        .Cells(1,1).Value = _
+            "Line 1 of multiline string; " & _
+            "Line 2 of multiline string; " & _
+            "Line 3 of multiline string"
+    End With
+
+    ' The following lines have whitespace after the underscore character
+    ' and therefore do not form a valid multiline statement.  The indent
+    ' script correctly treats them as four single line statements contrary
+    ' to the author's obvious indent.
+    rng..Cells(1,1).Value = _ 
+    "Line 1 of multiline string; " & _ 
+    "Line 2 of multiline string; " & _ 
+    "Line 3 of multiline string"
+
+End Sub
+
+Private Sub TestStmtLabel()
+    GoTo stmtLabel
+
+    ' Statement labels are never indented
+stmtLabel:
+
+End Sub
+
+Sub TestTypeKeyword()
+    Type EmployeeRecord         ' Create user-defined type. 
+        ID As Integer           ' Define elements of data type. 
+        Name As String * 20 
+        Address As String * 30 
+        Phone As Long 
+        HireDate As Date 
+    End Type 
+    Dim varType As EmployeeRecord
+End Sub
+' END_INDENT
--- a/runtime/indent/vb.vim
+++ b/runtime/indent/vb.vim
@@ -1,8 +1,12 @@
 " Vim indent file
 " Language:	VisualBasic (ft=vb) / Basic (ft=basic) / SaxBasic (ft=vb)
 " Author:	Johannes Zellner <johannes@zellner.org>
+" Maintainer:	Michael Soyka (mssr953@gmail.com)
 " Last Change:	Fri, 18 Jun 2004 07:22:42 CEST
 "		Small update 2010 Jul 28 by Maxim Kim
+"		2022/12/15: add support for multiline statements.
+"		2022/12/21: move VbGetIndent from global to script-local scope
+"		2022/12/26: recognize "Type" keyword
 
 if exists("b:did_indent")
     finish
@@ -10,28 +14,33 @@ endif
 let b:did_indent = 1
 
 setlocal autoindent
-setlocal indentexpr=VbGetIndent(v:lnum)
+setlocal indentexpr=s:VbGetIndent(v:lnum)
 setlocal indentkeys&
-setlocal indentkeys+==~else,=~elseif,=~end,=~wend,=~case,=~next,=~select,=~loop,<:>
+setlocal indentkeys+==~else,=~elseif,=~end,=~wend,=~case,=~next,=~select,=~loop
 
 let b:undo_indent = "set ai< indentexpr< indentkeys<"
 
 " Only define the function once.
-if exists("*VbGetIndent")
+if exists("*s:VbGetIndent")
     finish
 endif
 
-fun! VbGetIndent(lnum)
+function s:VbGetIndent(lnum)
+    let this_lnum = a:lnum
+    let this_line = getline(this_lnum)
+
     " labels and preprocessor get zero indent immediately
-    let this_line = getline(a:lnum)
     let LABELS_OR_PREPROC = '^\s*\(\<\k\+\>:\s*$\|#.*\)'
     if this_line =~? LABELS_OR_PREPROC
 	return 0
     endif
+    
+    " Get the current value of "shiftwidth"
+    let bShiftwidth = shiftwidth()
 
     " Find a non-blank line above the current line.
     " Skip over labels and preprocessor directives.
-    let lnum = a:lnum
+    let lnum = this_lnum
     while lnum > 0
 	let lnum = prevnonblank(lnum - 1)
 	let previous_line = getline(lnum)
@@ -45,34 +54,102 @@ fun! VbGetIndent(lnum)
 	return 0
     endif
 
-    let ind = indent(lnum)
+    " Variable "previous_line" now contains the text in buffer line "lnum".
+
+    " Multi-line statements have the underscore character at end-of-line:
+    "
+    "    object.method(arguments, _
+    "                  arguments, _
+    "                  arguments)
+    "
+    " and require extra logic to determine the correct indentation.
+    "
+    " Case 1: Line "lnum" is the first line of a multiline statement.
+    "         Line "lnum" will have a trailing underscore character
+    "         but the preceding non-blank line does not.
+    "         Line "this_lnum" will be indented relative to "lnum".
+    "
+    " Case 2: Line "lnum" is the last line of a multiline statement.
+    "         Line "lnum" will not have a trailing underscore character
+    "         but the preceding non-blank line will.
+    "         Line "this_lnum" will have the same indentation as the starting
+    "         line of the multiline statement.
+    "
+    " Case 3: Line "lnum" is neither the first nor last line.  
+    "         Lines "lnum" and "lnum-1" will have a trailing underscore
+    "         character.
+    "         Line "this_lnum" will have the same indentation as the preceding
+    "         line.
+    "
+    " No matter which case it is, the starting line of the statement must be
+    " found.  It will be assumed that multiline statements cannot have
+    " intermingled comments, statement labels, preprocessor directives or
+    " blank lines.
+    "
+    let lnum_is_continued = (previous_line =~ '_$')
+    if lnum > 1
+	let before_lnum = prevnonblank(lnum-1)
+	let before_previous_line = getline(before_lnum)
+    else
+	let before_lnum = 0
+	let before_previous_line = ""
+    endif
+
+    if before_previous_line !~ '_$'
+	" Variable "previous_line" contains the start of a statement.
+	"
+	let ind = indent(lnum)
+	if lnum_is_continued
+	    let ind += bShiftwidth
+	endif
+    elseif ! lnum_is_continued
+	" Line "lnum" contains the last line of a multiline statement.
+        " Need to find where this multiline statement begins
+	"
+	while before_lnum > 0
+	    let before_lnum -= 1
+	    if getline(before_lnum) !~ '_$'
+		let before_lnum += 1
+		break
+	    endif
+	endwhile
+	if before_lnum == 0
+	    let before_lnum = 1
+	endif
+	let previous_line = getline(before_lnum)
+	let ind = indent(before_lnum)
+    else
+	" Line "lnum" is not the first or last line of a multiline statement.
+	"
+	let ind = indent(lnum)
+    endif
 
     " Add
-    if previous_line =~? '^\s*\<\(begin\|\%(\%(private\|public\|friend\)\s\+\)\=\%(function\|sub\|property\)\|select\|case\|default\|if\|else\|elseif\|do\|for\|while\|enum\|with\)\>'
-	let ind = ind + shiftwidth()
+    if previous_line =~? '^\s*\<\(begin\|\%(\%(private\|public\|friend\)\s\+\)\=\%(function\|sub\|property\|enum\|type\)\|select\|case\|default\|if\|else\|elseif\|do\|for\|while\|with\)\>'
+	let ind = ind + bShiftwidth
     endif
 
     " Subtract
     if this_line =~? '^\s*\<end\>\s\+\<select\>'
 	if previous_line !~? '^\s*\<select\>'
-	    let ind = ind - 2 * shiftwidth()
+	    let ind = ind - 2 * bShiftwidth
 	else
 	    " this case is for an empty 'select' -- 'end select'
 	    " (w/o any case statements) like:
 	    "
 	    " select case readwrite
 	    " end select
-	    let ind = ind - shiftwidth()
+	    let ind = ind - bShiftwidth
 	endif
     elseif this_line =~? '^\s*\<\(end\|else\|elseif\|until\|loop\|next\|wend\)\>'
-	let ind = ind - shiftwidth()
+	let ind = ind - bShiftwidth
     elseif this_line =~? '^\s*\<\(case\|default\)\>'
 	if previous_line !~? '^\s*\<select\>'
-	    let ind = ind - shiftwidth()
+	    let ind = ind - bShiftwidth
 	endif
     endif
 
     return ind
-endfun
+endfunction
 
 " vim:sw=4
--- a/runtime/indent/vue.vim
+++ b/runtime/indent/vue.vim
@@ -1,12 +1,14 @@
 " Vim indent file placeholder
 " Language:	Vue
 " Maintainer:	None, please volunteer if you have a real Vue indent script
+" Last Change:	2022 Dec 24
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
    finish
 endif
-let b:did_indent = 1
+" don't set b:did_indent, otherwise html indenting won't be activated
+" let b:did_indent = 1
 
 " Html comes closest
 runtime! indent/html.vim
--- a/runtime/optwin.vim
+++ b/runtime/optwin.vim
@@ -1,7 +1,7 @@
 " These commands create the option window.
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2022 Nov 23
+" Last Change:	2022 Dec 16
 
 " If there already is an option window, jump to that one.
 let buf = bufnr('option-window')
@@ -743,10 +743,12 @@ call <SID>AddOption("terse", gettext("ad
 call <SID>BinOptionG("terse", &terse)
 call <SID>AddOption("shortmess", gettext("list of flags to make messages shorter"))
 call <SID>OptionG("shm", &shm)
-call <SID>AddOption("showcmd", gettext("show (partial) command keys in the status line"))
+call <SID>AddOption("showcmd", gettext("show (partial) command keys in location given by 'showcmdloc'"))
 let &sc = s:old_sc
 call <SID>BinOptionG("sc", &sc)
 set nosc
+call <SID>AddOption("showcmdloc", gettext("location where to show the (partial) command keys for 'showcmd'"))
+  call <SID>OptionG("sloc", &sloc)
 call <SID>AddOption("showmode", gettext("display the current mode in the status line"))
 call <SID>BinOptionG("smd", &smd)
 call <SID>AddOption("ruler", gettext("show cursor position below each window"))
--- a/runtime/syntax/2html.vim
+++ b/runtime/syntax/2html.vim
@@ -1,6 +1,6 @@
 " Vim syntax support file
 " Maintainer: Ben Fritz <fritzophrenic@gmail.com>
-" Last Change: 2020 Jan 05
+" Last Change: 2022 Dec 26
 "
 " Additional contributors:
 "
@@ -1881,7 +1881,7 @@ if s:settings.use_css && !s:settings.no_
   endif
 endif
 
-if !s:settings.use_css && !s:settings_no_doc
+if !s:settings.use_css && !s:settings.no_doc
   " For Netscape 4, set <body> attributes too, though, strictly speaking, it's
   " incorrect.
   execute '%s:<body\([^>]*\):<body bgcolor="' . s:bgc . '" text="' . s:fgc . '"\1>\r<font face="'. s:htmlfont .'"'
--- a/runtime/syntax/fstab.vim
+++ b/runtime/syntax/fstab.vim
@@ -2,8 +2,8 @@
 " Language: fstab file
 " Maintainer: Radu Dineiu <radu.dineiu@gmail.com>
 " URL: https://raw.github.com/rid9/vim-fstab/master/syntax/fstab.vim
-" Last Change: 2022 Dec 10
-" Version: 1.5
+" Last Change: 2022 Dec 11
+" Version: 1.6.2
 "
 " Credits:
 "   David Necas (Yeti) <yeti@physics.muni.cz>
@@ -56,7 +56,7 @@ syn keyword fsMountPointKeyword containe
 " Type
 syn cluster fsTypeCluster contains=fsTypeKeyword,fsTypeUnknown
 syn match fsTypeUnknown /\s\+\zs\w\+/ contained
-syn keyword fsTypeKeyword contained adfs ados affs anon_inodefs atfs audiofs auto autofs bdev befs bfs btrfs binfmt_misc cd9660 ceph cfs cgroup cifs coda coherent configfs cpuset cramfs debugfs devfs devpts devtmpfs dlmfs e2compr ecryptfs efivarfs efs erofs exfat ext2 ext2fs ext3 ext4 f2fs fdesc ffs filecore fuse fuseblk fusectl gfs2 hfs hfsplus hpfs hugetlbfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix mqueue msdos ncpfs nfs nfs4 nfsd nilfs2 none ntfs ntfs3 null nwfs ocfs2 omfs overlay ovlfs pipefs portal proc procfs pstore ptyfs pvfs2 qnx4 qnx6 reiserfs ramfs romfs securityfs shm smbfs spufs squashfs sockfs sshfs std subfs swap sysfs sysv tcfs tmpfs ubifs udf ufs umap umsdos union usbfs userfs v9fs vfat virtiofs vs3fs vxfs wrapfs wvfs xenfs xenix xfs zisofs zonefs
+syn keyword fsTypeKeyword contained adfs ados affs anon_inodefs atfs audiofs auto autofs bdev befs bfs btrfs binfmt_misc cd9660 ceph cfs cgroup cifs coda coherent configfs cpuset cramfs debugfs devfs devpts devtmpfs dlmfs e2compr ecryptfs efivarfs efs erofs exfat ext2 ext2fs ext3 ext4 f2fs fdesc ffs filecore fuse fuseblk fusectl gfs2 hfs hfsplus hpfs hugetlbfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix mqueue msdos ncpfs nfs nfs4 nfsd nilfs2 none ntfs ntfs3 null nwfs ocfs2 omfs overlay ovlfs pipefs portal proc procfs pstore ptyfs pvfs2 qnx4 qnx6 reiserfs ramfs romfs rpc_pipefs securityfs shm smbfs spufs squashfs sockfs sshfs std subfs swap sysfs sysv tcfs tmpfs ubifs udf ufs umap umsdos union usbfs userfs v9fs vfat virtiofs vs3fs vxfs wrapfs wvfs xenfs xenix xfs zisofs zonefs
 
 " Options
 " -------
@@ -72,9 +72,13 @@ syn keyword fsOptionsYN y n
 syn keyword fsOptions01 0 1
 syn cluster fsOptionsCheckCluster contains=fsOptionsExt2Check,fsOptionsFatCheck
 syn keyword fsOptionsSize 512 1024 2048
-syn keyword fsOptionsGeneral async atime auto bind current defaults dev devgid devmode devmtime devuid dirsync exec force fstab kudzu loop mand move noatime noauto noclusterr noclusterw nodev nodevmtime nodiratime noexec nomand norelatime nosuid nosymfollow nouser owner rbind rdonly relatime remount ro rq rw suid suiddir supermount sw sync union update user users wxallowed xx nofail failok
+syn keyword fsOptionsGeneral async atime auto bind current defaults dev devgid devmode devmtime devuid dirsync exec force fstab kudzu loop managed mand move noatime noauto noclusterr noclusterw nodev nodevmtime nodiratime noexec nomand norelatime nosuid nosymfollow nouser owner pamconsole rbind rdonly relatime remount ro rq rw suid suiddir supermount sw sync union update user users wxallowed xx nofail failok lazytime
 syn match fsOptionsGeneral /_netdev/
 
+syn match fsOptionsKeywords contained /\<x-systemd\.\%(requires\|before\|after\|wanted-by\|required-by\|requires-mounts-for\|idle-timeout\|device-timeout\|mount-timeout\)=/ nextgroup=fsOptionsString
+syn match fsOptionsKeywords contained /\<x-systemd\.\%(device-bound\|automount\|makefs\|growfs\|rw-only\)/
+syn match fsOptionsKeywords contained /\<x-initrd\.mount/
+
 syn match fsOptionsKeywords contained /\<cache=/ nextgroup=fsOptionsCache
 syn keyword fsOptionsCache yes no none strict loose fscache mmap
 
--- a/runtime/syntax/hgcommit.vim
+++ b/runtime/syntax/hgcommit.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
-" Language:	hg (Mercurial) commit file
+" Language:	hg/sl (Mercurial / Sapling) commit file
 " Maintainer:	Ken Takata <kentkt at csc dot jp>
-" Last Change:	2012 Aug 23
-" Filenames:	hg-editor-*.txt
+"  		Max Coplan <mchcopl@gmail.com>
+" Last Change:	2022-12-08
 " License:	VIM License
 " URL:		https://github.com/k-takata/hg-vim
 
@@ -10,12 +10,15 @@ if exists("b:current_syntax")
   finish
 endif
 
-syn match hgcommitComment "^HG:.*$"             contains=@NoSpell
-syn match hgcommitUser    "^HG: user: \zs.*$"   contains=@NoSpell contained containedin=hgcommitComment
-syn match hgcommitBranch  "^HG: branch \zs.*$"  contains=@NoSpell contained containedin=hgcommitComment
-syn match hgcommitAdded   "^HG: \zsadded .*$"   contains=@NoSpell contained containedin=hgcommitComment
-syn match hgcommitChanged "^HG: \zschanged .*$" contains=@NoSpell contained containedin=hgcommitComment
-syn match hgcommitRemoved "^HG: \zsremoved .*$" contains=@NoSpell contained containedin=hgcommitComment
+syn match hgcommitComment "^\%(SL\|HG\): .*$"            contains=@NoSpell
+syn match hgcommitUser    "^\%(SL\|HG\): user: \zs.*$"   contains=@NoSpell contained containedin=hgcommitComment
+syn match hgcommitBranch  "^\%(SL\|HG\): branch \zs.*$"  contains=@NoSpell contained containedin=hgcommitComment
+syn match hgcommitAdded   "^\%(SL\|HG\): \zsadded .*$"   contains=@NoSpell contained containedin=hgcommitComment
+syn match hgcommitChanged "^\%(SL\|HG\): \zschanged .*$" contains=@NoSpell contained containedin=hgcommitComment
+syn match hgcommitRemoved "^\%(SL\|HG\): \zsremoved .*$" contains=@NoSpell contained containedin=hgcommitComment
+
+syn region hgcommitDiff start=/\%(^\(SL\|HG\): diff --\%(git\|cc\|combined\) \)\@=/ end=/^\%(diff --\|$\|@@\@!\|[^[:alnum:]\ +-]\S\@!\)\@=/ fold contains=@hgcommitDiff
+syn include @hgcommitDiff syntax/shared/hgcommitDiff.vim
 
 hi def link hgcommitComment Comment
 hi def link hgcommitUser    String
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/shared/hgcommitDiff.vim
@@ -0,0 +1,390 @@
+" Vim syntax file
+" Language:	Sapling / Mecurial Diff (context or unified)
+" Maintainer:	Max Coplan <mchcopl@gmail.com>
+"               Translations by Jakson Alves de Aquino.
+" Last Change:	2022-12-08
+" Copied from:	runtime/syntax/diff.vim
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+  finish
+endif
+scriptencoding utf-8
+
+syn match hgDiffOnly		"^\%(SL\|HG\): Only in .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Files .* and .* are identical$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Files .* and .* differ$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Binary files .* and .* differ$"
+syn match hgDiffIsA		"^\%(SL\|HG\): File .* is a .* while file .* is a .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ No newline at end of file .*"
+syn match hgDiffCommon		"^\%(SL\|HG\): Common subdirectories: .*"
+
+" Disable the translations by setting diff_translations to zero.
+if !exists("diff_translations") || diff_translations
+
+" ca
+syn match hgDiffOnly		"^\%(SL\|HG\): Només a .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Els fitxers .* i .* són idèntics$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Els fitxers .* i .* difereixen$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Els fitxers .* i .* difereixen$"
+syn match hgDiffIsA		"^\%(SL\|HG\): El fitxer .* és un .* mentre que el fitxer .* és un .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ No hi ha cap caràcter de salt de línia al final del fitxer"
+syn match hgDiffCommon		"^\%(SL\|HG\): Subdirectoris comuns: .* i .*"
+
+" cs
+syn match hgDiffOnly		"^\%(SL\|HG\): Pouze v .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Soubory .* a .* jsou identické$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Soubory .* a .* jsou různé$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Binární soubory .* a .* jsou rozdílné$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Soubory .* a .* jsou různé$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Soubor .* je .* pokud soubor .* je .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Chybí znak konce řádku na konci souboru"
+syn match hgDiffCommon		"^\%(SL\|HG\): SpoleÄné podadresáře: .* a .*"
+
+" da
+syn match hgDiffOnly		"^\%(SL\|HG\): Kun i .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Filerne .* og .* er identiske$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Filerne .* og .* er forskellige$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Binære filer .* og .* er forskellige$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Filen .* er en .* mens filen .* er en .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Intet linjeskift ved filafslutning"
+syn match hgDiffCommon		"^\%(SL\|HG\): Identiske underkataloger: .* og .*"
+
+" de
+syn match hgDiffOnly		"^\%(SL\|HG\): Nur in .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Dateien .* und .* sind identisch.$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Dateien .* und .* sind verschieden.$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Binärdateien .* and .* sind verschieden.$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Binärdateien .* und .* sind verschieden.$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Datei .* ist ein .* während Datei .* ein .* ist.$"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Kein Zeilenumbruch am Dateiende."
+syn match hgDiffCommon		"^\%(SL\|HG\): Gemeinsame Unterverzeichnisse: .* und .*.$"
+
+" el
+syn match hgDiffOnly		"^\%(SL\|HG\): Μόνο στο .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Τα αÏχεία .* καί .* είναι πανομοιότυπα$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Τα αÏχεία .* και .* διαφέÏουν$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Τα αÏχεία .* και .* διαφέÏουν$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Το αÏχείο .* είναι .* ενώ το αÏχείο .* είναι .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Δεν υπάÏχει χαÏακτήÏας νέας γÏαμμής στο τέλος του αÏχείου"
+syn match hgDiffCommon		"^\%(SL\|HG\): Οι υποκατάλογοι .* και .* είναι ταυτόσημοι$"
+
+" eo
+syn match hgDiffOnly		"^\%(SL\|HG\): Nur en .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Dosieroj .* kaj .* estas samaj$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Dosieroj .* kaj .* estas malsamaj$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Dosieroj .* kaj .* estas malsamaj$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Dosiero .* estas .*, dum dosiero .* estas .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Mankas linifino ĉe fino de dosiero"
+syn match hgDiffCommon		"^\%(SL\|HG\): Komunaj subdosierujoj: .* kaj .*"
+
+" es
+syn match hgDiffOnly		"^\%(SL\|HG\): Sólo en .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Los ficheros .* y .* son idénticos$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Los ficheros .* y .* son distintos$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Los ficheros binarios .* y .* son distintos$"
+syn match hgDiffIsA		"^\%(SL\|HG\): El fichero .* es un .* mientras que el .* es un .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ No hay ningún carácter de nueva línea al final del fichero"
+syn match hgDiffCommon		"^\%(SL\|HG\): Subdirectorios comunes: .* y .*"
+
+" fi
+syn match hgDiffOnly		"^\%(SL\|HG\): Vain hakemistossa .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Tiedostot .* ja .* ovat identtiset$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Tiedostot .* ja .* eroavat$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Binääritiedostot .* ja .* eroavat$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Tiedosto .* on .*, kun taas tiedosto .* on .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Ei rivinvaihtoa tiedoston lopussa"
+syn match hgDiffCommon		"^\%(SL\|HG\): Yhteiset alihakemistot: .* ja .*"
+
+" fr
+syn match hgDiffOnly		"^\%(SL\|HG\): Seulement dans .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Les fichiers .* et .* sont identiques.*"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Les fichiers .* et .* sont différents.*"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Les fichiers binaires .* et .* sont différents.*"
+syn match hgDiffIsA		"^\%(SL\|HG\): Le fichier .* est un .* alors que le fichier .* est un .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Pas de fin de ligne à la fin du fichier.*"
+syn match hgDiffCommon		"^\%(SL\|HG\): Les sous-répertoires .* et .* sont identiques.*"
+
+" ga
+syn match hgDiffOnly		"^\%(SL\|HG\): I .* amháin: .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Is comhionann iad na comhaid .* agus .*"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Tá difríocht idir na comhaid .* agus .*"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Tá difríocht idir na comhaid .* agus .*"
+syn match hgDiffIsA		"^\%(SL\|HG\): Tá comhad .* ina .* ach tá comhad .* ina .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Gan líne nua ag an chomhadchríoch"
+syn match hgDiffCommon		"^\%(SL\|HG\): Fochomhadlanna i gcoitianta: .* agus .*"
+
+" gl
+syn match hgDiffOnly		"^\%(SL\|HG\): Só en .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Os ficheiros .* e .* son idénticos$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Os ficheiros .* e .* son diferentes$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Os ficheiros binarios .* e .* son diferentes$"
+syn match hgDiffIsA		"^\%(SL\|HG\): O ficheiro .* é un .* mentres que o ficheiro .* é un .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Non hai un salto de liña na fin da liña"
+syn match hgDiffCommon		"^\%(SL\|HG\): Subdirectorios comúns: .* e .*"
+
+" he
+" ^\%(SL\|HG\): .* are expansive patterns for long lines, so disabled unless we can match
+" some specific hebrew chars
+if search('\%u05d5\|\%u05d1', 'nw', '', 100)
+  syn match hgDiffOnly		"^\%(SL\|HG\): .*-ב קר ×צמנ .*"
+  syn match hgDiffIdentical	"^\%(SL\|HG\): ××™×”×– ×× ×™×” .*-ו .* ×יצבקה$"
+  syn match hgDiffDiffer	"^\%(SL\|HG\): הזמ ×”×– ×ינוש `.*'-ו `.*' ×יצבקה$"
+  syn match hgDiffBDiffer	"^\%(SL\|HG\): הזמ ×”×– ×ינוש `.*'-ו `.*' ×יירניב ×יצבק$"
+  syn match hgDiffIsA		"^\%(SL\|HG\): .* .*-ל .* .* תוושהל ןתינ ×ל$"
+  syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ ץבוקה ףוסב השד.-הרוש ות רס."
+  syn match hgDiffCommon	"^\%(SL\|HG\): .*-ו .* :תוהז תויקית-תת$"
+endif
+
+" hr
+syn match hgDiffOnly		"^\%(SL\|HG\): Samo u .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Datoteke .* i .* su identiÄne$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Datoteke .* i .* se razlikuju$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Binarne datoteke .* i .* se razlikuju$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Datoteka .* je .*, a datoteka .* je .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Nema novog retka na kraju datoteke"
+syn match hgDiffCommon		"^\%(SL\|HG\): UobiÄajeni poddirektoriji: .* i .*"
+
+" hu
+syn match hgDiffOnly		"^\%(SL\|HG\): Csak .* -ben: .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): .* és .* fájlok azonosak$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): A(z) .* és a(z) .* fájlok különböznek$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): A(z) .* és a(z) .* fájlok különböznek$"
+syn match hgDiffIsA		"^\%(SL\|HG\): A(z) .* fájl egy .*, viszont a(z) .* fájl egy .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Nincs újsor a fájl végén"
+syn match hgDiffCommon		"^\%(SL\|HG\): Közös alkönyvtárak: .* és .*"
+
+" id
+syn match hgDiffOnly		"^\%(SL\|HG\): Hanya dalam .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): File .* dan .* identik$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Berkas .* dan .* berbeda$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): File biner .* dan .* berbeda$"
+syn match hgDiffIsA		"^\%(SL\|HG\): File .* adalah .* sementara file .* adalah .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Tidak ada baris-baru di akhir dari berkas"
+syn match hgDiffCommon		"^\%(SL\|HG\): Subdirektori sama: .* dan .*"
+
+" it
+syn match hgDiffOnly		"^\%(SL\|HG\): Solo in .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): I file .* e .* sono identici$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): I file .* e .* sono diversi$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): I file .* e .* sono diversi$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): I file binari .* e .* sono diversi$"
+syn match hgDiffIsA		"^\%(SL\|HG\): File .* è un .* mentre file .* è un .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Manca newline alla fine del file"
+syn match hgDiffCommon		"^\%(SL\|HG\): Sottodirectory in comune: .* e .*"
+
+" ja
+syn match hgDiffOnly		"^\%(SL\|HG\): .*ã ã‘ã«ç™ºè¦‹: .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): ファイル.*ã¨.*ã¯åŒä¸€$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): ファイル.*ã¨.*ã¯é•ã„ã¾ã™$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): ãƒã‚¤ãƒŠãƒªãƒ¼ãƒ»ãƒ•ã‚¡ã‚¤ãƒ«.*ã¨.*ã¯é•ã„ã¾ã™$"
+syn match hgDiffIsA		"^\%(SL\|HG\): ファイル.*ã¯.*ã€ãƒ•ã‚¡ã‚¤ãƒ«.*ã¯.*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ ファイル末尾ã«æ”¹è¡ŒãŒã‚ã‚Šã¾ã›ã‚“"
+syn match hgDiffCommon		"^\%(SL\|HG\): 共通ã®ä¸‹ä½ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ¼: .*ã¨.*"
+
+" ja DiffUtils 3.3
+syn match hgDiffOnly		"^\%(SL\|HG\): .* ã®ã¿ã«å­˜åœ¨: .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): ファイル .* 㨠.* ã¯åŒä¸€ã§ã™$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): ファイル .* 㨠.* ã¯ç•°ãªã‚Šã¾ã™$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): ãƒã‚¤ãƒŠãƒªãƒ¼ãƒ•ã‚¡ã‚¤ãƒ« .* ã¨.* ã¯ç•°ãªã‚Šã¾ã™$"
+syn match hgDiffIsA		"^\%(SL\|HG\): ファイル .* 㯠.* ã§ã™ã€‚一方ã€ãƒ•ã‚¡ã‚¤ãƒ« .* 㯠.* ã§ã™$"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ ファイル末尾ã«æ”¹è¡ŒãŒã‚ã‚Šã¾ã›ã‚“"
+syn match hgDiffCommon		"^\%(SL\|HG\): 共通ã®ã‚µãƒ–ディレクトリー: .* 㨠.*"
+
+" lv
+syn match hgDiffOnly		"^\%(SL\|HG\): Tikai iekš .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Fails .* un .* ir identiski$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Faili .* un .* atšķiras$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Faili .* un .* atšķiras$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): BinÄrie faili .* un .* atÅ¡Ä·iras$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Fails .* ir .* kamēr fails .* ir .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Nav jaunu rindu faila beigÄs"
+syn match hgDiffCommon		"^\%(SL\|HG\): KopÄ“jÄs apakÅ¡direktorijas: .* un .*"
+
+" ms
+syn match hgDiffOnly		"^\%(SL\|HG\): Hanya dalam .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Fail .* dan .* adalah serupa$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Fail .* dan .* berbeza$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Fail .* dan .* berbeza$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Fail .* adalah .* manakala fail .* adalah .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Tiada baris baru pada penghujung fail"
+syn match hgDiffCommon		"^\%(SL\|HG\): Subdirektori umum: .* dan .*"
+
+" nl
+syn match hgDiffOnly		"^\%(SL\|HG\): Alleen in .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Bestanden .* en .* zijn identiek$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Bestanden .* en .* zijn verschillend$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Bestanden .* en .* zijn verschillend$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Binaire bestanden .* en .* zijn verschillend$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Bestand .* is een .* terwijl bestand .* een .* is$"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Geen regeleindeteken (LF) aan einde van bestand"
+syn match hgDiffCommon		"^\%(SL\|HG\): Gemeenschappelijke submappen: .* en .*"
+
+" pl
+syn match hgDiffOnly		"^\%(SL\|HG\): Tylko w .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Pliki .* i .* sÄ… identyczne$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Pliki .* i .* różnią się$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Pliki .* i .* różnią się$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Binarne pliki .* i .* różnią się$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Plik .* jest .*, podczas gdy plik .* jest .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Brak znaku nowej linii na końcu pliku"
+syn match hgDiffCommon		"^\%(SL\|HG\): Wspólne podkatalogi: .* i .*"
+
+" pt_BR
+syn match hgDiffOnly		"^\%(SL\|HG\): Somente em .*"
+syn match hgDiffOnly		"^\%(SL\|HG\): Apenas em .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Os aquivos .* e .* são idênticos$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Os arquivos .* e .* são diferentes$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Os arquivos binários .* e .* são diferentes$"
+syn match hgDiffIsA		"^\%(SL\|HG\): O arquivo .* é .* enquanto o arquivo .* é .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Falta o caracter nova linha no final do arquivo"
+syn match hgDiffCommon		"^\%(SL\|HG\): Subdiretórios idênticos: .* e .*"
+
+" ro
+syn match hgDiffOnly		"^\%(SL\|HG\): Doar în .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): FiÅŸierele .* ÅŸi .* sunt identice$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Fişierele .* şi .* diferă$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Fişierele binare .* şi .* diferă$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Fişierul .* este un .* pe când fişierul .* este un .*.$"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Nici un element de linie nouă la sfârşitul fişierului"
+syn match hgDiffCommon		"^\%(SL\|HG\): Subdirectoare comune: .* ÅŸi .*.$"
+
+" ru
+syn match hgDiffOnly		"^\%(SL\|HG\): Только в .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Файлы .* и .* идентичны$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Файлы .* и .* различаютÑÑ$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Файлы .* и .* различаютÑÑ$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Файл .* Ñто .*, тогда как файл .* -- .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Ð’ конце файла нет новой Ñтроки"
+syn match hgDiffCommon		"^\%(SL\|HG\): Общие подкаталоги: .* и .*"
+
+" sr
+syn match hgDiffOnly		"^\%(SL\|HG\): Само у .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Датотеке „.*“ и „.*“ Ñе подударају$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Датотеке .* и .* различите$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Бинарне датотеке .* и .* различите$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Датотека „.*“ је „.*“ док је датотека „.*“ „.*“$"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Без новог реда на крају датотеке"
+syn match hgDiffCommon		"^\%(SL\|HG\): Заједнички поддиректоријуми: .* и .*"
+
+" sv
+syn match hgDiffOnly		"^\%(SL\|HG\): Endast i .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Filerna .* och .* är lika$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Filerna .* och .* skiljer$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Filerna .* och .* skiljer$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Fil .* är en .* medan fil .* är en .*"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): De binära filerna .* och .* skiljer$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Filen .* är .* medan filen .* är .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Ingen nyrad vid filslut"
+syn match hgDiffCommon		"^\%(SL\|HG\): Lika underkataloger: .* och .*"
+
+" tr
+syn match hgDiffOnly		"^\%(SL\|HG\): Yalnızca .*'da: .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): .* ve .* dosyaları birbirinin aynı$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): .* ve .* dosyaları birbirinden farklı$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): .* ve .* dosyaları birbirinden farklı$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): İkili .* ve .* birbirinden farklı$"
+syn match hgDiffIsA		"^\%(SL\|HG\): .* dosyası, bir .*, halbuki .* dosyası bir .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Dosya sonunda yenisatır yok."
+syn match hgDiffCommon		"^\%(SL\|HG\): Ortak alt dizinler: .* ve .*"
+
+" uk
+syn match hgDiffOnly		"^\%(SL\|HG\): Лише у .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Файли .* та .* ідентичні$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Файли .* та .* відрізнÑÑŽÑ‚ÑŒÑÑ$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Файли .* та .* відрізнÑÑŽÑ‚ÑŒÑÑ$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Двійкові файли .* та .* відрізнÑÑŽÑ‚ÑŒÑÑ$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Файл .* це .*, тоді Ñк файл .* -- .*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Ðаприкінці файлу немає нового Ñ€Ñдка"
+syn match hgDiffCommon		"^\%(SL\|HG\): Спільні підкаталоги: .* та .*"
+
+" vi
+syn match hgDiffOnly		"^\%(SL\|HG\): Chỉ trong .*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Hai tập tin .* và .* là bằng nhau.$"
+syn match hgDiffIdentical	"^\%(SL\|HG\): Cả .* và .* là cùng một tập tin$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): Hai tập tin .* và .* là khác nhau.$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Hai tập tin nhị phân .* và .* khác nhau$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Tập tin .* là một .* trong khi tập tin .* là một .*.$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): Hai tập tin .* và .* là khác nhau.$"
+syn match hgDiffIsA		"^\%(SL\|HG\): Tập tin .* là một .* còn tập tin .* là một .*.$"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ Không có ký tự dòng mới tại kêt thức tập tin."
+syn match hgDiffCommon		"^\%(SL\|HG\): Thư mục con chung: .* và .*"
+
+" zh_CN
+syn match hgDiffOnly		"^\%(SL\|HG\): åªåœ¨ .* 存在:.*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): 檔案 .* å’Œ .* 相åŒ$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): 文件 .* å’Œ .* ä¸åŒ$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): 文件 .* å’Œ .* ä¸åŒ$"
+syn match hgDiffIsA		"^\%(SL\|HG\): 文件 .* 是.*而文件 .* 是.*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ 文件尾没有 newline 字符"
+syn match hgDiffCommon		"^\%(SL\|HG\): .* å’Œ .* 有共åŒçš„å­ç›®å½•$"
+
+" zh_TW
+syn match hgDiffOnly		"^\%(SL\|HG\): åªåœ¨ .* 存在:.*"
+syn match hgDiffIdentical	"^\%(SL\|HG\): 檔案 .* å’Œ .* 相åŒ$"
+syn match hgDiffDiffer		"^\%(SL\|HG\): 檔案 .* 與 .* ä¸åŒ$"
+syn match hgDiffBDiffer		"^\%(SL\|HG\): 二元碼檔 .* 與 .* ä¸åŒ$"
+syn match hgDiffIsA		"^\%(SL\|HG\): 檔案 .* 是.*而檔案 .* 是.*"
+syn match hgDiffNoEOL		"^\%(SL\|HG\): \\ 檔案末沒有 newline 字元"
+syn match hgDiffCommon		"^\%(SL\|HG\): .* å’Œ .* 有共åŒçš„副目錄$"
+
+endif
+
+
+syn match hgDiffRemoved		"^\%(SL\|HG\): -.*"
+syn match hgDiffRemoved		"^\%(SL\|HG\): <.*"
+syn match hgDiffAdded		"^\%(SL\|HG\): +.*"
+syn match hgDiffAdded		"^\%(SL\|HG\): >.*"
+syn match hgDiffChanged		"^\%(SL\|HG\): ! .*"
+
+syn match hgDiffSubname		" @@..*"ms=s+3 contained
+syn match hgDiffLine		"^\%(SL\|HG\): @.*" contains=hgDiffSubname
+syn match hgDiffLine		"^\%(SL\|HG\): \<\d\+\>.*"
+syn match hgDiffLine		"^\%(SL\|HG\): \*\*\*\*.*"
+syn match hgDiffLine		"^\%(SL\|HG\): ---$"
+
+" Some versions of diff have lines like "#c#" and "#d#" (where # is a number)
+syn match hgDiffLine		"^\%(SL\|HG\): \d\+\(,\d\+\)\=[cda]\d\+\>.*"
+
+syn match hgDiffFile		"^\%(SL\|HG\): diff\>.*"
+syn match hgDiffFile		"^\%(SL\|HG\): Index: .*"
+syn match hgDiffFile		"^\%(SL\|HG\): ==== .*"
+
+if search('^\%(SL\|HG\): @@ -\S\+ +\S\+ @@', 'nw', '', 100)
+  " unified
+  syn match hgDiffOldFile	"^\%(SL\|HG\): --- .*"
+  syn match hgDiffNewFile	"^\%(SL\|HG\): +++ .*"
+else
+  " context / old style
+  syn match hgDiffOldFile	"^\%(SL\|HG\): \*\*\* .*"
+  syn match hgDiffNewFile	"^\%(SL\|HG\): --- .*"
+endif
+
+" Used by git
+syn match hgDiffIndexLine	"^\%(SL\|HG\): index \x\x\x\x.*"
+
+syn match hgDiffComment		"^\%(SL\|HG\): #.*"
+
+" Define the default highlighting.
+" Only used when an item doesn't have highlighting yet
+hi def link hgDiffOldFile	hgDiffFile
+hi def link hgDiffNewFile	hgDiffFile
+hi def link hgDiffIndexLine	PreProc
+hi def link hgDiffFile		Type
+hi def link hgDiffOnly		Constant
+hi def link hgDiffIdentical	Constant
+hi def link hgDiffDiffer	Constant
+hi def link hgDiffBDiffer	Constant
+hi def link hgDiffIsA		Constant
+hi def link hgDiffNoEOL		Constant
+hi def link hgDiffCommon	Constant
+hi def link hgDiffRemoved	Special
+hi def link hgDiffChanged	PreProc
+hi def link hgDiffAdded		Identifier
+hi def link hgDiffLine		Statement
+hi def link hgDiffSubname	PreProc
+hi def link hgDiffComment	Comment
+
+let b:current_syntax = "hgcommitDiff"
+
+" vim: ts=8 sw=2
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	Vim 9.0 script
 " Maintainer:	Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
-" Last Change:	December 06, 2022
-" Version:	9.0-14
+" Last Change:	December 20, 2022
+" Version:	9.0-17
 " URL:	http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM
 " Automatically generated keyword lists: {{{1
 
@@ -19,24 +19,24 @@ syn keyword vimTodo contained	COMBAK	FIX
 syn cluster vimCommentGroup	contains=vimTodo,@Spell
 
 " regular vim commands {{{2
-syn keyword vimCommand contained	a ar[gs] argg[lobal] b[uffer] bf[irst] br[ewind] bufdo c[hange] caddf[ile] cbel[ow] ce[nter] cgetb[uffer] chi[story] cmapc[lear] col[der] conf[irm] cr[ewind] cw[indow] delc[ommand] deletp di[splay] diffs[plit] dl dr[op] ec el[se] endfun eval f[ile] fina[lly] foldd[oopen] function h[elp] hi iabc[lear] import isp[lit] keepa l[ist] laf[ter] lbel[ow] lcscope lf[ile] lgr[ep] lli[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkvie[w] nbc[lose] noh[lsearch] ol[dfiles] pa[ckadd] po[p] prof[ile] pta[g] ptr[ewind] py3f[ile] pythonx quita[ll] redraws[tatus] rew[ind] rubyf[ile] sIg sa[rgument] sba[ll] sbr[ewind] scl scscope sfir[st] sgl sic sin sm[ap] snoreme spelld[ump] spellw[rong] srg sta[g] sts[elect] sus[pend] syncbind tabN[ext] tabl[ast] tabr[ewind] tcld[o] tj[ump] tlu tno[remap] tu[nmenu] undol[ist] v vie[w] vne[w] win[size] wq xmapc[lear] xr[estore]
-syn keyword vimCommand contained	ab arga[dd] argl[ocal] ba[ll] bl[ast] brea[k] buffers ca caf[ter] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cn[ext] colo[rscheme] cons[t] cs d[elete] delel delfunction dif[fupdate] difft[his] dli[st] ds[earch] echoc[onsole] elsei[f] endfunc ex files fini[sh] folddoc[losed] go[to] ha[rdcopy] hid[e] if in iuna[bbrev] keepalt la[st] lan[guage] lbo[ttom] ld[o] lfdo lgrepa[dd] lma lo[adview] lop[en] lua m[ove] mes[sages] mod[e] nbs[tart] nor omapc[lear] packl[oadall] popu[p] profd[el] ptf[irst] pts[elect] py3f[ile] pyx r[ead] redrawt[abline] ri[ght] rundo sIl sal[l] sbf[irst] sc scp se[t] sg sgn sie sip sme snoremenu spelli[nfo] spr[evious] sri star[tinsert] substitutepattern sv[iew] syntime tabc[lose] tabm[ove] tabs tclf[ile] tl[ast] tlunmenu to[pleft] tunma[p] unh[ide] var vim9[cmd] vs[plit] winc[md] wqa[ll] xme xunme
-syn keyword vimCommand contained	abc[lear] argd[elete] argu[ment] bad[d] bm[odified] breaka[dd] bun[load] cabc[lear] call cc cf[ile] changes cla[st] cnew[er] com cope[n] cscope debug delep dell diffg[et] dig[raphs] do dsp[lit] echoe[rr] em[enu] endfunction exi[t] filet fir[st] foldo[pen] gr[ep] helpc[lose] his[tory] ij[ump] inor j[oin] keepj[umps] lab[ove] lat lc[d] le[ft] lfir[st] lh[elpgrep] lmak[e] loadk lp[revious] luado ma[rk] mk[exrc] mz[scheme] new nore on[ly] pc[lose] pp[op] promptf[ind] ptj[ump] pu[t] py[thon] pyxdo rec[over] reg[isters] rightb[elow] rv[iminfo] sIn san[dbox] sbl[ast] scI scr[iptnames] setf[iletype] sgI sgp sig sir smenu so[urce] spellr[are] sr srl startg[replace] substituterepeat sw[apname] t tabd[o] tabn[ext] tags te[aroff] tlm tm[enu] tp[revious] type unl ve[rsion] vim9s[cript] wN[ext] windo wundo xmenu xunmenu
-syn keyword vimCommand contained	abo[veleft] argded[upe] as[cii] balt bn[ext] breakd[el] bw[ipeout] cabo[ve] cat[ch] ccl[ose] cfdo chd[ir] class cnf[ile] comc[lear] cp[revious] cstag debugg[reedy] deletel delm[arks] diffo[ff] dir doau e[dit] echom[sg] en[dif] endt[ry] exp filetype fix[del] for grepa[dd] helpf[ind] hor[izontal] il[ist] interface ju[mps] keepp[atterns] lad[dexpr] later lch[dir] lefta[bove] lg[etfile] lhi[story] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mks[ession] mzf[ile] nmapc[lear] nos[wapfile] opt[ions] pe[rl] pre[serve] promptr[epl] ptl[ast] pw[d] pydo pyxfile red[o] res[ize] ru[ntime] sI sIp sav[eas] sbm[odified] sce scripte[ncoding] setg[lobal] sgc sgr sign sl[eep] smile sor[t] spellr[epall] srI srn startr[eplace] sun[hide] sy tN[ext] tabe[dit] tabnew tc[d] ter[minal] tlmenu tma[p] tr[ewind] u[ndo] unlo[ckvar] verb[ose] vim[grep] w[rite] winp[os] wv[iminfo] xnoreme xwininfo
-syn keyword vimCommand contained	addd argdo au bd[elete] bo[tright] breakl[ist] cN[ext] cad[dbuffer] cb[uffer] cd cfir[st] che[ckpath] cle[arjumps] cnor comp[iler] cpf[ile] cun def deletep delp diffp[atch] disa[ssemble] doaut ea echon enddef endw[hile] export filt[er] fo[ld] fun gui helpg[rep] i imapc[lear] intro k lN[ext] laddb[uffer] lb[uffer] lcl[ose] leg[acy] lgetb[uffer] ll lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mksp[ell] n[ext] noa nu[mber] ownsyntax ped[it] prev[ious] ps[earch] ptn[ext] py3 pyf[ile] q[uit] redi[r] ret[ab] rub[y] sIc sIr sbN[ext] sbn[ext] scg scriptv[ersion] setl[ocal] sge sh[ell] sil[ent] sla[st] sn[ext] sp[lit] spellr[rare] src srp stj[ump] sunme syn ta[g] tabf[ind] tabo[nly] tch[dir] tf[irst] tln tmapc[lear] try una[bbreviate] uns[ilent] vert[ical] vimgrepa[dd] wa[ll] wn[ext] x[it] xnoremenu y[ank]
-syn keyword vimCommand contained	al[l] arge[dit] bN[ext] bel[owright] bp[revious] bro[wse] cNf[ile] cadde[xpr] cbe[fore] cdo cg[etfile] checkt[ime] clo[se] co[py] con[tinue] cq[uit] cuna[bbrev] defc[ompile] deletl dep diffpu[t] dj[ump] dp earlier echow[indow] endfo[r] ene[w] exu[sage] fin[d] foldc[lose] func gvim helpt[ags] ia imp is[earch] kee[pmarks] lNf[ile] laddf[ile] lbe[fore] lcs lex[pr] lgete[xpr] lla[st] lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mkv[imrc] nb[key] noautocmd o[pen] p[rint] perld[o] pro ptN[ext] ptp[revious] py3do python3 qa[ll] redr[aw] return rubyd[o] sIe sN[ext] sb[uffer] sbp[revious] sci scs sf[ind] sgi si sim[alt] sm[agic] sno[magic] spe[llgood] spellu[ndo] sre[wind] st[op] stopi[nsert] sunmenu sync tab tabfir[st] tabp[revious] tcl th[row] tlnoremenu tn[ext] ts[elect] undoj[oin] up[date] vi[sual] viu[sage] wh[ile] wp[revious] xa[ll] xprop z[^.=]
+syn keyword vimCommand contained	a ar[gs] argg[lobal] b[uffer] bf[irst] br[ewind] bufdo c[hange] caddf[ile] cbel[ow] ce[nter] cgetb[uffer] chi[story] cmapc[lear] col[der] conf[irm] cr[ewind] cw[indow] defer deletl dep diffpu[t] dj[ump] dp earlier echow[indow] endf[unction] ex files fini[sh] folddoc[losed] grepa[dd] helpf[ind] hor[izontal] il[ist] interface ju[mps] keepp[atterns] lad[dexpr] later lch[dir] lefta[bove] lg[etfile] lhi[story] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mks[ession] mzf[ile] nmapc[lear] nos[wapfile] opt[ions] pe[rl] pre[serve] promptr[epl] ptl[ast] pw[d] pydo pyxfile red[o] res[ize] ru[ntime] sI sIp sav[eas] sbm[odified] sce scripte[ncoding] setg[lobal] sgc sgr sign sl[eep] smile sor[t] spellr[epall] srI srn startr[eplace] sun[hide] sy tN[ext] tabe[dit] tabnew tc[d] ter[minal] tlmenu tma[p] tr[ewind] u[ndo] unlo[ckvar] verb[ose] vim[grep] w[rite] winp[os] wv[iminfo] xmenu xunme
+syn keyword vimCommand contained	ab arga[dd] argl[ocal] ba[ll] bl[ast] brea[k] buffers ca caf[ter] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cn[ext] colo[rscheme] cons[t] cs d[elete] delc[ommand] deletp di[splay] diffs[plit] dl dr[op] ec el[se] endfo[r] exi[t] filet fir[st] foldo[pen] gui helpg[rep] i imapc[lear] intro k lN[ext] laddb[uffer] lb[uffer] lcl[ose] leg[acy] lgetb[uffer] ll lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mksp[ell] n[ext] noa nu[mber] ownsyntax ped[it] prev[ious] ps[earch] ptn[ext] py3 pyf[ile] q[uit] redi[r] ret[ab] rub[y] sIc sIr sbN[ext] sbn[ext] scg scriptv[ersion] setl[ocal] sge sh[ell] sil[ent] sla[st] sn[ext] sp[lit] spellr[rare] src srp stj[ump] sunme syn ta[g] tabf[ind] tabo[nly] tch[dir] tf[irst] tln tmapc[lear] try una[bbreviate] uns[ilent] vert[ical] vimgrepa[dd] wa[ll] wn[ext] x[it] xnoreme xunmenu
+syn keyword vimCommand contained	abc[lear] argd[elete] argu[ment] bad[d] bm[odified] breaka[dd] bun[load] cabc[lear] cal[l] cc cf[ile] changes cla[st] cnew[er] com cope[n] cscope debug delel delf[unction] dif[fupdate] difft[his] dli[st] ds[earch] echoc[onsole] elsei[f] endt[ry] exp filetype fix[del] for gvim helpt[ags] ia imp is[earch] kee[pmarks] lNf[ile] laddf[ile] lbe[fore] lcs lex[pr] lgete[xpr] lla[st] lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mkv[imrc] nb[key] noautocmd o[pen] p[rint] perld[o] pro ptN[ext] ptp[revious] py3do python3 qa[ll] redr[aw] retu[rn] rubyd[o] sIe sN[ext] sb[uffer] sbp[revious] sci scs sf[ind] sgi si sim[alt] sm[agic] sno[magic] spe[llgood] spellu[ndo] sre[wind] st[op] stopi[nsert] sunmenu sync tab tabfir[st] tabp[revious] tcl th[row] tlnoremenu tn[ext] ts[elect] undoj[oin] up[date] vi[sual] viu[sage] wh[ile] wp[revious] xa[ll] xnoremenu xwininfo
+syn keyword vimCommand contained	abo[veleft] argded[upe] as[cii] balt bn[ext] breakd[el] bw[ipeout] cabo[ve] cat[ch] ccl[ose] cfdo chd[ir] class cnf[ile] comc[lear] cp[revious] cstag debugg[reedy] delep dell diffg[et] dig[raphs] do dsp[lit] echoe[rr] em[enu] endw[hile] export filt[er] fo[ld] fu[nction] h[elp] hi iabc[lear] import isp[lit] keepa l[ist] laf[ter] lbel[ow] lcscope lf[ile] lgr[ep] lli[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkvie[w] nbc[lose] noh[lsearch] ol[dfiles] pa[ckadd] po[p] prof[ile] pta[g] ptr[ewind] py3f[ile] pythonx quita[ll] redraws[tatus] rew[ind] rubyf[ile] sIg sa[rgument] sba[ll] sbr[ewind] scl scscope sfir[st] sgl sic sin sm[ap] snoreme spelld[ump] spellw[rong] srg sta[g] sts[elect] sus[pend] syncbind tabN[ext] tabl[ast] tabr[ewind] tcld[o] tj[ump] tlu tno[remap] tu[nmenu] undol[ist] v vie[w] vne[w] win[size] wq xmapc[lear] xprop y[ank]
+syn keyword vimCommand contained	addd argdo au bd[elete] bo[tright] breakl[ist] cN[ext] cad[dbuffer] cb[uffer] cd cfir[st] che[ckpath] cle[arjumps] cnor comp[iler] cpf[ile] cun def deletel delm[arks] diffo[ff] dir doau e[dit] echom[sg] en[dif] ene[w] exu[sage] fin[d] foldc[lose] go[to] ha[rdcopy] hid[e] if in iuna[bbrev] keepalt la[st] lan[guage] lbo[ttom] ld[o] lfdo lgrepa[dd] lma lo[adview] lop[en] lua m[ove] mes[sages] mod[e] nbs[tart] nor omapc[lear] packl[oadall] popu[p] profd[el] ptf[irst] pts[elect] py3f[ile] pyx r[ead] redrawt[abline] ri[ght] rundo sIl sal[l] sbf[irst] sc scp se[t] sg sgn sie sip sme snoremenu spelli[nfo] spr[evious] sri star[tinsert] substitutepattern sv[iew] syntime tabc[lose] tabm[ove] tabs tclf[ile] tl[ast] tlunmenu to[pleft] tunma[p] unh[ide] var vim9[cmd] vs[plit] winc[md] wqa[ll] xme xr[estore] z[^.=]
+syn keyword vimCommand contained	al[l] arge[dit] bN[ext] bel[owright] bp[revious] bro[wse] cNf[ile] cadde[xpr] cbe[fore] cdo cg[etfile] checkt[ime] clo[se] co[py] con[tinue] cq[uit] cuna[bbrev] defc[ompile] deletep delp diffp[atch] disa[ssemble] doaut ea echon enddef eval f[ile] fina[lly] foldd[oopen] gr[ep] helpc[lose] his[tory] ij[ump] inor j[oin] keepj[umps] lab[ove] lat lc[d] le[ft] lfir[st] lh[elpgrep] lmak[e] loadk lp[revious] luado ma[rk] mk[exrc] mz[scheme] new nore on[ly] pc[lose] pp[op] promptf[ind] ptj[ump] pu[t] py[thon] pyxdo rec[over] reg[isters] rightb[elow] rv[iminfo] sIn san[dbox] sbl[ast] scI scr[iptnames] setf[iletype] sgI sgp sig sir smenu so[urce] spellr[are] sr srl startg[replace] substituterepeat sw[apname] t tabd[o] tabn[ext] tags te[aroff] tlm tm[enu] tp[revious] type unl ve[rsion] vim9s[cript] wN[ext] windo wundo
 syn match   vimCommand contained	"\<z[-+^.=]\=\>"
 syn keyword vimStdPlugin contained	Arguments Asm Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man N[ext] Over P[rint] Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Until Winbar XMLent XMLns
 
 " vimOptions are caught only when contained in a vimSet {{{2
-syn keyword vimOption contained	acd ambw arshape aw backupskip beval bk bri bufhidden cdh ci cinsd cms commentstring conceallevel cpt cscopetagorder csto cursorlineopt dg dir ed enc equalprg expandtab fdls fex fileignorecase fml foldlevel formatexpr gcr gli guifont guitabtooltip hidden hlg imactivatefunc imi inc inex isident keymap langmap linebreak lm lsp makeencoding maxmem mh mmp more mousemoveevent mzq numberwidth opfunc patchexpr pfn pp printfont pumwidth pythonthreehome re restorescreen ro rulerformat scl scs sft shellslash shortmess shq sm sn spellfile splitkeep ssl stmp swapsync synmaxcol tagcase tbi termbidi textauto thesaurusfunc tl ts ttybuiltin tws undodir varsofttabstop vfile virtualedit warn wfh wildchar wim winminheight wmh write
-syn keyword vimOption contained	ai anti asd awa balloondelay bevalterm bkc briopt buflisted cdhome cin cinw co compatible confirm crb cscopeverbose csverb cwh dict directory edcompatible encoding errorbells exrc fdm ff filetype fmr foldlevelstart formatlistpat gd go guifontset helpfile highlight hls imactivatekey iminsert include inf isk keymodel langmenu lines lmap luadll makeprg maxmempattern mis mmt mouse mouses mzquantum nuw osfiletype patchmode ph preserveindent printheader pvh pyx readonly revins rop runtimepath scr sect sh shelltemp shortname si smartcase so spelllang splitright ssop sts swb syntax tagfunc tbidi termencoding textmode tildeop tm tsl ttyfast twsl undofile vartabstop vi visualbell wb wfw wildcharm winaltkeys winminwidth wmnu writeany
-syn keyword vimOption contained	akm antialias autochdir background ballooneval bex bl brk buftype cdpath cindent cinwords cocu complete copyindent cryptmethod csl cuc debug dictionary display ef endoffile errorfile fcl fdn ffs fillchars fo foldmarker formatoptions gdefault gp guifontwide helpheight history hlsearch imaf ims includeexpr infercase iskeyword keyprotocol langnoremap linespace lnr lw mat maxmemtot mkspellmem mod mousef mouseshape mzschemedll odev pa path pheader previewheight printmbcharset pvp pyxversion redrawtime ri rs sb scroll sections shcf shelltype showbreak sidescroll smartindent softtabstop spelloptions spo st su swf ta taglength tbis termguicolors textwidth timeout to tsr ttym twt undolevels vb viewdir vop wc wh wildignore wincolor winptydll wmw writebackup
-syn keyword vimOption contained	al ar autoindent backspace balloonevalterm bexpr bo browsedir casemap cedit cink clipboard cole completefunc cot cscopepathcomp cspc cul deco diff dy efm endofline errorformat fcs fdo fic fixendofline foldclose foldmethod formatprg gfm grepformat guiheadroom helplang hk ic imak imsearch incsearch insertmode isp keywordprg langremap lisp loadplugins lz matchpairs mco ml modeline mousefocus mouset mzschemegcdll oft packpath pdev pi previewpopup printmbfont pvw qe regexpengine rightleft rtp sbo scrollbind secure shell shellxescape showcmd sidescrolloff smarttab sol spellsuggest spr sta sua switchbuf tabline tagrelative tbs termwinkey tf timeoutlen toolbar tsrfu ttymouse tx undoreload vbs viewoptions vsts wcm whichwrap wildignorecase window winwidth wop writedelay
-syn keyword vimOption contained	aleph arab autoread backup balloonexpr bg bomb bs cb cf cinkeys cm colorcolumn completeopt cp cscopeprg csprg culopt def diffexpr ea ei eof esckeys fdc fdt fileencoding fixeol foldcolumn foldminlines fp gfn grepprg guiligatures hf hkmap icon imc imsf inde is isprint km laststatus lispoptions lop ma matchtime mef mle modelineexpr mousehide mousetime nf ofu para penc pm previewwindow printoptions pw qftf relativenumber rightleftcmd ru sbr scrollfocus sel shellcmdflag shellxquote showfulltag signcolumn smc sp spf sps stal suffixes sws tabpagemax tags tc termwinscroll tfu title toolbariconsize ttimeout ttyscroll uc updatecount vdir vif vts wcr wi wildmenu winfixheight wiv wrap ws
-syn keyword vimOption contained	allowrevins arabic autoshelldir backupcopy bdir bh breakat bsdir cc cfu cino cmdheight columns completepopup cpo cscopequickfix csqf cursorbind define diffopt ead ek eol et fde fen fileencodings fk foldenable foldnestmax fs gfs gtl guioptions hh hkmapp iconstring imcmdline imst indentexpr isf joinspaces kmp lazyredraw lispwords lpl macatsui maxcombine menc mls modelines mousem mp nrformats omnifunc paragraphs perldll pmbcs printdevice prompt pythondll quickfixtextfunc remap rl rubydll sc scrolljump selection shellpipe shiftround showmatch siso smd spc spk sr startofline suffixesadd sxe tabstop tagstack tcldll termwinsize tgc titlelen top ttimeoutlen ttytype udf updatetime ve viminfo wa wd wic wildmode winfixwidth wiw wrapmargin ww
-syn keyword vimOption contained	altkeymap arabicshape autowrite backupdir bdlay bin breakindent bsk ccv ch cinoptions cmdwinheight com completeslash cpoptions cscoperelative csre cursorcolumn delcombine digraph eadirection emo ep eventignore fdi fenc fileformat fkmap foldexpr foldopen fsync gfw gtt guipty hi hkp ignorecase imd imstatusfunc indentkeys isfname js kp lbr list lrm magic maxfuncdepth menuitems mm modifiable mousemev mps nu opendevice paste pex pmbfn printencoding pt pythonhome quoteescape renderoptions rlc ruf scb scrolloff selectmode shellquote shiftwidth showmode sj smoothscroll spell spl srr statusline sw sxq tag tal tenc termwintype tgst titleold tpm ttm tw udir ur verbose viminfofile wak weirdinvert wig wildoptions winheight wm wrapscan xtermcodes
-syn keyword vimOption contained	ambiwidth ari autowriteall backupext belloff binary breakindentopt bt cd charconvert cinscopedecls cmp comments concealcursor cpp cscopetag cst cursorline dex dip eb emoji equalalways ex fdl fencs fileformats flp foldignore foldtext ft ghr guicursor guitablabel hid hl im imdisable imstyle indk isi key kpc lcs listchars ls makeef maxmapdepth mfd mmd modified mousemodel msm number operatorfunc pastetoggle pexpr popt printexpr pumheight pythonthreedll rdt report rnu ruler scf scrollopt sessionoptions shellredir shm showtabline slm sms spellcapcheck splitbelow ss stl swapfile syn tagbsearch tb term terse thesaurus titlestring tr tty twk ul ut verbosefile
+syn keyword vimOption contained	acd ambw arshape aw backupskip beval bk bri bufhidden cdh ci cinsd cms commentstring conceallevel cpt cscopetagorder csto cursorlineopt dg dir ed enc equalprg expandtab fdls fex fileignorecase fml foldlevel formatexpr gcr gli guifont guitabtooltip hidden hlg imactivatefunc imi inc inex isident keymap langmap linebreak lm lsp makeencoding maxmem mh mmp more mousemoveevent mzq numberwidth opfunc patchexpr pfn pp printfont pumwidth pythonthreehome re restorescreen ro rulerformat scl scs sft shellslash shortmess showtabline slm smoothscroll spell spl srr statusline sw sxq tag tal tenc termwintype tgst titleold tpm ttm tw udir ur verbose viminfofile warn wfh wildchar wim winminheight wmh write
+syn keyword vimOption contained	ai anti asd awa balloondelay bevalterm bkc briopt buflisted cdhome cin cinw co compatible confirm crb cscopeverbose csverb cwh dict directory edcompatible encoding errorbells exrc fdm ff filetype fmr foldlevelstart formatlistpat gd go guifontset helpfile highlight hls imactivatekey iminsert include inf isk keymodel langmenu lines lmap luadll makeprg maxmempattern mis mmt mouse mouses mzquantum nuw osfiletype patchmode ph preserveindent printheader pvh pyx readonly revins rop runtimepath scr sect sh shelltemp shortname shq sloc sms spellcapcheck splitbelow ss stl swapfile syn tagbsearch tb term terse thesaurus titlestring tr tty twk ul ut verbosefile virtualedit wb wfw wildcharm winaltkeys winminwidth wmnu writeany
+syn keyword vimOption contained	akm antialias autochdir background ballooneval bex bl brk buftype cdpath cindent cinwords cocu complete copyindent cryptmethod csl cuc debug dictionary display ef endoffile errorfile fcl fdn ffs fillchars fo foldmarker formatoptions gdefault gp guifontwide helpheight history hlsearch imaf ims includeexpr infercase iskeyword keyprotocol langnoremap linespace lnr lw mat maxmemtot mkspellmem mod mousef mouseshape mzschemedll odev pa path pheader previewheight printmbcharset pvp pyxversion redrawtime ri rs sb scroll sections shcf shelltype showbreak si sm sn spellfile splitkeep ssl stmp swapsync synmaxcol tagcase tbi termbidi textauto thesaurusfunc tl ts ttybuiltin tws undodir varsofttabstop vfile visualbell wc wh wildignore wincolor winptydll wmw writebackup
+syn keyword vimOption contained	al ar autoindent backspace balloonevalterm bexpr bo browsedir casemap cedit cink clipboard cole completefunc cot cscopepathcomp cspc cul deco diff dy efm endofline errorformat fcs fdo fic fixendofline foldclose foldmethod formatprg gfm grepformat guiheadroom helplang hk ic imak imsearch incsearch insertmode isp keywordprg langremap lisp loadplugins lz matchpairs mco ml modeline mousefocus mouset mzschemegcdll oft packpath pdev pi previewpopup printmbfont pvw qe regexpengine rightleft rtp sbo scrollbind secure shell shellxescape showcmd sidescroll smartcase so spelllang splitright ssop sts swb syntax tagfunc tbidi termencoding textmode tildeop tm tsl ttyfast twsl undofile vartabstop vi vop wcm whichwrap wildignorecase window winwidth wop writedelay
+syn keyword vimOption contained	aleph arab autoread backup balloonexpr bg bomb bs cb cf cinkeys cm colorcolumn completeopt cp cscopeprg csprg culopt def diffexpr ea ei eof esckeys fdc fdt fileencoding fixeol foldcolumn foldminlines fp gfn grepprg guiligatures hf hkmap icon imc imsf inde is isprint km laststatus lispoptions lop ma matchtime mef mle modelineexpr mousehide mousetime nf ofu para penc pm previewwindow printoptions pw qftf relativenumber rightleftcmd ru sbr scrollfocus sel shellcmdflag shellxquote showcmdloc sidescrolloff smartindent softtabstop spelloptions spo st su swf ta taglength tbis termguicolors textwidth timeout to tsr ttym twt undolevels vb viewdir vsts wcr wi wildmenu winfixheight wiv wrap ws
+syn keyword vimOption contained	allowrevins arabic autoshelldir backupcopy bdir bh breakat bsdir cc cfu cino cmdheight columns completepopup cpo cscopequickfix csqf cursorbind define diffopt ead ek eol et fde fen fileencodings fk foldenable foldnestmax fs gfs gtl guioptions hh hkmapp iconstring imcmdline imst indentexpr isf joinspaces kmp lazyredraw lispwords lpl macatsui maxcombine menc mls modelines mousem mp nrformats omnifunc paragraphs perldll pmbcs printdevice prompt pythondll quickfixtextfunc remap rl rubydll sc scrolljump selection shellpipe shiftround showfulltag signcolumn smarttab sol spellsuggest spr sta sua switchbuf tabline tagrelative tbs termwinkey tf timeoutlen toolbar tsrfu ttymouse tx undoreload vbs viewoptions vts wd wic wildmode winfixwidth wiw wrapmargin ww
+syn keyword vimOption contained	altkeymap arabicshape autowrite backupdir bdlay bin breakindent bsk ccv ch cinoptions cmdwinheight com completeslash cpoptions cscoperelative csre cursorcolumn delcombine digraph eadirection emo ep eventignore fdi fenc fileformat fkmap foldexpr foldopen fsync gfw gtt guipty hi hkp ignorecase imd imstatusfunc indentkeys isfname js kp lbr list lrm magic maxfuncdepth menuitems mm modifiable mousemev mps nu opendevice paste pex pmbfn printencoding pt pythonhome quoteescape renderoptions rlc ruf scb scrolloff selectmode shellquote shiftwidth showmatch siso smc sp spf sps stal suffixes sws tabpagemax tags tc termwinscroll tfu title toolbariconsize ttimeout ttyscroll uc updatecount vdir vif wa weirdinvert wig wildoptions winheight wm wrapscan xtermcodes
+syn keyword vimOption contained	ambiwidth ari autowriteall backupext belloff binary breakindentopt bt cd charconvert cinscopedecls cmp comments concealcursor cpp cscopetag cst cursorline dex dip eb emoji equalalways ex fdl fencs fileformats flp foldignore foldtext ft ghr guicursor guitablabel hid hl im imdisable imstyle indk isi key kpc lcs listchars ls makeef maxmapdepth mfd mmd modified mousemodel msm number operatorfunc pastetoggle pexpr popt printexpr pumheight pythonthreedll rdt report rnu ruler scf scrollopt sessionoptions shellredir shm showmode sj smd spc spk sr startofline suffixesadd sxe tabstop tagstack tcldll termwinsize tgc titlelen top ttimeoutlen ttytype udf updatetime ve viminfo wak
 
 " vimOptions: These are the turn-off setting variants {{{2
 syn keyword vimOption contained	noacd noallowrevins noantialias noarabic noarshape noautoindent noautowrite noawa noballoonevalterm nobin nobl nobri noci nocompatible nocp nocscopetag nocst nocul nocursorline nodg noea noedcompatible noemoji noeof noerrorbells noex nofen nofixendofline nofkmap nofsync noguipty nohk nohkp noic noim noimd noinf nois nolangnoremap nolbr nolist nolpl noma nomh nomod nomodifiable nomousef nonu noopendevice nopreserveindent noprompt noreadonly noremap norevins norightleft nornu nors noruler nosc noscf noscrollfocus nosecure noshellslash noshiftround noshowcmd noshowmatch nosi nosmartcase nosmarttab nosmoothscroll nosn nospell nosplitright nosr nosta nostmp noswf notagbsearch notagstack notbidi notermbidi notextauto notf notildeop notitle notop nottimeout nottyfast noudf novb nowa nowb nowfh nowic nowildmenu nowinfixwidth nowmnu nowrapscan nowriteany nows
@@ -78,12 +78,12 @@ syn match vimHLGroup contained	"Conceal"
 syn case match
 
 " Function Names {{{2
-syn keyword vimFuncName contained	abs argc assert_equal assert_match atan balloon_show bufexists bufwinid ceil ch_canread ch_getbufnr ch_read ch_status complete_check count deletebufline digraph_set eval exists_compiled extendnew findfile fnameescape foldtextresult get getchar getcmdline getcurpos getfsize getloclist getpos gettabinfo getwinpos globpath histdel hlset input insert islocked job_start json_decode libcallnr listener_add luaeval mapset matchend max mzeval perleval popup_create popup_findinfo popup_list popup_setoptions printf prop_add prop_remove prop_type_list pyxeval readdirex reltime remote_peek rename rubyeval screenpos searchdecl serverlist setcharsearch setfperm setqflist setwinvar sign_getdefined sign_undefine sinh sound_playevent split str2list strdisplaywidth strlen strwidth swapname synstack tabpagewinnr tempname term_getansicolors term_getscrolled terminalprops term_setapi term_wait test_garbagecollect_soon test_null_channel test_null_partial test_setmouse timer_info tolower type values winbufnr win_getid win_id2win winnr win_splitmove
-syn keyword vimFuncName contained	acos argidx assert_equalfile assert_nobeep atan2 balloon_split buflisted bufwinnr changenr ch_close ch_getjob ch_readblob cindent complete_info cscope_connection did_filetype digraph_setlist eventhandler exp feedkeys flatten fnamemodify foreground getbufinfo getcharmod getcmdpos getcursorcharpos getftime getmarklist getqflist gettabvar getwinposx has histget hostname inputdialog interrupt isnan job_status json_encode line listener_flush map match matchfuzzy menu_info nextnonblank popup_atcursor popup_dialog popup_findpreview popup_locate popup_settext prompt_getprompt prop_add_list prop_type_add pum_getpos rand readfile reltimefloat remote_read repeat screenattr screenrow searchpair setbufline setcmdline setline setreg sha256 sign_getplaced sign_unplace slice sound_playfile sqrt str2nr strftime strpart submatch synconcealed system tagfiles term_dumpdiff term_getattr term_getsize term_list term_setkill test_alloc_fail test_getvalue test_null_dict test_null_string test_settime timer_pause toupper typename virtcol wincol win_gettype winlayout winrestcmd winwidth
-syn keyword vimFuncName contained	add arglistid assert_exception assert_notequal autocmd_add blob2list bufload byte2line char2nr ch_close_in ch_info ch_readraw clearmatches confirm cursor diff_filler echoraw executable expand filereadable flattennew foldclosed fullcommand getbufline getcharpos getcmdscreenpos getcwd getftype getmatches getreg gettabwinvar getwinposy has_key histnr iconv inputlist invert items job_stop keys line2byte listener_remove maparg matchadd matchfuzzypos min nr2char popup_beval popup_filter_menu popup_getoptions popup_menu popup_show prompt_setcallback prop_clear prop_type_change pumvisible range reduce reltimestr remote_send resolve screenchar screenstring searchpairpos setbufvar setcmdpos setloclist settabvar shellescape sign_jump sign_unplacelist sort sound_stop srand strcharlen strgetchar strptime substitute synID systemlist taglist term_dumpload term_getcursor term_getstatus term_scrape term_setrestore test_autochdir test_gui_event test_null_function test_option_not_set test_srand_seed timer_start tr undofile virtcol2col windowsversion win_gotoid winline winrestview wordcount
-syn keyword vimFuncName contained	and argv assert_fails assert_notmatch autocmd_delete browse bufloaded byteidx charclass chdir ch_log ch_sendexpr col copy debugbreak diff_hlID empty execute expandcmd filewritable float2nr foldclosedend funcref getbufoneline getcharsearch getcmdtype getenv getimstatus getmousepos getreginfo gettagstack getwinvar haslocaldir hlexists indent inputrestore isabsolutepath job_getchannel join keytrans lispindent localtime mapcheck matchaddpos matchlist mkdir or popup_clear popup_filter_yesno popup_getpos popup_move pow prompt_setinterrupt prop_find prop_type_delete py3eval readblob reg_executing remote_expr remote_startserver reverse screenchars search searchpos setcellwidths setcursorcharpos setmatches settabwinvar shiftwidth sign_place simplify sound_clear spellbadword state strcharpart stridx strridx swapfilelist synIDattr tabpagebuflist tan term_dumpwrite term_getjob term_gettitle term_sendkeys term_setsize test_feedinput test_ignore_error test_null_job test_override test_unknown timer_stop trim undotree visualmode win_execute winheight win_move_separator winsaveview writefile
-syn keyword vimFuncName contained	append asin assert_false assert_report autocmd_get browsedir bufname byteidxcomp charcol ch_evalexpr ch_logfile ch_sendraw complete cos deepcopy digraph_get environ exepath expr10 filter floor foldlevel function getbufvar getcharstr getcmdwintype getfontname getjumplist getmouseshape getregtype gettext glob hasmapto hlget index inputsave isdirectory job_info js_decode len list2blob log maplist matcharg matchstr mode pathshorten popup_close popup_findecho popup_hide popup_notification prevnonblank prompt_setprompt prop_list prop_type_get pyeval readdir reg_recording remote_foreground remove round screencol searchcount server2client setcharpos setenv setpos settagstack sign_define sign_placelist sin soundfold spellsuggest str2float strchars string strtrans swapinfo synIDtrans tabpagenr tanh term_getaltscreen term_getline term_gettty term_setansicolors term_start test_garbagecollect_now test_null_blob test_null_list test_refcount test_void timer_stopall trunc uniq wildmenumode win_findbuf win_id2tabwin win_move_statusline win_screenpos xor
-syn keyword vimFuncName contained	appendbufline assert_beeps assert_inrange assert_true balloon_gettext bufadd bufnr call charidx ch_evalraw ch_open ch_setoptions complete_add cosh delete digraph_getlist escape exists extend finddir fmod foldtext garbagecollect getchangelist getcmdcompltype getcompletion getfperm getline getpid getscriptinfo getwininfo glob2regpat histadd hlID indexof inputsecret isinf job_setoptions js_encode libcall list2str log10 mapnew matchdelete matchstrpos
+syn keyword vimFuncName contained	abs argc assert_equal assert_match atan balloon_show bufexists bufwinid ceil ch_canread ch_getbufnr ch_read ch_status complete_check count deletebufline digraph_set eval exists_compiled extendnew findfile fnameescape foldtextresult get getchar getcmdline getcurpos getfsize getloclist getpos gettabinfo getwinpos globpath histdel hlset input insert islocked job_start json_decode libcallnr listener_add luaeval mapset matchend max nextnonblank popup_atcursor popup_dialog popup_findpreview popup_locate popup_settext prompt_getprompt prop_add_list prop_type_add pum_getpos rand readfile reltimefloat remote_read repeat screenattr screenrow searchpair setbufline setcmdline setline setreg sha256 sign_getplaced sign_unplace slice sound_playfile sqrt str2nr strftime strpart submatch synconcealed system tagfiles term_dumpdiff term_getattr term_getsize term_list term_setkill test_alloc_fail test_getvalue test_null_channel test_null_partial test_setmouse timer_info tolower type values winbufnr win_getid win_id2win winnr win_splitmove
+syn keyword vimFuncName contained	acos argidx assert_equalfile assert_nobeep atan2 balloon_split buflisted bufwinnr changenr ch_close ch_getjob ch_readblob cindent complete_info cscope_connection did_filetype digraph_setlist eventhandler exp feedkeys flatten fnamemodify foreground getbufinfo getcharmod getcmdpos getcursorcharpos getftime getmarklist getqflist gettabvar getwinposx has histget hostname inputdialog interrupt isnan job_status json_encode line listener_flush map match matchfuzzy menu_info nr2char popup_beval popup_filter_menu popup_getoptions popup_menu popup_show prompt_setcallback prop_clear prop_type_change pumvisible range reduce reltimestr remote_send resolve screenchar screenstring searchpairpos setbufvar setcmdpos setloclist settabvar shellescape sign_jump sign_unplacelist sort sound_stop srand strcharlen strgetchar strptime substitute synID systemlist taglist term_dumpload term_getcursor term_getstatus term_scrape term_setrestore test_autochdir test_gui_event test_null_dict test_null_string test_settime timer_pause toupper typename virtcol wincol win_gettype winlayout winrestcmd winwidth
+syn keyword vimFuncName contained	add arglistid assert_exception assert_notequal autocmd_add blob2list bufload byte2line char2nr ch_close_in ch_info ch_readraw clearmatches confirm cursor diff_filler echoraw executable expand filereadable flattennew foldclosed fullcommand getbufline getcharpos getcmdscreenpos getcwd getftype getmatches getreg gettabwinvar getwinposy has_key histnr iconv inputlist invert items job_stop keys line2byte listener_remove maparg matchadd matchfuzzypos min or popup_clear popup_filter_yesno popup_getpos popup_move pow prompt_setinterrupt prop_find prop_type_delete py3eval readblob reg_executing remote_expr remote_startserver reverse screenchars search searchpos setcellwidths setcursorcharpos setmatches settabwinvar shiftwidth sign_place simplify sound_clear spellbadword state strcharpart stridx strridx swapfilelist synIDattr tabpagebuflist tan term_dumpwrite term_getjob term_gettitle term_sendkeys term_setsize test_feedinput test_ignore_error test_null_function test_option_not_set test_srand_seed timer_start tr undofile virtcol2col windowsversion win_gotoid winline winrestview wordcount
+syn keyword vimFuncName contained	and argv assert_fails assert_notmatch autocmd_delete browse bufloaded byteidx charclass chdir ch_log ch_sendexpr col copy debugbreak diff_hlID empty execute expandcmd filewritable float2nr foldclosedend funcref getbufoneline getcharsearch getcmdtype getenv getimstatus getmousepos getreginfo gettagstack getwinvar haslocaldir hlexists indent inputrestore isabsolutepath job_getchannel join keytrans lispindent localtime mapcheck matchaddpos matchlist mkdir pathshorten popup_close popup_findecho popup_hide popup_notification prevnonblank prompt_setprompt prop_list prop_type_get pyeval readdir reg_recording remote_foreground remove round screencol searchcount server2client setcharpos setenv setpos settagstack sign_define sign_placelist sin soundfold spellsuggest str2float strchars string strtrans swapinfo synIDtrans tabpagenr tanh term_getaltscreen term_getline term_gettty term_setansicolors term_start test_garbagecollect_now test_mswin_event test_null_job test_override test_unknown timer_stop trim undotree visualmode win_execute winheight win_move_separator winsaveview writefile
+syn keyword vimFuncName contained	append asin assert_false assert_report autocmd_get browsedir bufname byteidxcomp charcol ch_evalexpr ch_logfile ch_sendraw complete cos deepcopy digraph_get environ exepath expr10 filter floor foldlevel function getbufvar getcharstr getcmdwintype getfontname getjumplist getmouseshape getregtype gettext glob hasmapto hlget index inputsave isdirectory job_info js_decode len list2blob log maplist matcharg matchstr mode perleval popup_create popup_findinfo popup_list popup_setoptions printf prop_add prop_remove prop_type_list pyxeval readdirex reltime remote_peek rename rubyeval screenpos searchdecl serverlist setcharsearch setfperm setqflist setwinvar sign_getdefined sign_undefine sinh sound_playevent split str2list strdisplaywidth strlen strwidth swapname synstack tabpagewinnr tempname term_getansicolors term_getscrolled terminalprops term_setapi term_wait test_garbagecollect_soon test_null_blob test_null_list test_refcount test_void timer_stopall trunc uniq wildmenumode win_findbuf win_id2tabwin win_move_statusline win_screenpos xor
+syn keyword vimFuncName contained	appendbufline assert_beeps assert_inrange assert_true balloon_gettext bufadd bufnr call charidx ch_evalraw ch_open ch_setoptions complete_add cosh delete digraph_getlist escape exists extend finddir fmod foldtext garbagecollect getchangelist getcmdcompltype getcompletion getfperm getline getpid getscriptinfo getwininfo glob2regpat histadd hlID indexof inputsecret isinf job_setoptions js_encode libcall list2str log10 mapnew matchdelete matchstrpos mzeval
 
 "--- syntax here and above generated by mkvimvim ---
 " Special Vim Highlighting (not automatic) {{{1
@@ -353,7 +353,7 @@ syn region	vimSubstPat     contained	mat
 syn region	vimSubstRep4    contained	matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList	nextgroup=vimSubstFlagErr	oneline
 syn region	vimCollection   contained transparent	start="\\\@<!\[" skip="\\\[" end="\]"	contains=vimCollClass
 syn match	vimCollClassErr contained	"\[:.\{-\}:\]"
-syn match	vimCollClass    contained transparent	"\%#=1\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|return\|tab\|escape\|backspace\):\]"
+syn match	vimCollClass    contained transparent	"\%#=1\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|retu\%[rn]\|tab\|escape\|backspace\):\]"
 syn match	vimSubstSubstr  contained	"\\z\=\d"
 syn match	vimSubstTwoBS   contained	"\\\\"
 syn match	vimSubstFlagErr contained	"[^< \t\r|]\+" contains=vimSubstFlags
@@ -453,7 +453,7 @@ syn match	vimMenuBang	"!"	contained skip
 " Angle-Bracket Notation: (tnx to Michael Geddes) {{{2
 " ======================
 syn case ignore
-syn match	vimNotation	"\%#=1\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cmd\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|mouse\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\(page\)\=\(\|down\|up\|k\d\>\)\)>" contains=vimBracket
+syn match	vimNotation	"\%#=1\(\\\|<lt>\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cmd\|cr\|lf\|linefeed\|retu\%[rn]\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|mouse\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\(page\)\=\(\|down\|up\|k\d\>\)\)>" contains=vimBracket
 syn match	vimNotation	"\%#=1\(\\\|<lt>\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>"	contains=vimBracket
 syn match	vimNotation	"\%#=1\(\\\|<lt>\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>"			contains=vimBracket
 syn match	vimNotation	'\(\\\|<lt>\)\=<C-R>[0-9a-z"%#:.\-=]'he=e-1				contains=vimBracket
@@ -481,7 +481,7 @@ if !exists("g:vimsyn_noerror") && !exist
  syn match	vimBufnrWarn	/\<bufnr\s*(\s*["']\.['"]\s*)/
 endif
 
-syn match vimNotFunc	"\<if\>\|\<el\%[seif]\>\|\<return\>\|\<while\>"	skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation
+syn match vimNotFunc	"\<if\>\|\<el\%[seif]\>\|\<retu\%[rn]\>\|\<while\>"	skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation
 
 " Norm: {{{2
 " ====
--- a/src/po/ca.po
+++ b/src/po/ca.po
@@ -4,10 +4,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: vim 8.2\n"
+"Project-Id-Version: vim 9.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-13 14:14+0100\n"
-"PO-Revision-Date: 2022-05-15 19:03+0100\n"
+"POT-Creation-Date: 2022-12-06 11:03+0100\n"
+"PO-Revision-Date: 2022-12-11 16:59+0100\n"
 "Last-Translator: Ernest Adrogué <nr9@posteo.net>\n"
 "Language-Team: Catalan <ca@dodds.net>\n"
 "Language: ca\n"
@@ -848,24 +848,6 @@ msgstr[1] "+-%s%3ld línies: "
 msgid "No match at cursor, finding next"
 msgstr "Cap coincidència al cursor, cercant la següent"
 
-msgid "<cannot open> "
-msgstr "<no es pot obrir> "
-
-msgid "Pathname:"
-msgstr "Ubicació:"
-
-msgid "OK"
-msgstr "D'acord"
-
-msgid "Cancel"
-msgstr "Cancel·la"
-
-msgid "Scrollbar Widget: Could not get geometry of thumb pixmap."
-msgstr "Barra de desplaçament: No s'ha obtingut la mida del mapa de bits."
-
-msgid "Vim dialog"
-msgstr "Diàleg del Vim"
-
 # :browse w
 msgid "_Save"
 msgstr "_Desa"
@@ -888,12 +870,18 @@ msgstr ""
 "&No\n"
 "&Cancel·la"
 
+msgid "OK"
+msgstr "D'acord"
+
 msgid "Yes"
 msgstr "Sí"
 
 msgid "No"
 msgstr "No"
 
+msgid "Cancel"
+msgstr "Cancel·la"
+
 msgid "Input _Methods"
 msgstr "_Mètodes d'entrada"
 
@@ -975,6 +963,9 @@ msgstr "&D'acord"
 msgid "Selection"
 msgstr "Selecció"
 
+msgid "Vim dialog"
+msgstr "Diàleg del Vim"
+
 msgid "Find &Next"
 msgstr "&Cerca el següent"
 
@@ -1342,9 +1333,6 @@ msgstr " Suggeriment d'ortografia (s^N^P
 msgid " Keyword Local completion (^N^P)"
 msgstr " Compleció de paraules clau locals (^N^P)"
 
-msgid "Hit end of paragraph"
-msgstr "S'ha arribat al final del paràgraf"
-
 msgid "'dictionary' option is empty"
 msgstr "El paràmetre 'dictionary' està en blanc"
 
@@ -1379,6 +1367,12 @@ msgstr " Afegint"
 msgid "-- Searching..."
 msgstr "-- Cercant..."
 
+msgid "Hit end of paragraph"
+msgstr "S'ha arribat al final del paràgraf"
+
+msgid "Pattern not found"
+msgstr "No s'ha trobat el patró"
+
 msgid "Back at original"
 msgstr "Original"
 
@@ -1464,7 +1458,7 @@ msgid "'-nb' cannot be used: not enabled
 msgstr "'-nb' no està disponible: no s'ha compilat el suport\n"
 
 msgid "This Vim was not compiled with the diff feature."
-msgstr "Aquest Vim no ha estat compilat amb la característica diff."
+msgstr "Aquest Vim no ha estat compilat amb la funcionalitat diff."
 
 msgid "Attempt to open script file again: \""
 msgstr "Es torna a intentar obrir l'script: \""
@@ -1646,6 +1640,9 @@ msgstr "-T <terminal>\tDefineix el tipus
 msgid "--not-a-term\t\tSkip warning for input/output not being a terminal"
 msgstr "--not-a-term\t\tOmet avisos relacionats amb el terminal"
 
+msgid "--gui-dialog-file {fname}  For testing: write dialog text"
+msgstr "--gui-dialog-file {fitxer} Per proves: escriu el contingut el diàleg"
+
 msgid "--ttyfail\t\tExit if input or output is not a terminal"
 msgstr "--ttyfail\t\tSurt si l'entrada/sortida no són un terminal"
 
@@ -1738,6 +1735,9 @@ msgstr "--servername <nom>\tEnvia a/es c
 msgid "--startuptime <file>\tWrite startup timing messages to <file>"
 msgstr "--startuptime <fitxer>  Desa la cronologia d'arrencada a <fitxer>"
 
+msgid "--log <file>\t\tStart logging to <file> early"
+msgstr "--log <fitxer>\t\tRegistra l'activitat a <fitxer>"
+
 msgid "-i <viminfo>\t\tUse <viminfo> instead of .viminfo"
 msgstr "-i <viminfo>\t\tUsa <viminfo> en lloc de .viminfo"
 
@@ -1757,20 +1757,6 @@ msgstr ""
 "\n"
 "Arguments reconeguts pel gvim (versió Motif):\n"
 
-msgid ""
-"\n"
-"Arguments recognised by gvim (neXtaw version):\n"
-msgstr ""
-"\n"
-"Arguments reconeguts pel gvim (versió neXtaw):\n"
-
-msgid ""
-"\n"
-"Arguments recognised by gvim (Athena version):\n"
-msgstr ""
-"\n"
-"Arguments reconeguts pel gvim (versió Athena):\n"
-
 msgid "-display <display>\tRun Vim on <display>"
 msgstr "-display <pantalla>\tExecuta Vim a <pantalla>"
 
@@ -1802,9 +1788,6 @@ msgid "-scrollbarwidth <width>  Use a sc
 msgstr ""
 "-scrollbarwidth <amplada>  Amplada de la barra de desplaçament (també: -sw)"
 
-msgid "-menuheight <height>\tUse a menu bar height of <height> (also: -mh)"
-msgstr "-menuheight <alçada>\tAlçada de la barra de menú (també: -mh)"
-
 msgid "-reverse\t\tUse reverse video (also: -rv)"
 msgstr "-reverse\t\tUsa el mode de video invers (també: -rv)"
 
@@ -1840,6 +1823,33 @@ msgstr "-P <aplicació>\t\tObre el Vim dins d'una altra aplicació"
 msgid "--windowid <HWND>\tOpen Vim inside another win32 widget"
 msgstr "--windowid <HWND>\tObre el Vim dins d'un altre giny win32"
 
+msgid "Seen modifyOtherKeys: true\n"
+msgstr "Trobat modifyOtherKeys: cert\n"
+
+msgid "Unknown"
+msgstr "Desconegut"
+
+# :verbose map
+msgid "Off"
+msgstr "Inactiu"
+
+msgid "On"
+msgstr "Actiu"
+
+msgid "Disabled"
+msgstr "Desactivat"
+
+msgid "Cleared"
+msgstr "Restablert"
+
+#, c-format
+msgid "modifyOtherKeys detected: %s\n"
+msgstr "detectat modifyOtherKeys: %s\n"
+
+#, c-format
+msgid "Kitty keyboard protocol: %s\n"
+msgstr "protocol de teclat Kitty: %s\n"
+
 msgid "No abbreviation found"
 msgstr "No s'ha trobat cap abreviació"
 
@@ -2244,9 +2254,6 @@ msgstr "Interrupció: "
 msgid "Press ENTER or type command to continue"
 msgstr "Premeu ENTRAR o introduïu una ordre per a continuar"
 
-msgid "Unknown"
-msgstr "Desconegut"
-
 #, c-format
 msgid "%s line %ld"
 msgstr "%s línia %ld"
@@ -2937,13 +2944,17 @@ msgstr "FLAG posterior a l'ús de flags %s, línia %d: %s"
 msgid ""
 "Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line "
 "%d"
-msgstr "Definir COMPOUNDFORBIDFLAG després de PFX, pot produir resultats incorrectes, a %s, línia %d"
+msgstr ""
+"Definir COMPOUNDFORBIDFLAG després de PFX, pot produir resultats "
+"incorrectes, a %s, línia %d"
 
 #, c-format
 msgid ""
 "Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line "
 "%d"
-msgstr "Definir COMPOUNDPERMITFLAG després de PFX, pot produir resultats incorrectes, a %s, línia %d"
+msgstr ""
+"Definir COMPOUNDPERMITFLAG després de PFX, pot produir resultats "
+"incorrectes, a %s, línia %d"
 
 #, c-format
 msgid "Wrong COMPOUNDRULES value in %s line %d: %s"
@@ -3457,28 +3468,40 @@ msgid "%s returning %s"
 msgstr "%s ha retornat \"%s\""
 
 #, c-format
+msgid "Function %s does not need compiling"
+msgstr "La funció %s no necessita ser compilada"
+
+#, c-format
 msgid "%s (%s, compiled %s)"
 msgstr "%s (%s, compilat el %s)"
 
 msgid ""
 "\n"
 "MS-Windows 64-bit GUI/console version"
-msgstr "\nVersió GUI/consola per a MS-Windows de 64 bits"
+msgstr ""
+"\n"
+"Versió GUI/consola per a MS-Windows de 64 bits"
 
 msgid ""
 "\n"
 "MS-Windows 32-bit GUI/console version"
-msgstr "\nVersió GUI/consola per a MS-Windows de 32 bits"
+msgstr ""
+"\n"
+"Versió GUI/consola per a MS-Windows de 32 bits"
 
 msgid ""
 "\n"
 "MS-Windows 64-bit GUI version"
-msgstr "\nVersió GUI per a MS-Windows de 64 bits"
+msgstr ""
+"\n"
+"Versió GUI per a MS-Windows de 64 bits"
 
 msgid ""
 "\n"
 "MS-Windows 32-bit GUI version"
-msgstr "\nVersió GUI per a MS-Windows de 32 bits"
+msgstr ""
+"\n"
+"Versió GUI per a MS-Windows de 32 bits"
 
 msgid " with OLE support"
 msgstr " amb suport per a OLE"
@@ -3507,9 +3530,7 @@ msgstr ""
 msgid ""
 "\n"
 "macOS version w/o darwin feat."
-msgstr ""
-"\n"
-"Versió per a macOS sense característiques darwin"
+msgstr "\nVersió per a macOS sense funcionalitat darwin"
 
 msgid ""
 "\n"
@@ -3548,16 +3569,7 @@ msgstr "per "
 msgid ""
 "\n"
 "Huge version "
-msgstr ""
-"\n"
-"Versió molt extensa "
-
-msgid ""
-"\n"
-"Big version "
-msgstr ""
-"\n"
-"Versió extensa "
+msgstr "\nVersió molt completa "
 
 msgid ""
 "\n"
@@ -3568,13 +3580,6 @@ msgstr ""
 
 msgid ""
 "\n"
-"Small version "
-msgstr ""
-"\n"
-"Versió reduïda "
-
-msgid ""
-"\n"
 "Tiny version "
 msgstr ""
 "\n"
@@ -3595,12 +3600,6 @@ msgstr "amb interfície gràfica GTK2."
 msgid "with X11-Motif GUI."
 msgstr "amb interfície gràfica X11-Motif."
 
-msgid "with X11-neXtaw GUI."
-msgstr "amb interfície gràfica X11-neXtaw."
-
-msgid "with X11-Athena GUI."
-msgstr "amb interfície gràfica X11-Athena."
-
 msgid "with Haiku GUI."
 msgstr "amb interfície gràfica Haiku."
 
@@ -3612,7 +3611,7 @@ msgstr "amb interfície gràfica."
 
 # vim --version
 msgid "  Features included (+) or not (-):\n"
-msgstr "Característiques incloses (+) o excloses (-):\n"
+msgstr "  Funcionalitats incloses (+) o excloses (-):\n"
 
 # 29 caràcters fins el ":" (inclòs)
 msgid "   system vimrc file: \""
@@ -3697,36 +3696,36 @@ msgstr "Vim és un programa obert i de lliure distribució"
 msgid "Help poor children in Uganda!"
 msgstr "Ajudeu els nens pobres d'Uganda!"
 
-# amplada 53 caràcters
+# amplada 61 caràcters
 msgid "type  :help iccf<Enter>       for information "
-msgstr "feu  :help iccf<Entrar>          per a més informació     "
-
-# amplada 53 caràcters
+msgstr "feu  :help iccf<Entrar>          per a més informació        "
+
+# amplada 61 caràcters
 msgid "type  :q<Enter>               to exit         "
-msgstr "feu  :q<Entrar>                  per a sortir             "
-
-# amplada 53 caràcters
+msgstr "feu  :q<Entrar>                  per a sortir                "
+
+# amplada 61 caràcters
 msgid "type  :help<Enter>  or  <F1>  for on-line help"
-msgstr "feu  :help<Entrar> o <F1>        per a obtenir ajuda      "
-
-# amplada 53 caràcters
+msgstr "feu  :help<Entrar> o <F1>        per a obtenir ajuda         "
+
+# amplada 61 caràcters
 msgid "type  :help version9<Enter>   for version info"
-msgstr "feu  :help version9<Entrar>      per a info de la versió  "
+msgstr "feu  :help version9<Entrar>      per a info sobre la versió  "
 
 msgid "Running in Vi compatible mode"
 msgstr "Funcionant en mode compatible amb Vi"
 
 # amplada 53 caràcters
 msgid "type  :set nocp<Enter>        for Vim defaults"
-msgstr "feu  :set nocp<Entrar>           per al mode no compatible"
+msgstr "feu  :set nocp<Entrar>           per al mode no compatible   "
 
 # amplada 53 caràcters
 msgid "type  :help cp-default<Enter> for info on this"
-msgstr "feu  :help cp-default<Entrar>    per a info sobre el tema "
+msgstr "feu  :help cp-default<Entrar>    per a info sobre el tema    "
 
 # amplada 53 caràcters
 msgid "menu  Help->Orphans           for information    "
-msgstr "menú  Ajuda->Orfes               per a informació      "
+msgstr "menú  Ajuda->Orfes               per a informació            "
 
 msgid "Running modeless, typed text is inserted"
 msgstr "Funcionant sense modes, el text escrit s'insereix"
@@ -3734,20 +3733,20 @@ msgstr "Funcionant sense modes, el text 
 # Això ha de lligar amb la traducció del menú
 # amplada 53 caràcters
 msgid "menu  Edit->Global Settings->Toggle Insert Mode  "
-msgstr "menú  Edita->Opcions globals->Mode d'inserció          "
-
-# amplada 53 caràcters
+msgstr "menú  Edita->Opcions globals->Mode d'inserció                "
+
+# amplada 61 caràcters
 msgid "                              for two modes      "
-msgstr "                                 per a dos modes       "
+msgstr "                                 per a dos modes             "
 
 # Això ha de lligar amb la traducció del menú
-# amplada 53 caràcters
+# amplada 61 caràcters
 msgid "menu  Edit->Global Settings->Toggle Vi Compatible"
-msgstr "menú  Edita->Opcions globals->Compatible amb Vi        "
-
-# amplada 53 caràcters
+msgstr "menú  Edita->Opcions globals->Compatible amb Vi              "
+
+# amplada 61 caràcters
 msgid "                              for Vim defaults   "
-msgstr "                                 per al mode compatible"
+msgstr "                                 per al mode compatible      "
 
 msgid "Sponsor Vim development!"
 msgstr "Patrocineu el desenvolupament del Vim!"
@@ -3755,17 +3754,17 @@ msgstr "Patrocineu el desenvolupament de
 msgid "Become a registered Vim user!"
 msgstr "Feu-vos usuari de Vim registrat!"
 
-# amplada 53 caràcters
+# amplada 61 caràcters
 msgid "type  :help sponsor<Enter>    for information "
-msgstr "feu  :help sponsor<Entrar>       per a informació         "
-
-# amplada 53 caràcters
+msgstr "feu  :help sponsor<Entrar>       per a informació            "
+
+# amplada 61 caràcters
 msgid "type  :help register<Enter>   for information "
-msgstr "feu  :help register<Entrar>      per a informació         "
-
-# amplada 53 caràcters
+msgstr "feu  :help register<Entrar>      per a informació            "
+
+# amplada 61 caràcters
 msgid "menu  Help->Sponsor/Register  for information    "
-msgstr "menú  Ajuda->Patrocini/Registre  per a informació      "
+msgstr "menú  Ajuda->Patrocini/Registre  per a informació            "
 
 msgid "global"
 msgstr "global"
@@ -3964,8 +3963,8 @@ msgstr "Interromput"
 msgid "E10: \\ should be followed by /, ? or &"
 msgstr "E10: \\ hauria de continuar amb /, ? o &"
 
-msgid "E11: Invalid in command-line window; <CR> executes, CTRL-C quits"
-msgstr "E11: No vàlid a la línia d'ordres; <ENTRAR> executa, CTRL-C surt"
+msgid "E11: Invalid in command-line window; :q<CR> closes the window"
+msgstr "E11: No vàlid a la línia d'ordres; :q<CR> tanca la finestra"
 
 msgid "E12: Command not allowed from exrc/vimrc in current dir or tag search"
 msgstr ""
@@ -4866,14 +4865,14 @@ msgid "E271: Retry outside of rescue cla
 msgstr "E271: 'retry' fora d'una clàusula de rescat"
 
 msgid "E272: Unhandled exception"
-msgstr "E272: Excepció no conduïda"
+msgstr "E272: Excepció no tractada"
 
 #, c-format
 msgid "E273: Unknown longjmp status %d"
 msgstr "E273: Estat de longjmp %d desconegut"
 
 msgid "E274: No white space allowed before parenthesis"
-msgstr "E274: No es permeten espais abans d'un parentesis"
+msgstr "E274: No es permeten espais abans d'un parèntesi"
 
 msgid "E275: Cannot add text property to unloaded buffer"
 msgstr "E275: No es poden afegir propietats de text a un buffer no carregat"
@@ -4891,7 +4890,9 @@ msgstr "E279: ++shell no està suportat en aquest sistema"
 msgid ""
 "E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim."
 "org"
-msgstr "E280: ERROR FATAL DE TCL: reflist corromput!? Informeu del bug a vim-dev@vim.org."
+msgstr ""
+"E280: ERROR FATAL DE TCL: reflist corromput!? Informeu del bug a vim-dev@vim."
+"org."
 
 #, c-format
 msgid "E282: Cannot read from \"%s\""
@@ -5634,6 +5635,10 @@ msgstr "E486: No s'ha trobat el patró: %s"
 msgid "E487: Argument must be positive"
 msgstr "E487: L'argument ha de ser un número positiu"
 
+#, c-format
+msgid "E487: Argument must be positive: %s"
+msgstr "E487: L'argument ha de ser positiu: %s"
+
 msgid "E488: Trailing characters"
 msgstr "E488: Sobren caràcters al final"
 
@@ -5728,7 +5733,8 @@ msgstr "E513: Ha fallat la conversió (anul·leu l'opció 'fenc' per a forçar)"
 msgid ""
 "E513: Write error, conversion failed in line %ld (make 'fenc' empty to "
 "override)"
-msgstr "E513: Error de conversió, línia %ld (anul·leu l'opció 'fenc' per a forçar)"
+msgstr ""
+"E513: Error de conversió, línia %ld (anul·leu l'opció 'fenc' per a forçar)"
 
 msgid "E514: Write error (file system full?)"
 msgstr "E514: Error d'escriptura (sistema de fitxers ple?)"
@@ -5936,9 +5942,6 @@ msgstr "Falta un '>'"
 msgid "Illegal register name"
 msgstr "Nom de registre il·legal"
 
-msgid "E578: Not allowed to change text here"
-msgstr "E578: No es permet canviar el text"
-
 msgid "E579: :if nesting too deep"
 msgstr "E579: Nivell d'imbricació :if massa elevat"
 
@@ -6056,16 +6059,6 @@ msgstr "E612: S'han definit massa senyal
 msgid "E613: Unknown printer font: %s"
 msgstr "E613: Fosa d'impressió desconeguda: %s"
 
-msgid "E614: vim_SelFile: can't return to current directory"
-msgstr "E614: vim_SelFile: no s'ha pogut tornar al directori actual"
-
-msgid "E615: vim_SelFile: can't get current directory"
-msgstr "E615: vim_SelFile: no s'ha pogut obtenir el directori actual"
-
-#, c-format
-msgid "E616: vim_SelFile: can't get font %s"
-msgstr "E616: vim_SelFile: no s'ha pogut obtenir la fosa %s"
-
 msgid "E617: Cannot be changed in the GTK GUI"
 msgstr "E617: La interfície GTK no permet aquest canvi"
 
@@ -6183,8 +6176,9 @@ msgid "E675: No default font specified f
 msgstr ""
 "E675: No hi ha cap font per defecte per a imprimir en mode multi-octet."
 
-msgid "E676: No matching autocommands for acwrite buffer"
-msgstr "E676: No hi ha ordres automàtiques coincidents amb acwrite"
+#, c-format
+msgid "E676: No matching autocommands for buftype=%s buffer"
+msgstr "E676: No s'han trobat ordres automàtiques per a buffers '%s'"
 
 msgid "E677: Error writing temp file"
 msgstr "E677: Error en escriure el fitxer temporal"
@@ -6523,7 +6517,7 @@ msgid "E774: 'operatorfunc' is empty"
 msgstr "E774: 'operatorfunc' està en blanc"
 
 msgid "E775: Eval feature not available"
-msgstr "E775: La característica eval no està disponible"
+msgstr "E775: La funcionalitat 'eval' no està disponible"
 
 msgid "E776: No location list"
 msgstr "E776: No hi ha cap llista de posicions"
@@ -6647,7 +6641,7 @@ msgid "E808: Number or Float required"
 msgstr "E808: Es necessita Number o Float"
 
 msgid "E809: #< is not available without the +eval feature"
-msgstr "E809: #< no està disponible sense la característica +eval"
+msgstr "E809: #< no està disponible sense la funcionalitat +eval"
 
 msgid "E810: Cannot read or write temp files"
 msgstr "E810: No s'han pogut escriure o llegir fitxers temporals"
@@ -6820,8 +6814,8 @@ msgstr "E858: Eval no ha retornat un objecte Python vàlid"
 msgid "E859: Failed to convert returned python object to a Vim value"
 msgstr "E859: Error en convertir l'objecte Python retornat a un valor Vim"
 
-msgid "E860: Need 'id' and 'type' with 'both'"
-msgstr "E860: 'both' requereix 'id' i 'type'"
+msgid "E860: Need 'id' and 'type' or 'types' with 'both'"
+msgstr "E860: 'both' requereix 'id' i 'type', o bé 'types'"
 
 msgid "E861: Cannot open a second popup with a terminal"
 msgstr "E861: No es pot obrir una segona finestra emergent en un terminal"
@@ -7119,7 +7113,7 @@ msgid "E941: Already started a server"
 msgstr "E941: Ja s'ha iniciat un servidor"
 
 msgid "E942: +clientserver feature not available"
-msgstr "E942: la característica +clientserver no està disponible"
+msgstr "E942: la funcionalitat +clientserver no està disponible"
 
 msgid "E943: Command table needs to be updated, run 'make cmdidxs'"
 msgstr "E943: La taula d'ordres s'ha d'actualitzar, executeu 'make cmdidxs'"
@@ -7351,11 +7345,13 @@ msgstr "E1006: %s utilitzat com a argume
 msgid "E1007: Mandatory argument after optional argument"
 msgstr "E1007: Argument obligatori després d'argument opcional"
 
-msgid "E1008: Missing <type>"
-msgstr "E1008: Falta <type>"
-
-msgid "E1009: Missing > after type"
-msgstr "E1009: Falta un > després del tipus"
+#, c-format
+msgid "E1008: Missing <type> after %s"
+msgstr "E1008: Falta <tipus> després de %s"
+
+#, c-format
+msgid "E1009: Missing > after type: %s"
+msgstr "E1009: Falta un > després del tipus: %s"
 
 #, c-format
 msgid "E1010: Type not recognized: %s"
@@ -7484,8 +7480,8 @@ msgid "E1040: Cannot use :scriptversion 
 msgstr "E1040: No es permet utilitzar :scriptversion després de :vim9script"
 
 #, c-format
-msgid "E1041: Redefining script item \"%s\""
-msgstr "E1041: S'ha redefinit l'element %s de l'script"
+msgid "E1041: Redefining script item: \"%s\""
+msgstr "E1041: S'està redefinint un element de l'script: \"%s\""
 
 msgid "E1042: Export can only be used in vim9script"
 msgstr "E1042: Export només es pot utilitzar en vim9script"
@@ -7601,9 +7597,6 @@ msgstr "E1074: No es permet espai després del punt"
 msgid "E1075: Namespace not supported: %s"
 msgstr "E1075: No es suporten espais de noms: %s"
 
-msgid "E1076: This Vim is not compiled with float support"
-msgstr "E1076: Aquest Vim no té suport per números decimals"
-
 #, c-format
 msgid "E1077: Missing argument type for %s"
 msgstr "E1077: Falta un argument de tipus per a %s"
@@ -7635,9 +7628,6 @@ msgstr "E1084: No es pot eliminar la funció de script Vim9 %s"
 msgid "E1085: Not a callable type: %s"
 msgstr "E1085: No és un tipus executable: %s"
 
-msgid "E1086: Function reference invalid"
-msgstr "E1086: Referència no vàlida a una funció"
-
 msgid "E1087: Cannot use an index when declaring a variable"
 msgstr "E1087: No es pot declarar una variable amb un índex"
 
@@ -8162,7 +8152,8 @@ msgstr "E1228: L'argument %d requereix u
 
 #, c-format
 msgid "E1229: Expected dictionary for using key \"%s\", but got %s"
-msgstr "E1229: S'esperava un diccionari per a la clau \"%s\", però s'ha obtingut %s"
+msgstr ""
+"E1229: S'esperava un diccionari per a la clau \"%s\", però s'ha obtingut %s"
 
 msgid "E1230: Encryption: sodium_mlock() failed"
 msgstr "E1230: Xifratge: sodium_mlock() ha fallat"
@@ -8180,9 +8171,6 @@ msgstr "E1233: exists_compiled() només es pot utilitzar en una funció :def"
 msgid "E1234: legacy must be followed by a command"
 msgstr "E1234: legacy ha d'anar seguit d'una ordre"
 
-msgid "E1235: Function reference is not set"
-msgstr "E1235: La referència de funció no està establerta"
-
 #, c-format
 msgid "E1236: Cannot use %s itself, it is imported"
 msgstr "E1236: No es pot utilitzar %s, s'ha importat"
@@ -8317,6 +8305,161 @@ msgstr "E1269: No es pot crear una variable de script Vim9 en una funció: %s"
 msgid "E1270: Cannot use :s\\/sub/ in Vim9 script"
 msgstr "E1270: No es pot utilitzar :s\\/sub/ en un script Vim9"
 
+#, c-format
+msgid "E1271: Compiling closure without context: %s"
+msgstr "E1271: Una funció amb clausura necessita un context: %s"
+
+#, c-format
+msgid "E1272: Using type not in a script context: %s"
+msgstr "E1272: S'ha utilitzat un tipus fora del context d'un script: %s"
+
+#, c-format
+msgid "E1273: (NFA regexp) missing value in '\\%%%c'"
+msgstr "E1273: (expreg NFA) falta un valor a '\\%%%c'"
+
+msgid "E1274: No script file name to substitute for \"<script>\""
+msgstr "E1274: No s'ha proporcionat cap nom de fitxer per substituir <script>"
+
+msgid "E1275: String or function required for ->(expr)"
+msgstr "E1275: Es requereix una cadena o funció per a ->(expr)"
+
+#, c-format
+msgid "E1276: Illegal map mode string: '%s'"
+msgstr "E1276: Cadena de mode d'assignació il·legal: %s"
+
+msgid "E1277: Channel and job feature is not available"
+msgstr "E1277: Les funcionalitats 'channel' i 'job' no estan disponibles"
+
+#, c-format
+msgid "E1278: Stray '}' without a matching '{': %s"
+msgstr "E1278: Caràcter '}' desaparellat: %s"
+
+#, c-format
+msgid "E1279: Missing '}': %s"
+msgstr "E1279: Falta un '}': %s"
+
+msgid "E1280: Illegal character in word"
+msgstr "E1280: La paraula conté un caràcter il·legal"
+
+#, c-format
+msgid "E1281: Atom '\\%%#=%c' must be at the start of the pattern"
+msgstr "E1281: L'expressió '\\%%#=%c' ha de ser a l'inci del patró"
+
+msgid "E1282: Bitshift operands must be numbers"
+msgstr "E1282: Les operacions de bits requereixen operands numèrics"
+
+msgid "E1283: Bitshift amount must be a positive number"
+msgstr "E1283: La magnitud del desplaçament ha de ser un número positiu"
+
+#, c-format
+msgid "E1284: Argument 1, list item %d: Dictionary required"
+msgstr "E1284: Argument 1, element de llista %d: es requereix un diccionari"
+
+#, c-format
+msgid "E1285: Could not clear timeout: %s"
+msgstr "E1285: No s'ha pogut restablir el límit de temps: %s"
+
+#, c-format
+msgid "E1286: Could not set timeout: %s"
+msgstr "E1286: No s'ha pogut establir el límit de temps: %s"
+
+#, c-format
+msgid "E1287: Could not set handler for timeout: %s"
+msgstr "E1287: No s'han pogut assignar el gestor a la limitació de temps: %s"
+
+#, c-format
+msgid "E1288: Could not reset handler for timeout: %s"
+msgstr "E1288: No s'han pogut reassignar el gestor a la limitació de temps: %s"
+
+#, c-format
+msgid "E1289: Could not check for pending SIGALRM: %s"
+msgstr "E1289: No s'ha pogut comprovar si hi ha SIGALRM pendent: %s"
+
+msgid "E1290: substitute nesting too deep"
+msgstr "E1290: s'ha excedit el límit de recursió en la substitució"
+
+#, c-format
+msgid "E1291: Invalid argument: %ld"
+msgstr "E1291: Argument no vàlid: %ld"
+
+msgid "E1292: Command-line window is already open"
+msgstr "E1292: La finstra de la línia d'ordres ja està oberta"
+
+msgid "E1293: Cannot use a negative id after adding a textprop with text"
+msgstr "E1293: No es permet emprar una id negativa després d'afegir una textprop amb text"
+
+msgid "E1294: Can only use text_align when column is zero"
+msgstr "E1294: Només es pot fer servir 'text_align' quan la columna és zero"
+
+msgid "E1295: Cannot specify both 'type' and 'types'"
+msgstr "E1295: No podeu especificar 'type' i 'types' alhora"
+
+msgid "E1296: Can only use left padding when column is zero"
+msgstr "E1296: Només es pot emprar emplenat a la dreta quan la columna és zero"
+
+#, c-format
+msgid "E1297: Non-NULL Dictionary required for argument %d"
+msgstr "E1297: L'argument %d requereix un diccionari no NUL"
+
+#, c-format
+msgid "E1298: Non-NULL List required for argument %d"
+msgstr "E1298: L'argument %d requereix una llista no NUL·LA"
+
+msgid "E1299: Window unexpectedly closed while searching for tags"
+msgstr "E1299: Finestra tancada inesperadament mentre es cercaven etiquetes"
+
+msgid "E1300: Cannot use a partial with dictionary for :defer"
+msgstr "E1300: No es pot aplicar parcialment un diccionari amb :defer"
+
+#, c-format
+msgid "E1301: String, Number, List or Blob required for argument %d"
+msgstr "E1301: L'argument %d requereix una cadena, número, llista o Blob"
+
+msgid "E1302: Script variable was deleted"
+msgstr "E1302: S'ha eliminat una variable de l'script"
+
+#, c-format
+msgid "E1303: Custom list completion function does not return a List but a %s"
+msgstr "E1303: La funció de compleció retorna %s, en lloc d'una llista"
+
+#, c-format
+msgid "E1304: Cannot use type with this variable: %s"
+msgstr "E1304: No es pot emprar un tipus amb aquesta variable %s"
+
+msgid ""
+"E1305: Cannot use \"length\", \"end_col\" and \"end_lnum\" with \"text\""
+msgstr "E1305: No es pot emprar \"length\", \"end_col\" ni \"end_lnum\" amb \"text\""
+
+msgid "E1306: Loop nesting too deep"
+msgstr "E1306: Iteració imbricada amb massa profunditat"
+
+#, c-format
+msgid "E1307: Argument %d: Trying to modify a const %s"
+msgstr "E1307: Argument %d: Intenta modificar un/a %s constant"
+
+msgid "E1308: Cannot resize a window in another tab page"
+msgstr "E1308: No es permet redimensionar una finestra en una altra pestanya "
+
+msgid "E1309: Cannot change mappings while listing"
+msgstr "E1309: No és possible canviar assignacions mentre s'estan mostrant"
+
+msgid "E1310: Cannot change menus while listing"
+msgstr "E1310: No és possible canviar els menús mentre s'estan mostrant"
+
+msgid "E1311: Cannot change user commands while listing"
+msgstr "E1311: No és possible canviar ordres d'usuari mentre s'estan mostrant"
+
+msgid "E1312: Not allowed to change the window layout in this autocmd"
+msgstr "E1312: No es permet canviar la disposició de la finestra"
+
+#, c-format
+msgid "E1313: Not allowed to add or remove entries (%s)"
+msgstr "E1313: No es permet afegir o eliminar entrades (%s)"
+
+#, c-format
+msgid "E1314: Class name must start with an uppercase letter: %s"
+msgstr "E1314: El nom de la classe ha de començar amb majúsucula: %s"
+
 msgid "--No lines in buffer--"
 msgstr "--Cap línia en el buffer--"
 
@@ -8361,7 +8504,8 @@ msgstr "s'esperava un objecte bytes() o 
 #, c-format
 msgid ""
 "expected int(), long() or something supporting coercing to long(), but got %s"
-msgstr "s'esperava int(), long() o un objecte convertible a long(), s'ha obtingut %s"
+msgstr ""
+"s'esperava int(), long() o un objecte convertible a long(), s'ha obtingut %s"
 
 #, c-format
 msgid "expected int() or something supporting coercing to int(), but got %s"
@@ -8415,7 +8559,8 @@ msgstr "hashtab ha canviat durant la iteració"
 
 #, c-format
 msgid "expected sequence element of size 2, but got sequence of size %d"
-msgstr "s'esperava una seqüència de mida 2, s'ha obtingut una seqüència de mida %d"
+msgstr ""
+"s'esperava una seqüència de mida 2, s'ha obtingut una seqüència de mida %d"
 
 msgid "list constructor does not accept keyword arguments"
 msgstr "el constructor de llistes no accepta arguments amb nom"
@@ -8838,6 +8983,9 @@ msgstr "visualització de text"
 msgid "number of lines to scroll for CTRL-U and CTRL-D"
 msgstr "nombre de línies que es desplacen amb CTRL-U i CTRL-D"
 
+msgid "scroll by screen line"
+msgstr "desplaçament per línia de pantalla"
+
 msgid "number of screen lines to show around the cursor"
 msgstr "nombre de línies que es mostren al voltant del cursor"
 
@@ -9047,6 +9195,9 @@ msgstr ""
 msgid "a new window is put below the current one"
 msgstr "una finestra nova es posiciona a sota de l'actual"
 
+msgid "determines scroll behavior for split windows"
+msgstr "determina el sistema de desplaçament en finestres partides"
+
 msgid "a new window is put right of the current one"
 msgstr "una finestra nova es posiciona a la dreta de l'actual"
 
@@ -9119,6 +9270,9 @@ msgstr "demana els codis de tecla al ter
 msgid "terminal that requires extra redrawing"
 msgstr "el terminal requereix redibuixar la pantalla més freqüentment"
 
+msgid "what keyboard protocol to use for which terminal"
+msgstr "quin protocol de teclat utilitza cada terminal"
+
 msgid "recognize keys that start with <Esc> in Insert mode"
 msgstr "reconeix les tecles que comencen amb <Esc> en mode d'inserció"
 
@@ -9171,6 +9325,9 @@ msgstr ""
 msgid "hide the mouse pointer while typing"
 msgstr "amaga el punter del ratolí quan s'escriu"
 
+msgid "report mouse movement events"
+msgstr "reporta els moviments del ratolí com a esdeveniments"
+
 msgid ""
 "\"extend\", \"popup\" or \"popup_setpos\"; what the right\n"
 "mouse button is used for"
@@ -9523,7 +9680,7 @@ msgid "enable specific indenting for C c
 msgstr "activa la sagnia específica per a codi C"
 
 msgid "options for C-indenting"
-msgstr "opcions per a la sagnia per a codi C"
+msgstr "opcions de sagnia per a codi C"
 
 msgid "keys that trigger C-indenting in Insert mode"
 msgstr "tecles que activen la sagnia de codi C en el mode d'inserció"
@@ -9531,6 +9688,9 @@ msgstr "tecles que activen la sagnia de codi C en el mode d'inserció"
 msgid "list of words that cause more C-indent"
 msgstr "llista de paraules que provoquen més sagnia de codi C"
 
+msgid "list of scope declaration names used by cino-g"
+msgstr "llista de noms de declaracions de context utilitzades per cino-g"
+
 msgid "expression used to obtain the indent of a line"
 msgstr "expressió utilitzada per a obtenir la sagnia d'una línia"
 
@@ -9549,6 +9709,9 @@ msgstr "activa el mode lisp"
 msgid "words that change how lisp indenting works"
 msgstr "paraules que alteren el funcionament de la sagnia de lisp"
 
+msgid "options for Lisp indenting"
+msgstr "opcions de sagnia per a Lisp"
+
 msgid "folding"
 msgstr "plecs"
 
@@ -9654,6 +9817,9 @@ msgstr "edició de fitxers binaris"
 msgid "last line in the file has an end-of-line"
 msgstr "l'última línia del fitxer té un final-de-línia"
 
+msgid "last line in the file followed by CTRL-Z"
+msgstr "l'última línia del fitxer va seguida de CTRL-Z"
+
 msgid "fixes missing end-of-line at end of text file"
 msgstr "afegeix un final-de-línia al final del fitxer, si no n'hi ha un"
 
@@ -10109,9 +10275,3 @@ msgstr "nom de la biblioteca dinàmica MzScheme"
 
 msgid "name of the MzScheme GC dynamic library"
 msgstr "nom de la biblioteca dinàmica MzScheme GC"
-
-
-# :command -complete Echo :echo "foo"
-
-
-# la substitució és ">" o "<"