changeset 23466:15fa3923cc49

Update runtime files. Commit: https://github.com/vim/vim/commit/7e6a515ed14e204fafb3dd6e98f2fb543e64aedd Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jan 2 16:39:53 2021 +0100 Update runtime files.
author Bram Moolenaar <Bram@vim.org>
date Sat, 02 Jan 2021 16:45:04 +0100
parents 58bad104e7ee
children 826a6406ea7b
files .github/CODEOWNERS runtime/compiler/ocaml.vim runtime/doc/cmdline.txt runtime/doc/eval.txt runtime/doc/helphelp.txt runtime/doc/intro.txt runtime/doc/message.txt runtime/doc/os_vms.txt runtime/doc/pattern.txt runtime/doc/repeat.txt runtime/doc/tags runtime/doc/term.txt runtime/doc/terminal.txt runtime/doc/tips.txt runtime/doc/todo.txt runtime/doc/version8.txt runtime/doc/vim9.txt runtime/filetype.vim runtime/ftplugin/dune.vim runtime/ftplugin/fstab.vim runtime/ftplugin/ocaml.vim runtime/ftplugin/sexplib.vim runtime/indent/dune.vim runtime/indent/ocaml.vim runtime/syntax/diff.vim runtime/syntax/dune.vim runtime/syntax/fstab.vim runtime/syntax/gift.vim runtime/syntax/ocaml.vim runtime/syntax/opam.vim runtime/syntax/sexplib.vim runtime/syntax/sml.vim src/po/fr.po
diffstat 33 files changed, 1732 insertions(+), 694 deletions(-) [+]
line wrap: on
line diff
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -132,7 +132,6 @@ runtime/syntax/cabal.vim		@coot
 runtime/syntax/cabalconfig.vim		@coot
 runtime/syntax/cabalproject.vim		@coot
 runtime/syntax/cs.vim			@nickspoons
-runtime/syntax/cs.vim			@nickspoons
 runtime/syntax/csh.vim			@cecamp
 runtime/syntax/cucumber.vim		@tpope
 runtime/syntax/datascript.vim		@dpelle
--- a/runtime/compiler/ocaml.vim
+++ b/runtime/compiler/ocaml.vim
@@ -1,11 +1,11 @@
 " Vim Compiler File
 " Compiler:    ocaml
 " Maintainer:  Markus Mottl <markus.mottl@gmail.com>
-" URL:         https://github.com/rgrinberg/vim-ocaml
+" URL:         https://github.com/ocaml/vim-ocaml
 " Last Change:
+"              2020 Mar 28 - Improved error format (Thomas Leonard)
 "              2017 Nov 26 - Improved error format (Markus Mottl)
 "              2013 Aug 27 - Added a new OCaml error format (Markus Mottl)
-"              2013 Jun 30 - Initial version (Marc Weber)
 "
 " Marc Weber's comments:
 " Setting makeprg doesn't make sense, because there is ocamlc, ocamlopt,
@@ -21,6 +21,7 @@
 "
 " So having it here makes people opt-in
 
+
 if exists("current_compiler")
     finish
 endif
@@ -30,6 +31,7 @@ let s:cpo_save = &cpo
 set cpo&vim
 
 CompilerSet errorformat =
+      \%EFile\ \"%f\"\\,\ lines\ %*\\d-%l\\,\ characters\ %c-%*\\d:,
       \%EFile\ \"%f\"\\,\ line\ %l\\,\ characters\ %c-%*\\d:,
       \%EFile\ \"%f\"\\,\ line\ %l\\,\ characters\ %c-%*\\d\ %.%#,
       \%EFile\ \"%f\"\\,\ line\ %l\\,\ character\ %c:%m,
--- a/runtime/doc/cmdline.txt
+++ b/runtime/doc/cmdline.txt
@@ -1,4 +1,4 @@
-*cmdline.txt*   For Vim version 8.2.  Last change: 2020 Sep 14
+*cmdline.txt*   For Vim version 8.2.  Last change: 2020 Dec 26
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -849,6 +849,16 @@ function |expand()|.
 		file name n.  See |:oldfiles| or |v:oldfiles| to get the
 		number.							*E809*
 		{only when compiled with the |+eval| and |+viminfo| features}
+In |Vim9-script| # is used to start a comment, use %% for the alternate file
+name:
+	%	Is replaced with the current file name.
+	%%	Is replaced with the alternate file name.	*:_%%* *c_%%*
+	%%n	(where n is a number) is replaced with		*:_%%0* *:_%%n*
+		the file name of buffer n.  "%%0" is the same as "%%".   *c_%%n*
+	%%%	Is replaced with all names in the argument	*:_%%%* *c_%%%#*
+		list concatenated, separated by spaces.
+	%%<n	(where n is a number > 0) is replaced with old  *:_%%<* *c_%%<*
+		file name n.
 
 Note that these, except "#<n", give the file name as it was typed.  If an
 absolute path is needed (when using the file name from a different directory),
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 8.2.  Last change: 2020 Dec 22
+*eval.txt*	For Vim version 8.2.  Last change: 2020 Dec 29
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -8960,7 +8960,7 @@ searchcount([{options}])					*searchcoun
 						result.  if search exceeded
 						total count, "total" value
 						becomes `maxcount + 1`
-						(default: 0)
+						(default: 99)
 		  pos		|List|		`[lnum, col, off]` value
 						when recomputing the result.
 						this changes "current" result
@@ -10874,7 +10874,7 @@ timer_start({time}, {callback} [, {optio
 		is the timer ID.  The callback is only invoked when Vim is
 		waiting for input.
 		If you want to show a message look at |popup_notification()|
-		to avoid intefering with what the user is doing.
+		to avoid interfering with what the user is doing.
 
 		{options} is a dictionary.  Supported entries:
 		   "repeat"	Number of times to repeat calling the
@@ -12952,7 +12952,7 @@ text...
 :exe[cute] {expr1} ..	Executes the string that results from the evaluation
 			of {expr1} as an Ex command.
 			Multiple arguments are concatenated, with a space in
-			between.  To avoid the extra space use the "."
+			between.  To avoid the extra space use the ".."
 			operator to concatenate strings into one argument.
 			{expr1} is used as the processed command, command line
 			editing keys are not recognized.
--- a/runtime/doc/helphelp.txt
+++ b/runtime/doc/helphelp.txt
@@ -1,4 +1,4 @@
-*helphelp.txt*	For Vim version 8.2.  Last change: 2020 Dec 19
+*helphelp.txt*	For Vim version 8.2.  Last change: 2020 Dec 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -158,6 +158,9 @@ When no argument is given to |:help| the
 will be opened.  Otherwise the specified tag is searched for in all "doc/tags"
 files in the directories specified in the 'runtimepath' option.
 
+If you would like to open the help in the current window, see this tip:
+|help-curwin|.
+
 The initial height of the help window can be set with the 'helpheight' option
 (default 20).
 
--- a/runtime/doc/intro.txt
+++ b/runtime/doc/intro.txt
@@ -1,4 +1,4 @@
-*intro.txt*     For Vim version 8.2.  Last change: 2020 Dec 19
+*intro.txt*     For Vim version 8.2.  Last change: 2020 Dec 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -678,8 +678,8 @@ Normal mode from any other mode.  This c
 Normal mode, without causing a beep like <Esc> would.  However, this does not
 work in Ex mode.  When used after a command that takes an argument, such as
 |f| or |m|, the timeout set with 'ttimeoutlen' applies.
-When focus is in a terminal window, CTRL-\ CTRL-N goes to Normal mode for only
-one command, see |t_CTRL-\_CTRL-N|.
+When focus is in a terminal window, CTRL-\ CTRL-N goes to Normal mode until an
+edit command is entered, see |t_CTRL-\_CTRL-N|.
 
 	*CTRL-\_CTRL-G* *i_CTRL-\_CTRL-G* *c_CTRL-\_CTRL-G* *v_CTRL-\_CTRL-G*
 The command CTRL-\ CTRL-G or <C-\><C-G> can be used to go to Insert mode when
--- a/runtime/doc/message.txt
+++ b/runtime/doc/message.txt
@@ -1,4 +1,4 @@
-*message.txt*   For Vim version 8.2.  Last change: 2020 Sep 07
+*message.txt*   For Vim version 8.2.  Last change: 2020 Dec 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -794,6 +794,9 @@ and the screen is about to be redrawn:
 -> Press <Enter> or <Space> to redraw the screen and continue, without that
    key being used otherwise.
 -> Press ':' or any other Normal mode command character to start that command.
+   Note that after an external command some special keys, such as the cursor
+   keys, may not work normally, because the terminal is still set to a state
+   for executing the external command.
 -> Press 'k', <Up>, 'u', 'b' or 'g' to scroll back in the messages.  This
    works the same way as at the |more-prompt|.  Only works when 'compatible'
    is off and 'more' is on.
--- a/runtime/doc/os_vms.txt
+++ b/runtime/doc/os_vms.txt
@@ -1,4 +1,4 @@
-*os_vms.txt*    For Vim version 8.2.  Last change: 2020 Jun 07
+*os_vms.txt*    For Vim version 8.2.  Last change: 2020 Dec 30
 
 
 		  VIM REFERENCE MANUAL
@@ -72,7 +72,7 @@ See the file [.SRC]INSTALLVMS.TXT.
 4. Problems						*vms-problems*
 
 The code has been tested under Open VMS 6.2 - 8.2 on Alpha, VAX and IA64
-platforms with the DEC C compiler.  It should work without big problems.
+platforms with the DEC C compiler. It should work without major problems.
 If your system does not have some include libraries you can tune up in
 OS_VMS_CONF.H file.
 
@@ -765,6 +765,13 @@ GNU_TOOLS.ZIP package downloadable from 
 
 9. VMS related changes					*vms-changes*
 
+Version 8.2
+- make all changes needed for clean compile build of v8.2 on VMS on all platforms
+- test on VSI OpenVMS platforms
+- added  XPM support - Motif GUI with toolbar on all platforms
+- XPM v3.4.11 libraries for IA64, AXP and VAX are added 
+- start integrating the new test scripts 
+
 Version 8.1
 - make necessary changes to build v8.1 on VMS
 
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1,4 +1,4 @@
-*pattern.txt*   For Vim version 8.2.  Last change: 2020 Dec 06
+*pattern.txt*   For Vim version 8.2.  Last change: 2020 Dec 25
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -394,15 +394,19 @@ the pattern will not match.  This is onl
 ==============================================================================
 3. Magic							*/magic*
 
-Some characters in the pattern are taken literally.  They match with the same
-character in the text.  When preceded with a backslash however, these
-characters get a special meaning.
+Some characters in the pattern, such as letters, are taken literally.  They
+match exactly the same character in the text.  When preceded with a backslash
+however, these characters may get a special meaning.  For example, "a" matches
+the letter "a", while "\a" matches any alphabetic character.
 
 Other characters have a special meaning without a backslash.  They need to be
-preceded with a backslash to match literally.
+preceded with a backslash to match literally.  For example "." matches any
+character while "\." matches a dot.
 
 If a character is taken literally or not depends on the 'magic' option and the
-items mentioned next.
+items in the pattern mentioned next.  The 'magic' option should always be set,
+but it can be switched off for Vi compatibility.  We mention the effect of
+'nomagic' here for completeness, but we recommend against using that.
 							*/\m* */\M*
 Use of "\m" makes the pattern after it be interpreted as if 'magic' is set,
 ignoring the actual value of the 'magic' option.
@@ -411,30 +415,28 @@ Use of "\M" makes the pattern after it b
 Use of "\v" means that after it, all ASCII characters except '0'-'9', 'a'-'z',
 'A'-'Z' and '_' have special meaning: "very magic"
 
-Use of "\V" means that after it, only a backslash and terminating character
-(usually / or ?) have special meaning: "very nomagic"
+Use of "\V" means that after it, only a backslash and the terminating
+character (usually / or ?) have special meaning: "very nomagic"
 
 Examples:
 after:	  \v	   \m	    \M	     \V		matches ~
 		'magic' 'nomagic'
-	  $	   $	    $	     \$		matches end-of-line
-	  .	   .	    \.	     \.		matches any character
+	  a	   a	    a	     a		literal 'a'
+	  \a	   \a	    \a	     \a		any alphabetic character
+	  .	   .	    \.	     \.		any character
+	  \.	   \.	    .	     .		literal dot
+	  $	   $	    $	     \$		end-of-line
 	  *	   *	    \*	     \*		any number of the previous atom
 	  ~	   ~	    \~	     \~		latest substitute string
-	  ()	   \(\)     \(\)     \(\)	grouping into an atom
-	  |	   \|	    \|	     \|		separating alternatives
-	  \a	   \a	    \a	     \a		alphabetic character
+	  ()	   \(\)     \(\)     \(\)	group as an atom
+	  |	   \|	    \|	     \|		nothing: separates alternatives
 	  \\	   \\	    \\	     \\		literal backslash
-	  \.	   \.	    .	     .		literal dot
-	  \{	   {	    {	     {		literal '{'
-	  a	   a	    a	     a		literal 'a'
+	  \{	   {	    {	     {		literal curly brace
 
 {only Vim supports \m, \M, \v and \V}
 
-It is recommended to always keep the 'magic' option at the default setting,
-which is 'magic'.  This avoids portability problems.  To make a pattern immune
-to the 'magic' option being set or not, put "\m" or "\M" at the start of the
-pattern.
+If you want to you can make a pattern immune to the 'magic' option being set
+or not by putting "\m" or "\M" at the start of the pattern.
 
 ==============================================================================
 4. Overview of pattern items				*pattern-overview*
--- a/runtime/doc/repeat.txt
+++ b/runtime/doc/repeat.txt
@@ -1,4 +1,4 @@
-*repeat.txt*    For Vim version 8.2.  Last change: 2020 Oct 09
+*repeat.txt*    For Vim version 8.2.  Last change: 2021 Jan 02
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -354,6 +354,14 @@ For writing a Vim script, see chapter 41
 			Vim version, or update Vim to a newer version.  See
 			|vimscript-version| for what changed between versions.
 
+:vim9script [noclear]				*:vim9* *:vim9script*
+			Marks a script file as containing |Vim9-script|
+			commands.  Also see |vim9-namespace|.
+			Must be the first command in the file.
+			For [noclear] see |vim9-reload|.
+			Without the |+eval| feature this changes the syntax
+			for some commands.
+			 
 						*:scr* *:scriptnames*
 :scr[iptnames]		List all sourced script names, in the order they were
 			first sourced.  The number is used for the script ID
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2072,6 +2072,11 @@ 90.5	usr_90.txt	/*90.5*
 :_#<	cmdline.txt	/*:_#<*
 :_#n	cmdline.txt	/*:_#n*
 :_%	cmdline.txt	/*:_%*
+:_%%	cmdline.txt	/*:_%%*
+:_%%%	cmdline.txt	/*:_%%%*
+:_%%0	cmdline.txt	/*:_%%0*
+:_%%<	cmdline.txt	/*:_%%<*
+:_%%n	cmdline.txt	/*:_%%n*
 :_%:	cmdline.txt	/*:_%:*
 :_%<	cmdline.txt	/*:_%<*
 :a	insert.txt	/*:a*
@@ -3389,8 +3394,8 @@ 90.5	usr_90.txt	/*90.5*
 :vie	editing.txt	/*:vie*
 :view	editing.txt	/*:view*
 :vim	quickfix.txt	/*:vim*
-:vim9	vim9.txt	/*:vim9*
-:vim9script	vim9.txt	/*:vim9script*
+:vim9	repeat.txt	/*:vim9*
+:vim9script	repeat.txt	/*:vim9script*
 :vimgrep	quickfix.txt	/*:vimgrep*
 :vimgrepa	quickfix.txt	/*:vimgrepa*
 :vimgrepadd	quickfix.txt	/*:vimgrepadd*
@@ -5152,6 +5157,7 @@ VMS	os_vms.txt	/*VMS*
 Vi	intro.txt	/*Vi*
 View	starting.txt	/*View*
 Vim9	vim9.txt	/*Vim9*
+Vim9-script	vim9.txt	/*Vim9-script*
 VimEnter	autocmd.txt	/*VimEnter*
 VimLeave	autocmd.txt	/*VimLeave*
 VimLeavePre	autocmd.txt	/*VimLeavePre*
@@ -5563,6 +5569,10 @@ c_##	cmdline.txt	/*c_##*
 c_#<	cmdline.txt	/*c_#<*
 c_#n	cmdline.txt	/*c_#n*
 c_%	cmdline.txt	/*c_%*
+c_%%	cmdline.txt	/*c_%%*
+c_%%%#	cmdline.txt	/*c_%%%#*
+c_%%<	cmdline.txt	/*c_%%<*
+c_%%n	cmdline.txt	/*c_%%n*
 c_<BS>	cmdline.txt	/*c_<BS>*
 c_<C-Left>	cmdline.txt	/*c_<C-Left>*
 c_<C-R>	cmdline.txt	/*c_<C-R>*
@@ -5748,6 +5758,7 @@ characterwise-visual	visual.txt	/*charac
 charclass()	eval.txt	/*charclass()*
 charconvert_from-variable	eval.txt	/*charconvert_from-variable*
 charconvert_to-variable	eval.txt	/*charconvert_to-variable*
+charidx()	eval.txt	/*charidx()*
 charity	uganda.txt	/*charity*
 charset	mbyte.txt	/*charset*
 charset-conversion	mbyte.txt	/*charset-conversion*
@@ -7147,6 +7158,7 @@ hebrew	hebrew.txt	/*hebrew*
 hebrew.txt	hebrew.txt	/*hebrew.txt*
 help	helphelp.txt	/*help*
 help-context	help.txt	/*help-context*
+help-curwin	tips.txt	/*help-curwin*
 help-summary	usr_02.txt	/*help-summary*
 help-tags	tags	1
 help-translated	helphelp.txt	/*help-translated*
@@ -10058,6 +10070,7 @@ vim-variable	eval.txt	/*vim-variable*
 vim.vim	syntax.txt	/*vim.vim*
 vim7	version7.txt	/*vim7*
 vim8	version8.txt	/*vim8*
+vim9	vim9.txt	/*vim9*
 vim9-classes	vim9.txt	/*vim9-classes*
 vim9-const	vim9.txt	/*vim9-const*
 vim9-declaration	vim9.txt	/*vim9-declaration*
@@ -10067,9 +10080,10 @@ vim9-export	vim9.txt	/*vim9-export*
 vim9-final	vim9.txt	/*vim9-final*
 vim9-gotchas	vim9.txt	/*vim9-gotchas*
 vim9-import	vim9.txt	/*vim9-import*
+vim9-namespace	vim9.txt	/*vim9-namespace*
 vim9-rationale	vim9.txt	/*vim9-rationale*
+vim9-reload	vim9.txt	/*vim9-reload*
 vim9-scopes	vim9.txt	/*vim9-scopes*
-vim9-script	vim9.txt	/*vim9-script*
 vim9-script-intro	usr_46.txt	/*vim9-script-intro*
 vim9-types	vim9.txt	/*vim9-types*
 vim9.txt	vim9.txt	/*vim9.txt*
--- a/runtime/doc/term.txt
+++ b/runtime/doc/term.txt
@@ -1,4 +1,4 @@
-*term.txt*      For Vim version 8.2.  Last change: 2020 Apr 12
+*term.txt*      For Vim version 8.2.  Last change: 2020 Dec 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -1,4 +1,4 @@
-*terminal.txt*	For Vim version 8.2.  Last change: 2020 Nov 25
+*terminal.txt*	For Vim version 8.2.  Last change: 2020 Dec 28
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -742,6 +742,9 @@ term_setapi({buf}, {expr})				*term_seta
 		The default is "Tapi_".  When {expr} is an empty string then
 		no |terminal-api| function can be used for {buf}.
 
+		When used as a method the base is used for {buf}: >
+			GetBufnr()->term_setapi({expr})
+
 term_setansicolors({buf}, {colors})			*term_setansicolors()*
 		Set the ANSI color palette used by terminal {buf}.
 		{colors} must be a List of 16 valid color names or hexadecimal
--- a/runtime/doc/tips.txt
+++ b/runtime/doc/tips.txt
@@ -1,4 +1,4 @@
-*tips.txt*      For Vim version 8.2.  Last change: 2009 Nov 07
+*tips.txt*      For Vim version 8.2.  Last change: 2020 Dec 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -30,6 +30,7 @@ Executing shell commands in a window		|s
 Hex editing					|hex-editing|
 Using <> notation in autocommands		|autocmd-<>|
 Highlighting matching parens			|match-parens|
+Opening help in the current window		|help-curwin|
 
 ==============================================================================
 Editing C programs					*C-editing*
@@ -530,4 +531,28 @@ A slightly more advanced version is used
 	autocmd InsertEnter * match none
 <
 
+==============================================================================
+Opening help in the current window				*help-curwin*
+
+By default, help is displayed in a split window.  If you prefer it opens in
+the current window, try this custom `:HelpCurwin` command:
+>
+	command -bar -nargs=? -complete=help HelpCurwin execute s:HelpCurwin(<q-args>)
+	let s:did_open_help = v:false
+	
+	function s:HelpCurwin(subject) abort
+	  let mods = 'silent noautocmd keepalt'
+	  if !s:did_open_help
+	    execute mods .. ' help'
+	    execute mods .. ' helpclose'
+	    let s:did_open_help = v:true
+	  endif
+	  if !getcompletion(a:subject, 'help')->empty()
+	    execute mods .. ' edit ' .. &helpfile
+	  endif
+	  return 'help ' .. a:subject
+	endfunction
+<
+
+
  vim:tw=78:ts=8:noet:ft=help:norl:
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.2.  Last change: 2020 Dec 22
+*todo.txt*      For Vim version 8.2.  Last change: 2021 Jan 02
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -38,17 +38,11 @@ browser use: https://github.com/vim/vim/
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Rewrite the section on "magic".  Say that 'magic' is normally on, then this
-happens...  If 'magic' is off, then this is different..
-
-test_vim9_cmd: uses uninitialized var
+Reload: How to make sure type of script function hasn't changed?
+
+Valgrind: test_vim9_cmd: uses uninitialized var
 
 Vim9 - Make everything work:
-- For an :autocmd and :command argument defined in Vim9 script, if a following
-  line starts with "|" append it.  It's like line continuation. (#6702)
-- The syntax of a range list[a:b] is ambiguous, is this one "a:b" variable or
-  a range from "a" to "b"?  To avoid confusion, require white space before
-  (and after) the colon?  #7409
 - Implement "export {one, two three}".
 - Use "null" for v:null, like true and false?  #7495
 - ISN_CHECKTYPE could use check_argtype()
@@ -59,7 +53,18 @@ Vim9 - Make everything work:
 - If a :def function is called with a function reference, compile it to get
   the function type.
 	def Filter(x: string, Cond: func(string): bool)
-	Filter(x, { v -> v =~ '^b' })
+	Filter(x, (v) => v =~ '^b')
+- Make inline function work, to be used as a funcref:
+       let Ref = (arg: type): type => {
+	    statement
+	    return expr
+	}
+       let Ref = (arg: type) => {
+	    statement
+	    statement
+	}
+- implement { cmd } compiled
+- implement { cmd } at script level
 - Expand `=expr` in :next, :argedit, :argadd, :argdelete, :drop
 - Expand `=expr` in :vimgrep, :vimgrepadd, :lvimgrep, :lvimgrepadd
 - Expand `=expr` in :mkspell
@@ -68,8 +73,11 @@ Vim9 - Make everything work:
 	map(list, SomeFunc)
 - For builtin functions using tv_get_string*() use check_for_string() to be
   more strict about the argument type.
+- Implement :lockvar and :unlockvar.  How about local variables?  Perhaps only
+  allow this for global variables.  Use :final or :const otherwise.
 - Allow function names that will be script-local to start with lower case
-  letter?
+  letter?  Or also require names with s: prefix to use upper case?
+  Also apply this function references "var ref = SomeFunc"
 - Support passing v:none to use the default argument value. (#6504)
 - Make map() give an error if the resulting type of the first argument is
   wrong.  Only works if the type is known?  Is this slow (need to go over all
@@ -98,7 +106,7 @@ Vim9 - Make everything work:
 - Implement using imported items at script level from "import * as X" in
   eval_variable().  Should pass the ".xxx" that follows and return that.
 - Disallow unlet for local/script/imported vars
-- Make "++nr" work.
+- Make "++nr" work.  "++g:count" doesn't work, thinks it is a range.
 - Make closures work:
   - Create closure in a loop.  Need to make a list of them.
   - nested closure only uses one context, not all (#7150)
@@ -144,10 +152,6 @@ Further improvements:
 - compile options that are an expression, e.g. "expr:" in 'spellsuggest',
   'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert',
   'balloonexpr', 'includeexpr', 'indentexpr', 'formatexpr'.
-- Make inline function work, to be used as a funcref:
-	let ref = def(arg: type): rettype
-	    body
-	enddef
 - compile get_lambda_tv() in popup_add_timeout()
 - inline call to map() and filter()
 - compile "skip" argument of searchpair()
@@ -224,6 +228,7 @@ Terminal debugger:
   with another Vim instance.
 
 Terminal emulator window:
+- Can escape a terminal popup with win_gotoid(), should be an error
 - No support for underline color, t_8u.
 - When in terminal-Normal mode when the job finishes, the cursor jumps to the
   end but the window is not updated.  This only happens when typing "a".
@@ -276,6 +281,8 @@ Have another look at the implementation.
 Patch to implement the vimtutor with a plugin: #6414
 Was originally written by Felipe Morales.
 
+Patch to find Python dll using registry key. (#7540)
+
 Remove SPACE_IN_FILENAME ? It is only used for completion.
 
 Making breakat support multibyte characters (Yasuhiro Matsumoto, #6598)
@@ -663,6 +670,38 @@ Session file contains absolute paths whe
 'sessionoptions', making it impossible to have a session with a relative path.
 (#4450)
 
+Session file only contains local option values for buffers that are in a
+window, not other buffers. (#7532)
+
+Script generated by :mksession does not work well if there are windows with
+modified buffers
+  change "silent only" into "silent only!"
+  change "edit fname" of first buffer to "hide edit fname"
+  skip "badd fname" if "fname" is already in the buffer list
+  remove remark about unloading buffers from documentation
+
+When session file has name in argument list but the buffer was deleted, the
+buffer is not deleted when using the session file. (#1393)
+Should add the buffer in hidden state.
+
+When a session file is created and there are "nofile" buffers, these are not
+filled.  Need to trigger BufReadCmd autocommands.  Also handle deleting the
+initial empty buffer better. (ZyX, 2015 March 8)
+
+Setting the spell file in a session only reads the local additions, not the
+normal spell file. (Enno Nagel, 2014 Mar 29)
+
+Directory wrong in session file, caused by ":lcd" in BufEnter autocommand.
+(Felix Kater, 2009 Mar 3)
+
+Something wrong with session that has "cd" commands and "badd", in such a way
+that Vim doesn't find the edited file in the buffer list, causing the
+ATTENTION message?  (Tony Mechelynck, 2008 Dec 1)
+Also: swap files are in ~/tmp/  One has relative file name ".mozilla/...".
+
+'foldcolumn' in modeline applied to wrong window when using a session. (Teemu
+Likonen, March 19)
+
 When using a timer callback vgetc_busy is reset, allowing for using input().
 But in a channel callback this does not happen.  We need to do something
 similar to check_due_timer().  Also see #3809.
@@ -852,13 +891,6 @@ when adding a sign for every quickfix en
 Win32 key codes are messy.  Mike Williams tried to fix that, but now old
 mappings no longer work.  Create a new terminal for the better solution?
 
-Script generated by :mksession does not work well if there are windows with
-modified buffers
-  change "silent only" into "silent only!"
-  change "edit fname" of first buffer to "hide edit fname"
-  skip "badd fname" if "fname" is already in the buffer list
-  remove remark about unloading buffers from documentation
-
 Compiler warnings (geeknik, 2017 Oct 26):
 - signed integer overflow in do_sub() (#2249)
 - signed integer overflow in get_address() (#2248)
@@ -1120,7 +1152,7 @@ Overlong utf-8 sequence is displayed wro
 #2089)  Patch with possible solution by Björn Linse.
 
 The change list index is local to a buffer, but it doesn't make sense using it
-for another buffer.  (lacygoll) Copy w_changelistidx to wininfo_S and back.
+for another buffer.  (lacygolil) Copy w_changelistidx to wininfo_S and back.
 
 X11: Putting more than about 262040 characters of text on the clipboard and
 pasting it in another Vim doesn't work.  (Dominique Pelle, 2008 Aug 21-23)
@@ -1227,10 +1259,6 @@ Json string with trailing \u should be a
 import can't be used in define option when include matches too.
 (Romain Lafourcade, 2017 Jun 18, #1519)
 
-When session file has name in argument list but the buffer was deleted, the
-buffer is not deleted when using the session file. (#1393)
-Should add the buffer in hidden state.
-
 Wrong diff highlighting with three files. (2016 Oct 20, #1186)
 Also get E749 on exit.
 Another example in #1309
@@ -1689,10 +1717,6 @@ Doesn't work completely (Dominique Orban
 
 Patch to add a "literal" argument to bufnr().  (Olaf Dabrunz, 2015 Aug 4)
 
-When a session file is created and there are "nofile" buffers, these are not
-filled.  Need to trigger BufReadCmd autocommands.  Also handle deleting the
-initial empty buffer better. (ZyX, 2015 March 8)
-
 Extended file attributes lost on write (backupcopy=no).  Issue 306.
 
 Patch to add :lockjumps. (Carlo Baldassi, 2015 May 25)
@@ -1821,9 +1845,6 @@ Out of scope:
 - Development work on plugins (although diff with distributed version would be
   useful).
 
-Setting the spell file in a session only reads the local additions, not the
-normal spell file. (Enno Nagel, 2014 Mar 29)
-
 When typing the first character of a command, e.g. "f", then using a menu, the
 menu item doesn't work.  Clear typeahead when using a menu?
 
@@ -2472,9 +2493,6 @@ opening/closing window causes other wind
 height.  Also happens when there is another window in the frame, if it's not
 very high. (Yegappan Lakshmanan, 2010 Jul 22, Michael Peeters, 2010 Jul 22)
 
-Directory wrong in session file, caused by ":lcd" in BufEnter autocommand.
-(Felix Kater, 2009 Mar 3)
-
 Session file generates error upon loading, cause by --remote-silent-tab.
 (7tommm (ytommm) 2010 Nov 24)
 
@@ -2534,11 +2552,6 @@ still delete them.  Also convert all buf
 "gqip" in Insert mode has an off-by-one error, causing it to reflow text.
 (Raul Coronado, 2009 Nov 2)
 
-Something wrong with session that has "cd" commands and "badd", in such a way
-that Vim doesn't find the edited file in the buffer list, causing the
-ATTENTION message?  (Tony Mechelynck, 2008 Dec 1)
-Also: swap files are in ~/tmp/  One has relative file name ".mozilla/...".
-
 MS-Windows: editing the first, empty buffer, 'ffs' set to "unix,dos", ":enew"
 doesn't set 'ff' to "unix".  (Ben Fritz, 2008 Dec 5) Reusing the old buffer
 probably causes this.
@@ -2735,9 +2748,6 @@ New PHP syntax file, use it? (Peter Hodg
 ":echoe" in catch block stops processing, while this doesn't happen outside of
 a catch block. (ZyX, 2011 Jun 2)
 
-'foldcolumn' in modeline applied to wrong window when using a session. (Teemu
-Likonen, March 19)
-
 Test 54 uses shell commands, that doesn't work on non-Unix systems.  Use some
 other way to test buffer-local autocommands.
 
--- a/runtime/doc/version8.txt
+++ b/runtime/doc/version8.txt
@@ -1,4 +1,4 @@
-*version8.txt*  For Vim version 8.2.  Last change: 2020 Oct 25
+*version8.txt*  For Vim version 8.2.  Last change: 2020 Dec 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -3282,7 +3282,7 @@ Solution:   Convert the printer name fro
 Files:	    src/os_mswin.c
 
 Patch 7.4.472
-Problem:    The "precedes" entry in 'listchar' will be drawn when 'showbreak'
+Problem:    The "precedes" entry in 'listchars' will be drawn when 'showbreak'
 	    is set and 'list' is not.
 Solution:   Only draw this character when 'list' is on. (Christian Brabandt)
 Files:	    src/screen.c
@@ -35835,7 +35835,7 @@ Files:	    src/ex_cmds2.c, src/getchar.c
 Patch 8.1.1592
 Problem:    May start file dialog while exiting.
 Solution:   Ignore the "browse" modifier when exiting. (Ozaki Kiichi,
-            closes #4582
+            closes #4582)
 Files:	    src/ex_cmds.c, src/terminal.c
 
 Patch 8.1.1593
@@ -46431,7 +46431,7 @@ Files:      src/buffer.c, src/change.c, 
 
 Patch 8.2.0854
 Problem:    Xxd cannot show offset as a decimal number.
-Solution:   Add the "-d" flag. (Aapo Rantalainen, closes #5616
+Solution:   Add the "-d" flag. (Aapo Rantalainen, closes #5616)
 Files:      src/testdir/test_xxd.vim, src/xxd/xxd.c
 
 Patch 8.2.0855
@@ -46661,7 +46661,7 @@ Solution:   Use // comments. (Yegappan L
 Files:      src/gui_xim.c
 
 Patch 8.2.0890
-Problem:    No color in terminal window when 'termguicolor' is set.
+Problem:    No color in terminal window when 'termguicolors' is set.
 Solution:   Clear the underline color. (closes #6186)
 Files:      src/highlight.c
 
@@ -46728,7 +46728,7 @@ Files:      runtime/doc/change.txt, src/
 
 Patch 8.2.0902
 Problem:    Using searchcount() in 'statusline' causes an error.
-Solution:   Avoid saving/restoring the search patten recursively.
+Solution:   Avoid saving/restoring the search pattern recursively.
             (closes #6194)
 Files:      src/search.c, src/testdir/test_search_stat.vim,
             src/testdir/dumps/Test_searchstat_4.dump
@@ -48832,7 +48832,7 @@ Files:      src/buffer.c, src/testdir/te
 Patch 8.2.1260
 Problem:    There is no good test for CursorHold.
 Solution:   Add a test.  Remove duplicated test. (Yegappan Lakshmanan,
-            closes #6503
+            closes #6503)
 Files:      src/testdir/test_autocmd.vim, src/testdir/test_buffer.vim,
             src/testdir/test_normal.vim
 
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -1,4 +1,4 @@
-*vim9.txt*	For Vim version 8.2.  Last change: 2020 Dec 24
+*vim9.txt*	For Vim version 8.2.  Last change: 2021 Jan 02
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -14,7 +14,7 @@ features in Vim9 script.
 THIS IS STILL UNDER DEVELOPMENT - ANYTHING CAN BREAK - ANYTHING CAN CHANGE
 
 
-1.  What is Vim9 script?		|vim9-script|
+1.  What is Vim9 script?		|Vim9-script|
 2.  Differences				|vim9-differences|
 3.  New style functions			|fast-functions|
 4.  Types				|vim9-types|
@@ -565,6 +565,13 @@ command: >
 
 White space is required around most operators.
 
+White space is required in a sublist (list slice) around the ":", except at
+the start and end: >
+	otherlist = mylist[v : count]  	# v:count has a different meaning
+	otherlist = mylist[:]		# make a copy of the List
+	otherlist = mylist[v :]
+	otherlist = mylist[: v]
+
 White space is not allowed:
 - Between a function name and the "(": >
 	call Func (arg)	   # Error!
@@ -595,7 +602,7 @@ is either falsy or truthy.  This is most
 empty list and dict is falsy:
 
 	type		truthy when ~
-	bool		v:true or 1
+	bool		true, v:true or 1
 	number		non-zero
 	float		non-zero
 	string		non-empty
@@ -603,11 +610,11 @@ empty list and dict is falsy:
 	list		non-empty (different from JavaScript)
 	dictionary	non-empty (different from JavaScript)
 	func		when there is a function name
-	special		v:true
+	special		true or v:true
 	job		when not NULL
 	channel		when not NULL
 	class		when not NULL
-	object		when not NULL (TODO: when isTrue() returns v:true)
+	object		when not NULL (TODO: when isTrue() returns true)
 
 The boolean operators "||" and "&&" expect the values to be boolean, zero or
 one: >
@@ -629,12 +636,15 @@ result is a boolean.  "!!" can be used t
 When using "`.."` for string concatenation arguments of simple types are
 always converted to string: >
 	'hello ' .. 123  == 'hello 123'
-	'hello ' .. v:true  == 'hello v:true'
+	'hello ' .. v:true  == 'hello true'
 
 Simple types are string, float, special and bool.  For other types |string()|
 can be used.
 							*false* *true*
-In Vim9 script one can use "true" for v:true and "false" for v:false.
+In Vim9 script one can use "true" for v:true and "false" for v:false.  When
+converting a boolean to a string "false" and "true" are used, not "v:false"
+and "v:true" like in legacy script.  "v:none" and "v:null" are not changed,
+they are only used in JSON.
 
 Indexing a string with [idx] or [idx, idx] uses character indexes instead of
 byte indexes. Example: >
--- 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:	2020 Dec 07
+" Last Change:	2020 Dec 24
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
--- a/runtime/ftplugin/dune.vim
+++ b/runtime/ftplugin/dune.vim
@@ -1,7 +1,7 @@
 " Language:    Dune buildsystem
 " Maintainer:  Markus Mottl        <markus.mottl@gmail.com>
 "              Anton Kochkov       <anton.kochkov@gmail.com>
-" URL:         https://github.com/rgrinberg/vim-ocaml
+" URL:         https://github.com/ocaml/vim-ocaml
 " Last Change:
 "              2018 Nov 3 - Added commentstring (Markus Mottl)
 "              2017 Sep 6 - Initial version (Etienne Millon)
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/fstab.vim
@@ -0,0 +1,19 @@
+" Vim ftplugin file
+" Language: fstab file
+" Maintainer: Radu Dineiu <radu.dineiu@gmail.com>
+" URL: https://raw.github.com/rid9/vim-fstab/master/ftplugin/fstab.vim
+" Last Change: 2020 Dec 29
+" Version: 1.0
+"
+" Credits:
+"   Subhaditya Nath <sn03.general@gmail.com>
+
+if exists("b:did_ftplugin")
+	finish
+endif
+let b:did_ftplugin = 1
+
+setlocal commentstring=#%s
+let b:undo_ftplugin = "setlocal commentstring<"
+
+" vim: ts=8 ft=vim
\ No newline at end of file
--- a/runtime/ftplugin/ocaml.vim
+++ b/runtime/ftplugin/ocaml.vim
@@ -5,7 +5,7 @@
 "              Pierre Vittet       <pierre-vittet@pvittet.com>
 "              Stefano Zacchiroli  <zack@bononia.it>
 "              Vincent Aravantinos <firstname.name@imag.fr>
-" URL:         https://github.com/rgrinberg/vim-ocaml
+" URL:         https://github.com/ocaml/vim-ocaml
 " Last Change:
 "              2013 Oct 27 - Added commentstring (MM)
 "              2013 Jul 26 - load default compiler settings (MM)
@@ -38,7 +38,8 @@ let s:cposet=&cpoptions
 set cpo&vim
 
 " Comment string
-setlocal comments=
+setlocal comments=sr:(*\ ,mb:\ ,ex:*)
+setlocal comments^=sr:(**,mb:\ \ ,ex:*)
 setlocal commentstring=(*%s*)
 
 " Add mappings, unless the user didn't want this.
@@ -391,9 +392,9 @@ endfunction
     endif
   endfun
 
-  " This variable contain a dictionnary of list. Each element of the dictionnary
-  " represent an annotation system. An annotation system is a list with :
-  " - annotation file name as it's key
+  " This variable contains a dictionary of lists. Each element of the dictionary
+  " represents an annotation system. An annotation system is a list with:
+  " - annotation file name as its key
   " - annotation file path as first element of the contained list
   " - build path as second element of the contained list
   " - annot_file_last_mod (contain the date of .annot file) as third element
@@ -521,7 +522,7 @@ endfunction
   "c. link this stuff with what the user wants
   " ie. get the expression selected/under the cursor
 
-    let s:ocaml_word_char = '\w|[À-ÿ]|'''
+    let s:ocaml_word_char = '\w|[\xc0-\xff]|'''
 
       "In:  the current mode (eg. "visual", "normal", etc.)
       "Out: the borders of the expression we are looking for the type
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/sexplib.vim
@@ -0,0 +1,15 @@
+" Vim filetype plugin file
+" Language:    Sexplib
+" Maintainer:  Markus Mottl        <markus.mottl@gmail.com>
+" URL:         https://github.com/ocaml/vim-ocaml
+" Last Change:
+"              2017 Apr 12 - First version (MM)
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin=1
+
+" Comment string
+setl commentstring=;\ %s
+setl comments=:;
new file mode 100644
--- /dev/null
+++ b/runtime/indent/dune.vim
@@ -0,0 +1,13 @@
+" Vim indent file
+" Language: dune
+" Maintainers:  Markus Mottl         <markus.mottl@gmail.com>
+" URL:          https://github.com/ocaml/vim-ocaml
+" Last Change:  2021 Jan 01
+
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+" dune format-dune-file uses 1 space to indent
+setlocal softtabstop=1 shiftwidth=1 expandtab
--- a/runtime/indent/ocaml.vim
+++ b/runtime/indent/ocaml.vim
@@ -3,7 +3,7 @@
 " Maintainers:  Jean-Francois Yuen   <jfyuen@happycoders.org>
 "               Mike Leary           <leary@nwlink.com>
 "               Markus Mottl         <markus.mottl@gmail.com>
-" URL:          http://www.ocaml.info/vim/indent/ocaml.vim
+" URL:          https://github.com/ocaml/vim-ocaml
 " Last Change:  2017 Jun 13
 "               2005 Jun 25 - Fixed multiple bugs due to 'else\nreturn ind' working
 "               2005 May 09 - Added an option to not indent OCaml-indents specially (MM)
@@ -30,7 +30,8 @@ setlocal nosmartindent
 " Comment formatting
 if !exists("no_ocaml_comments")
  if (has("comments"))
-   setlocal comments=sr:(*,mb:*,ex:*)
+   setlocal comments=sr:(*\ ,mb:\ ,ex:*)
+   setlocal comments^=sr:(**,mb:\ \ ,ex:*)
    setlocal fo=cqort
  endif
 endif
--- a/runtime/syntax/diff.vim
+++ b/runtime/syntax/diff.vim
@@ -2,7 +2,7 @@
 " Language:	Diff (context or unified)
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
 "               Translations by Jakson Alves de Aquino.
-" Last Change:	2020 Dec 07
+" Last Change:	2020 Dec 30
 
 " Quit when a (custom) syntax file was already loaded
 if exists("b:current_syntax")
@@ -348,11 +348,16 @@ syn match diffLine	"^\d\+\(,\d\+\)\=[cda
 syn match diffFile	"^diff\>.*"
 syn match diffFile	"^Index: .*"
 syn match diffFile	"^==== .*"
-" Old style diff uses *** for old and --- for new.
-" Unified diff uses --- for old and +++ for new; names are wrong but it works.
-syn match diffOldFile	"^+++ .*"
-syn match diffOldFile	"^\*\*\* .*"
-syn match diffNewFile	"^--- .*"
+
+if search('^@@ -\S\+ +\S\+ @@', 'nw', '', 100)
+  " unified
+  syn match diffOldFile	"^--- .*"
+  syn match diffNewFile	"^+++ .*"
+else
+  " context / old style
+  syn match diffOldFile	"^\*\*\* .*"
+  syn match diffNewFile	"^--- .*"
+endif
 
 " Used by git
 syn match diffIndexLine	"^index \x\x\x\x.*"
--- a/runtime/syntax/dune.vim
+++ b/runtime/syntax/dune.vim
@@ -1,7 +1,8 @@
+" Vim syntax file
 " Language:    Dune buildsystem
 " Maintainer:  Markus Mottl        <markus.mottl@gmail.com>
 "              Anton Kochkov       <anton.kochkov@gmail.com>
-" URL:         https://github.com/rgrinberg/vim-ocaml
+" URL:         https://github.com/ocaml/vim-ocaml
 " Last Change:
 "              2019 Feb 27 - Add newer keywords to the syntax (Simon Cruanes)
 "              2018 May 8 - Check current_syntax (Kawahara Satoru)
@@ -28,7 +29,7 @@ syn keyword lispKey ppx_runtime_librarie
 syn keyword lispKey javascript_files flags ocamlc_flags ocamlopt_flags pps staged_pps
 syn keyword lispKey library_flags c_flags c_library_flags kind package action
 syn keyword lispKey deps targets locks fallback
-syn keyword lispKey inline_tests tests names
+syn keyword lispKey inline_tests tests test names
 
 syn keyword lispAtom true false
 
--- a/runtime/syntax/fstab.vim
+++ b/runtime/syntax/fstab.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language: fstab file
 " Maintainer: Radu Dineiu <radu.dineiu@gmail.com>
-" URL: https://raw.github.com/rid9/vim-fstab/master/fstab.vim
-" Last Change: 2020 Aug 06
+" URL: https://raw.github.com/rid9/vim-fstab/master/syntax/fstab.vim
+" Last Change: 2020 Dec 30
 " Version: 1.4
 "
 " Credits:
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/gift.vim
@@ -0,0 +1,216 @@
+" Vim syntax file
+"
+" Language:        Moodle GIFT (General Import Format Template)
+" Maintainer:      Selim Temizer (http://selimtemizer.com)
+" Creation:        November 28, 2020
+" Latest Revision: December 21, 2020
+" Note:            The order of entities in this file is important!
+
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+
+setlocal conceallevel=1
+
+"-----------------------------------------------
+" GIFT entities
+
+syn match giftS        "\~"          contained                    "GIFT special characters
+syn match giftS         "="          contained
+syn match giftS         "#"          contained
+syn match giftS         "{"          contained
+syn match giftS         "}"          contained
+syn match giftS         ":"          contained
+
+syn match giftES     "\\\~"          contained  conceal  cchar=~  "GIFT escaped special characters
+syn match giftES      "\\="          contained  conceal  cchar==
+syn match giftES      "\\#"          contained  conceal  cchar=#
+syn match giftES      "\\{"          contained  conceal  cchar={
+syn match giftES      "\\}"          contained  conceal  cchar=}
+syn match giftES      "\\:"          contained  conceal  cchar=:
+
+syn match giftEN      "\\n"          contained  conceal  cchar=n  "GIFT escaped newline
+
+syn match giftFormat  "\[html]"      contained                    "GIFT formats
+syn match giftFormat  "\[plain]"     contained
+syn match giftFormat  "\[moodle]"    contained
+syn match giftFormat  "\[markdown]"  contained
+
+"--------------------------------------------------------
+" HTML entities
+
+syn match giftH            "<"       contained                    "HTML characters that might need to be handled/escaped
+syn match giftH            ">"       contained
+syn match giftH            "&"       contained
+
+syn match giftEH        "&lt;"       contained  conceal  cchar=<  "HTML escaped characters
+syn match giftEH        "&gt;"       contained  conceal  cchar=>
+syn match giftEH       "&amp;"       contained  conceal  cchar=&
+syn match giftEH      "&nbsp;"       contained  conceal  cchar=_
+
+"-------------------------------------------------------
+" Answer components: Feedback and general feedback
+
+syn match giftFB           "#\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|#\|####\|}\)"           contained  contains=giftF       "Feedback block
+syn match giftF         "#\zs\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|#\|####\|}\)"           contained  contains=@giftCEF    "Feedback
+
+syn match giftGFB          "####\_.\{-}\(\_^\|[^\\]\)\ze}"                            contained  contains=giftGF      "General feedback block
+syn match giftGF        "####\zs\_.\{-}\(\_^\|[^\\]\)\ze}"                            contained  contains=@giftCEF    "General feedback
+
+"------------------------------------------------------
+" Answer components: Other components
+
+syn keyword giftTF      T TRUE F FALSE                                                contained
+
+syn match   giftNum1    "[-+]\=[.0-9]\+"                                              contained                       "Something matching a number
+
+syn match   giftNum2    "[-+]\=[.0-9]\+\s*:\s*[-+]\=[.0-9]\+"                         contained  contains=giftNum2D   "Number with error margin
+syn match   giftNum2D                    ":"                                          contained                       "Associated delimiter
+
+syn match   giftNum3    "[-+]\=[.0-9]\+\s*\.\.\s*[-+]\=[.0-9]\+"                      contained  contains=giftNum3D   "Number as min/max range
+syn match   giftNum3D                    "\.\."                                       contained                       "Associated delimiter
+
+syn match   giftWeightB    "%-*[0-9]\{1,2}\.\?[0-9]*%"                                contained  contains=giftWeight  "Weight block
+syn match   giftWeight  "%\zs-*[0-9]\{1,2}\.\?[0-9]*\ze%"                             contained                       "Weight
+
+"-----------------------------------------------------
+" Answer choices
+
+syn match giftWrongNum  "\~\zs\_.\{-}\(\_^\|[^\\]\)\ze\(####\|}\)"                    contained  contains=@giftCEFF             "Wrong numeric choice
+syn match giftRightNum   "=\zs\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)"             contained  contains=@giftCEFFW,@giftNums  "Right numeric choice
+
+syn match giftWrong     "\~\zs\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)"             contained  contains=@giftCEFFW            "Wrong choice
+syn match giftRight      "=\zs\_.\{-}\(\ze->\|\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)\)"  contained  contains=@giftCEFFW            "Right choice
+syn match giftMatchB                "->\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)"    contained  contains=giftMatch             "Match choice block
+syn match giftMatch              "->\zs\_.\{-}\(\_^\|[^\\]\)\ze\(=\|\~\|####\|}\)"    contained  contains=@giftCE               "Match choice
+
+"----------------------------------------------------
+" Answer
+
+syn match giftAnswer      "{\_.\{-}\(\_^\|[^\\]\)}"                                   contained  keepend  contains=@giftA     "General answer
+syn match giftAnswer      "{}"                                                        contained                               "Minimal answer
+
+syn match giftAnswerNum      "{\_[[:space:]]*#\_[^#]\_.\{-}\(\_^\|[^\\]\)}"           contained  keepend  contains=@giftANum  "Numeric answer
+syn match giftAnswerNumD  "{\zs\_[[:space:]]*#"                                       contained                               "Associated delimiter
+
+"---------------------------------------------------
+" Question
+
+" The first pattern matches the last question at the end of the file (in case there is no empty line coming after).
+" However, it slows down parsing (and especially scrolling up), therefore it is commented out.
+
+"syn match giftQuestion  "[^{[:space:]]\_.\{-}\%$"                                               keepend  contains=@giftCEF,giftAnswer,giftAnswerNum
+ syn match giftQuestion  "[^{[:space:]]\_.\{-}\n\(\s*\n\)\+"                                     keepend  contains=@giftCEF,giftAnswer,giftAnswerNum
+
+"--------------------------------------------------
+" Question name
+
+syn match giftName       "::\_.\{-}::"                                                           contains=@giftCE,giftNameD  "Question name
+syn match giftNameD      "::"                                                         contained                              "Associated delimiter
+
+"-------------------------------------------------
+" Category
+
+syn match giftCategoryB  "^\s*\$CATEGORY:.*\n\+"                                                 contains=giftCategory       "Category block
+syn match giftCategory   "^\s*\$CATEGORY:\zs.*\ze\n"                                  contained                              "Category
+
+"------------------------------------------------
+" Comments (may need to be the last entity)
+
+syn keyword giftTodo     FIXME TODO NOTE FIX XXX                                      contained
+
+syn match   giftIdB         "\[id:\(\\]\|[^][:cntrl:]]\)\+]"                          contained  contains=giftId             "Id block
+syn match   giftId       "\[id:\zs\(\\]\|[^][:cntrl:]]\)\+\ze]"                       contained                              "Id
+
+syn match   giftTagB        "\[tag:\(\\]\|[^]<>`[:cntrl:]]\)\+]"                      contained  contains=giftTag            "Tag block
+syn match   giftTag      "\[tag:\zs\(\\]\|[^]<>`[:cntrl:]]\)\+\ze]"                   contained                              "Tag
+
+syn match   giftComment  "^\s*//.*"                                                              contains=giftTodo,giftIdB,giftTagB
+
+"-----------------------------------------------
+" Clusters
+
+"Comments and entities (to be escaped)
+syn cluster giftCE    contains=giftComment,giftS,giftES,giftEN,giftH,giftEH
+
+"The above plus format
+syn cluster giftCEF   contains=@giftCE,giftFormat
+
+"The above plus feedback block
+syn cluster giftCEFF  contains=@giftCEF,giftFB
+
+"The above plus weight block
+syn cluster giftCEFFW contains=@giftCEFF,giftWeightB
+
+"Possible numerical representations
+syn cluster giftNums  contains=giftNum1,giftNum2,giftNum3
+
+"Possible contents of answers
+syn cluster giftA     contains=giftComment,giftTF,giftWrong,giftRight,giftMatchB,giftFB,giftGFB
+
+"Possible contents of numerical answers
+syn cluster giftANum  contains=giftAnswerNumD,giftComment,@giftNums,giftWrongNum,giftRightNum,giftFB,giftGFB
+
+"-----------------------------------------------
+
+let b:current_syntax = "gift"
+
+"-----------------------------------------------
+
+hi Conceal   ctermbg=NONE ctermfg=Blue       guibg=NONE guifg=Blue
+hi Feedback  ctermbg=NONE ctermfg=DarkCyan   guibg=NONE guifg=DarkCyan
+hi GFeedback ctermbg=NONE ctermfg=DarkGreen  guibg=NONE guifg=DarkGreen
+hi WeightB   ctermbg=NONE ctermfg=DarkYellow guibg=NONE guifg=DarkYellow
+
+"-----------------------------------------------
+
+hi def link giftS          Error
+hi def link giftES         Conceal
+hi def link giftEN         Conceal
+hi def link giftFormat     LineNr
+
+hi def link giftH          Error
+hi def link giftEH         Conceal
+
+hi def link giftFB         PreProc
+hi def link giftF          Feedback
+hi def link giftGFB        Title
+hi def link giftGF         GFeedback
+
+hi def link giftTF         Question
+hi def link giftNum1       Question
+hi def link giftNum2       Question
+hi def link giftNum2D      Special
+hi def link giftNum3       Question
+hi def link giftNum3D      Special
+hi def link giftWeightB    WeightB
+hi def link giftWeight     Identifier
+
+hi def link giftWrongNum   Constant
+hi def link giftRightNum   Question
+hi def link giftWrong      Constant
+hi def link giftRight      Question
+hi def link giftMatchB     ModeMsg
+hi def link giftMatch      Constant
+
+hi def link giftAnswer     MoreMsg
+hi def link giftAnswerNum  MoreMsg
+hi def link giftAnswerNumD Identifier
+
+hi def link giftQuestion   Identifier
+
+hi def link giftName       PreProc
+hi def link giftNameD      Directory
+
+hi def link giftCategoryB  LineNr
+hi def link giftCategory   Directory
+
+hi def link giftTodo       Todo
+hi def link giftIdB        LineNr
+hi def link giftId         Title
+hi def link giftTagB       LineNr
+hi def link giftTag        Constant
+hi def link giftComment    Comment
--- a/runtime/syntax/ocaml.vim
+++ b/runtime/syntax/ocaml.vim
@@ -4,7 +4,7 @@
 " Maintainers:  Markus Mottl      <markus.mottl@gmail.com>
 "               Karl-Heinz Sylla  <Karl-Heinz.Sylla@gmd.de>
 "               Issac Trotts      <ijtrotts@ucdavis.edu>
-" URL:          https://github.com/rgrinberg/vim-ocaml
+" URL:          https://github.com/ocaml/vim-ocaml
 " Last Change:
 "               2018 Nov 08 - Improved highlighting of operators (Maëlan)
 "               2018 Apr 22 - Improved support for PPX (Andrey Popp)
@@ -18,14 +18,20 @@
 " can be distinguished from begin/end, which is used for indentation,
 " and folding. (David Baelde)
 
-" quit when a syntax file was already loaded
+" Quit when a syntax file was already loaded
 if exists("b:current_syntax") && b:current_syntax == "ocaml"
   finish
 endif
 
+let s:keepcpo = &cpo
+set cpo&vim
+
 " ' can be used in OCaml identifiers
 setlocal iskeyword+='
 
+" ` is part of the name of polymorphic variants
+setlocal iskeyword+=`
+
 " OCaml is case sensitive.
 syn case match
 
@@ -123,7 +129,7 @@ syn region   ocamlSig matchgroup=ocamlSi
 syn region   ocamlModSpec matchgroup=ocamlKeyword start="\<module\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contained contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlModTRWith,ocamlMPRestr
 
 " "open"
-syn region   ocamlNone matchgroup=ocamlKeyword start="\<open\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\( *\. *\u\(\w\|'\)*\)*\>" contains=@ocamlAllErrs,ocamlComment
+syn match   ocamlKeyword "\<open\>" skipwhite skipempty nextgroup=ocamlFullMod
 
 " "include"
 syn match    ocamlKeyword "\<include\>" skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod
@@ -225,7 +231,18 @@ syn match    ocamlStar         "*"
 syn match    ocamlAngle        "<"
 syn match    ocamlAngle        ">"
 " Custom indexing operators:
-syn match    ocamlIndexingOp   "\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\(()\|\[]\|{}\)\(<-\)\?"
+syn region   ocamlIndexing matchgroup=ocamlIndexingOp
+  \ start="\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\_s*("
+  \ end=")\(\_s*<-\)\?"
+  \ contains=ALLBUT,@ocamlContained,ocamlParenErr
+syn region   ocamlIndexing matchgroup=ocamlIndexingOp
+  \ start="\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\_s*\["
+  \ end="]\(\_s*<-\)\?"
+  \ contains=ALLBUT,@ocamlContained,ocamlBrackErr
+syn region   ocamlIndexing matchgroup=ocamlIndexingOp
+  \ start="\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\_s*{"
+  \ end="}\(\_s*<-\)\?"
+  \ contains=ALLBUT,@ocamlContained,ocamlBraceErr
 " Extension operators (has to be declared before regular infix operators):
 syn match    ocamlExtensionOp          "#[#~?!.:|&$%<=>@^*/+-]\+"
 " Infix and prefix operators:
@@ -283,7 +300,6 @@ syn sync match ocamlSigSync     groupher
 syn sync match ocamlSigSync     groupthere ocamlSig     "\<end\>"
 
 " Define the default highlighting.
-" Only when an item doesn't have highlighting yet
 
 hi def link ocamlBraceErr	   Error
 hi def link ocamlBrackErr	   Error
@@ -308,14 +324,17 @@ hi def link ocamlModPath	   Include
 hi def link ocamlObject	   Include
 hi def link ocamlModule	   Include
 hi def link ocamlModParam1    Include
+hi def link ocamlGenMod       Include
 hi def link ocamlModType	   Include
 hi def link ocamlMPRestr3	   Include
 hi def link ocamlFullMod	   Include
+hi def link ocamlFuncWith	   Include
+hi def link ocamlModParam     Include
 hi def link ocamlModTypeRestr Include
 hi def link ocamlWith	   Include
 hi def link ocamlMTDef	   Include
-hi def link ocamlSigEncl    ocamlModule
-hi def link ocamlStructEncl ocamlModule
+hi def link ocamlSigEncl	   ocamlModule
+hi def link ocamlStructEncl	   ocamlModule
 
 hi def link ocamlScript	   Include
 
@@ -326,24 +345,25 @@ hi def link ocamlModPreRHS    Keyword
 hi def link ocamlMPRestr2	   Keyword
 hi def link ocamlKeyword	   Keyword
 hi def link ocamlMethod	   Include
+hi def link ocamlArrow	   Keyword
 hi def link ocamlKeyChar	   Keyword
 hi def link ocamlAnyVar	   Keyword
 hi def link ocamlTopStop	   Keyword
 
-hi def link ocamlRefAssign  ocamlKeyChar
-hi def link ocamlEqual	    ocamlKeyChar
-hi def link ocamlStar	    ocamlInfixOp
-hi def link ocamlAngle	    ocamlInfixOp
-hi def link ocamlCons	    ocamlInfixOp
+hi def link ocamlRefAssign    ocamlKeyChar
+hi def link ocamlEqual        ocamlKeyChar
+hi def link ocamlStar         ocamlInfixOp
+hi def link ocamlAngle        ocamlInfixOp
+hi def link ocamlCons         ocamlInfixOp
 
-hi def link ocamlPrefixOp	ocamlOperator
-hi def link ocamlInfixOp	ocamlOperator
-hi def link ocamlExtensionOp	ocamlOperator
-hi def link ocamlIndexingOp	ocamlOperator
+hi def link ocamlPrefixOp       ocamlOperator
+hi def link ocamlInfixOp        ocamlOperator
+hi def link ocamlExtensionOp    ocamlOperator
+hi def link ocamlIndexingOp     ocamlOperator
 
 if exists("ocaml_highlight_operators")
     hi def link ocamlInfixOpKeyword ocamlOperator
-    hi def link ocamlOperator	    Operator
+    hi def link ocamlOperator       Operator
 else
     hi def link ocamlInfixOpKeyword Keyword
 endif
@@ -353,7 +373,7 @@ hi def link ocamlCharacter    Character
 hi def link ocamlNumber	   Number
 hi def link ocamlFloat	   Float
 hi def link ocamlString	   String
-hi def link ocamlQuotedStringDelim  Identifier
+hi def link ocamlQuotedStringDelim Identifier
 
 hi def link ocamlLabel	   Identifier
 
@@ -363,8 +383,11 @@ hi def link ocamlTodo	   Todo
 
 hi def link ocamlEncl	   Keyword
 
-hi def link ocamlPpxEncl    ocamlEncl
+hi def link ocamlPpxEncl       ocamlEncl
 
 let b:current_syntax = "ocaml"
 
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
 " vim: ts=8
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/opam.vim
@@ -0,0 +1,38 @@
+" Vim syntax file
+" Language:    OPAM - OCaml package manager
+" Maintainer:  Markus Mottl        <markus.mottl@gmail.com>
+" URL:         https://github.com/ocaml/vim-ocaml
+" Last Change:
+"              2020 Dec 31 - Added header (Markus Mottl)
+
+if exists("b:current_syntax")
+  finish
+endif
+
+" need %{vars}%
+" env: [[CAML_LD_LIBRARY_PATH = "%{lib}%/stublibs"]]
+syn keyword opamKeyword1 remove depends pin-depends depopts conflicts env packages patches version maintainer tags license homepage authors doc install author available name depexts substs synopsis description
+syn match opamKeyword2 "\v(bug-reports|post-messages|ocaml-version|opam-version|dev-repo|build-test|build-doc|build)"
+
+syn keyword opamTodo FIXME NOTE NOTES TODO XXX contained
+syn match opamComment "#.*$" contains=opamTodo,@Spell
+syn match opamOperator ">\|<\|=\|<=\|>="
+
+syn region opamInterpolate start=/%{/ end=/}%/ contained
+syn region opamString start=/"/ end=/"/ contains=opamInterpolate
+syn region opamSeq start=/\[/ end=/\]/ contains=ALLBUT,opamKeyword1,opamKeyword2
+syn region opamExp start=/{/ end=/}/ contains=ALLBUT,opamKeyword1,opamKeyword2
+
+hi link opamKeyword1 Keyword
+hi link opamKeyword2 Keyword
+
+hi link opamString String
+hi link opamExp Function
+hi link opamSeq Statement
+hi link opamOperator Operator
+hi link opamComment Comment
+hi link opamInterpolate Identifier
+
+let b:current_syntax = "opam"
+
+" vim: ts=2 sw=2
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/sexplib.vim
@@ -0,0 +1,88 @@
+" Vim syntax file
+" Language:     S-expressions as used in Sexplib
+" Filenames:    *.sexp
+" Maintainers:  Markus Mottl      <markus.mottl@gmail.com>
+" URL:          https://github.com/ocaml/vim-ocaml
+" Last Change:  2020 Dec 31 - Updated header for Vim contribution (MM)
+"               2017 Apr 11 - Improved matching of negative numbers (MM)
+"               2012 Jun 20 - Fixed a block comment highlighting bug (MM)
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax") && b:current_syntax == "sexplib"
+  finish
+endif
+
+" Sexplib is case sensitive.
+syn case match
+
+" Comments
+syn keyword  sexplibTodo contained TODO FIXME XXX NOTE
+syn region   sexplibBlockComment matchgroup=sexplibComment start="#|" matchgroup=sexplibComment end="|#" contains=ALLBUT,sexplibQuotedAtom,sexplibUnquotedAtom,sexplibEncl,sexplibComment
+syn match    sexplibSexpComment "#;" skipwhite skipempty nextgroup=sexplibQuotedAtomComment,sexplibUnquotedAtomComment,sexplibListComment,sexplibComment
+syn region   sexplibQuotedAtomComment start=+"+ skip=+\\\\\|\\"+ end=+"+ contained
+syn match    sexplibUnquotedAtomComment /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*/ contained
+syn region   sexplibListComment matchgroup=sexplibComment start="(" matchgroup=sexplibComment end=")" contained contains=ALLBUT,sexplibEncl,sexplibString,sexplibQuotedAtom,sexplibUnquotedAtom,sexplibTodo,sexplibNumber,sexplibFloat
+syn match    sexplibComment ";.*" contains=sexplibTodo
+
+" Atoms
+syn match    sexplibUnquotedAtom /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*/
+syn region   sexplibQuotedAtom    start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match    sexplibNumber        "-\=\<\d\(_\|\d\)*[l|L|n]\?\>"
+syn match    sexplibNumber        "-\=\<0[x|X]\(\x\|_\)\+[l|L|n]\?\>"
+syn match    sexplibNumber        "-\=\<0[o|O]\(\o\|_\)\+[l|L|n]\?\>"
+syn match    sexplibNumber        "-\=\<0[b|B]\([01]\|_\)\+[l|L|n]\?\>"
+syn match    sexplibFloat         "-\=\<\d\(_\|\d\)*\.\?\(_\|\d\)*\([eE][-+]\=\d\(_\|\d\)*\)\=\>"
+
+" Lists
+syn region   sexplibEncl transparent matchgroup=sexplibEncl start="(" matchgroup=sexplibEncl end=")" contains=ALLBUT,sexplibParenErr
+
+" Errors
+syn match    sexplibUnquotedAtomErr /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*\(#|\||#\)[^;()" \t]*/
+syn match    sexplibParenErr ")"
+
+" Synchronization
+syn sync minlines=50
+syn sync maxlines=500
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_sexplib_syntax_inits")
+  if version < 508
+    let did_sexplib_syntax_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  HiLink sexplibParenErr            Error
+  HiLink sexplibUnquotedAtomErr     Error
+
+  HiLink sexplibComment             Comment
+  HiLink sexplibSexpComment         Comment
+  HiLink sexplibQuotedAtomComment   Include
+  HiLink sexplibUnquotedAtomComment Comment
+  HiLink sexplibBlockComment        Comment
+  HiLink sexplibListComment         Comment
+
+  HiLink sexplibBoolean             Boolean
+  HiLink sexplibCharacter           Character
+  HiLink sexplibNumber              Number
+  HiLink sexplibFloat               Float
+  HiLink sexplibUnquotedAtom        Identifier
+  HiLink sexplibEncl                Identifier
+  HiLink sexplibQuotedAtom          Keyword
+
+  HiLink sexplibTodo                Todo
+
+  HiLink sexplibEncl                Keyword
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "sexplib"
+
+" vim: ts=8
--- a/runtime/syntax/sml.vim
+++ b/runtime/syntax/sml.vim
@@ -3,13 +3,16 @@
 " Filenames:    *.sml *.sig
 " Maintainers:  Markus Mottl            <markus.mottl@gmail.com>
 "               Fabrizio Zeno Cornelli  <zeno@filibusta.crema.unimi.it>
-" URL:          http://www.ocaml.info/vim/syntax/sml.vim
-" Last Change:  2006 Oct 23 - Fixed character highlighting bug (MM)
-"               2002 Jun 02 - Fixed small typo  (MM)
-"               2001 Nov 20 - Fixed small highlighting bug with modules (MM)
+" Last Change:  2019 Oct 01 - Only spell check strings & comments (Chuan Wei Foo)
+"               2015 Aug 31 - Fixed opening of modules (Ramana Kumar)
+"               2006 Oct 23 - Fixed character highlighting bug (MM)
 
 " quit when a syntax file was already loaded
 if exists("b:current_syntax")
+
+" Disable spell checking of syntax.
+syn spell notoplevel
+
   finish
 endif
 
@@ -52,7 +55,7 @@ syn region   smlEncl transparent matchgr
 
 
 " Comments
-syn region   smlComment start="(\*" end="\*)" contains=smlComment,smlTodo
+syn region   smlComment start="(\*" end="\*)" contains=smlComment,smlTodo,@Spell
 syn keyword  smlTodo contained TODO FIXME XXX
 
 
@@ -82,7 +85,7 @@ syn region   smlSig matchgroup=smlModule
 syn region   smlModSpec matchgroup=smlKeyword start="\<structure\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\>" contained contains=@smlAllErrs,smlComment skipwhite skipempty nextgroup=smlModTRWith,smlMPRestr
 
 " "open"
-syn region   smlNone matchgroup=smlKeyword start="\<open\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*\>" contains=@smlAllErrs,smlComment
+syn region   smlNone matchgroup=smlKeyword start="\<open\>" matchgroup=smlModule end="\<\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*\>" contains=@smlAllErrs,smlComment
 
 " "structure" - somewhat complicated stuff ;-)
 syn region   smlModule matchgroup=smlKeyword start="\<\(structure\|functor\)\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\>" contains=@smlAllErrs,smlComment skipwhite skipempty nextgroup=smlPreDef
@@ -136,7 +139,7 @@ syn match    smlModPath      "\u\(\w\|'\
 
 syn match    smlCharacter    +#"\\""\|#"."\|#"\\\d\d\d"+
 syn match    smlCharErr      +#"\\\d\d"\|#"\\\d"+
-syn region   smlString       start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn region   smlString       start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
 
 syn match    smlFunDef       "=>"
 syn match    smlRefAssign    ":="
@@ -149,9 +152,9 @@ syn match    smlKeyChar      ";"
 syn match    smlKeyChar      "\*"
 syn match    smlKeyChar      "="
 
-syn match    smlNumber	      "\<-\=\d\+\>"
-syn match    smlNumber	      "\<-\=0[x|X]\x\+\>"
-syn match    smlReal	      "\<-\=\d\+\.\d*\([eE][-+]\=\d\+\)\=[fl]\=\>"
+syn match    smlNumber        "\<-\=\d\+\>"
+syn match    smlNumber        "\<-\=0[x|X]\x\+\>"
+syn match    smlReal          "\<-\=\d\+\.\d*\([eE][-+]\=\d\+\)\=[fl]\=\>"
 
 " Synchronization
 syn sync minlines=20
@@ -167,49 +170,49 @@ syn sync match smlSigSync     groupthere
 " Define the default highlighting.
 " Only when an item doesn't have highlighting yet
 
-hi def link smlBraceErr	 Error
-hi def link smlBrackErr	 Error
-hi def link smlParenErr	 Error
+hi def link smlBraceErr     Error
+hi def link smlBrackErr     Error
+hi def link smlParenErr     Error
 
-hi def link smlCommentErr	 Error
+hi def link smlCommentErr   Error
 
-hi def link smlEndErr	 Error
-hi def link smlThenErr	 Error
+hi def link smlEndErr       Error
+hi def link smlThenErr      Error
 
-hi def link smlCharErr	 Error
+hi def link smlCharErr      Error
 
-hi def link smlComment	 Comment
+hi def link smlComment      Comment
 
-hi def link smlModPath	 Include
-hi def link smlModule	 Include
-hi def link smlModParam1	 Include
-hi def link smlModType	 Include
-hi def link smlMPRestr3	 Include
-hi def link smlFullMod	 Include
+hi def link smlModPath      Include
+hi def link smlModule       Include
+hi def link smlModParam1    Include
+hi def link smlModType      Include
+hi def link smlMPRestr3     Include
+hi def link smlFullMod      Include
 hi def link smlModTypeRestr Include
-hi def link smlWith	 Include
-hi def link smlMTDef	 Include
+hi def link smlWith         Include
+hi def link smlMTDef        Include
 
 hi def link smlConstructor  Constant
 
-hi def link smlModPreRHS	 Keyword
-hi def link smlMPRestr2	 Keyword
-hi def link smlKeyword	 Keyword
-hi def link smlFunDef	 Keyword
-hi def link smlRefAssign	 Keyword
-hi def link smlKeyChar	 Keyword
-hi def link smlAnyVar	 Keyword
-hi def link smlTopStop	 Keyword
-hi def link smlOperator	 Keyword
+hi def link smlModPreRHS    Keyword
+hi def link smlMPRestr2     Keyword
+hi def link smlKeyword      Keyword
+hi def link smlFunDef       Keyword
+hi def link smlRefAssign    Keyword
+hi def link smlKeyChar      Keyword
+hi def link smlAnyVar       Keyword
+hi def link smlTopStop      Keyword
+hi def link smlOperator     Keyword
 
-hi def link smlBoolean	 Boolean
-hi def link smlCharacter	 Character
-hi def link smlNumber	 Number
-hi def link smlReal	 Float
-hi def link smlString	 String
-hi def link smlType	 Type
-hi def link smlTodo	 Todo
-hi def link smlEncl	 Keyword
+hi def link smlBoolean      Boolean
+hi def link smlCharacter    Character
+hi def link smlNumber       Number
+hi def link smlReal         Float
+hi def link smlString       String
+hi def link smlType         Type
+hi def link smlTodo         Todo
+hi def link smlEncl         Keyword
 
 
 let b:current_syntax = "sml"
--- a/src/po/fr.po
+++ b/src/po/fr.po
@@ -6,14 +6,14 @@
 #  FIRST AUTHOR  DindinX         <David.Odin@bigfoot.com>    2000.
 # SECOND AUTHOR  Adrien Beau     <version.francaise@free.fr> 2002, 2003.
 #  THIRD AUTHOR  David Blanchet  <david.blanchet@free.fr>    2006, 2008.
-# FOURTH AUTHOR  Dominique Pellé <dominique.pelle@gmail.com> 2008, 2019.
+# FOURTH AUTHOR  Dominique Pellé <dominique.pelle@gmail.com> 2008, 2020.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Vim 8.1\n"
+"Project-Id-Version: Vim\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-12-07 11:35+0100\n"
-"PO-Revision-Date: 2019-12-07 12:32+0100\n"
+"POT-Creation-Date: 2020-12-25 13:48+0100\n"
+"PO-Revision-Date: 2020-12-29 10:49+0100\n"
 "Last-Translator: Dominique Pellé <dominique.pelle@gmail.com>\n"
 "Language-Team: French\n"
 "Language: fr\n"
@@ -31,6 +31,9 @@ msgstr "E164: Impossible d'aller avant l
 msgid "E165: Cannot go beyond last file"
 msgstr "E165: Impossible d'aller au-delà du dernier fichier"
 
+msgid "E610: No argument to delete"
+msgstr "E610: Aucun argument à supprimer"
+
 msgid "E249: window layout changed unexpectedly"
 msgstr "E249: l'arrangement de fenêtre a été changé inopinément"
 
@@ -232,9 +235,6 @@ msgstr "[Modifié]"
 msgid "[Not edited]"
 msgstr "[Non édité]"
 
-msgid "[New file]"
-msgstr "[Nouveau fichier]"
-
 msgid "[Read errors]"
 msgstr "[Erreurs de lecture]"
 
@@ -305,6 +305,12 @@ msgstr "ALERTE : Le fichier a été modifié depuis que Vim l'a lu !"
 msgid "Do you really want to write to it"
 msgstr "Voulez-vous vraiment écrire dedans"
 
+msgid "[New]"
+msgstr "[Nouveau]"
+
+msgid "[New File]"
+msgstr "[Nouveau fichier]"
+
 msgid "E676: No matching autocommands for acwrite buffer"
 msgstr "E676: Pas d'autocommande correspondante pour le tampon acwrite"
 
@@ -401,12 +407,6 @@ msgstr "[converti]"
 msgid "[Device]"
 msgstr "[Périph.]"
 
-msgid "[New]"
-msgstr "[Nouveau]"
-
-msgid "[New File]"
-msgstr "[Nouveau fichier]"
-
 msgid " [a]"
 msgstr " [a]"
 
@@ -447,12 +447,16 @@ msgstr "W10: Alerte : Modification d'un 
 msgid "E902: Cannot connect to port"
 msgstr "E902: Impossible de se connecter au port"
 
+msgid "E898: socket() in channel_connect()"
+msgstr "E898: socket() dans channel_connect()"
+
+#, c-format
+msgid "E901: getaddrinfo() in channel_open(): %s"
+msgstr "E901: getaddrinfo() dans channel_open(): %s"
+
 msgid "E901: gethostbyname() in channel_open()"
 msgstr "E901: gethostbyname() dans channel_open()"
 
-msgid "E898: socket() in channel_open()"
-msgstr "E898: socket() dans channel_open()"
-
 msgid "E903: received command with non-string argument"
 msgstr "E903: commande reçue avec un argument qui n'est pas une chaîne"
 
@@ -486,18 +490,49 @@ msgstr ""
 "E912: Impossible d'utiliser ch_evalexpr()/ch_sendexpr() avec un canal brut "
 "ou nl"
 
-msgid "E920: _io file requires _name to be set"
-msgstr "E920: fichier _io nécessite _name"
-
-msgid "E915: in_io buffer requires in_buf or in_name to be set"
-msgstr "E915: tampon in_io nécessite in_buf ou in_name "
-
-#, c-format
-msgid "E918: buffer must be loaded: %s"
-msgstr "E918: le tampon doit être chargé : %s"
-
-msgid "E916: not a valid job"
-msgstr "E916: tâche invalide"
+msgid "No display"
+msgstr "Aucun display"
+
+msgid ": Send failed.\n"
+msgstr " : L'envoi a échoué.\n"
+
+msgid ": Send failed. Trying to execute locally\n"
+msgstr " : L'envoi a échoué. Tentative d'exécution locale\n"
+
+#, c-format
+msgid "%d of %d edited"
+msgstr "%d édités sur %d"
+
+msgid "No display: Send expression failed.\n"
+msgstr "Aucun display : L'envoi de l'expression a échoué.\n"
+
+msgid ": Send expression failed.\n"
+msgstr " : L'envoi de l'expression a échoué.\n"
+
+msgid "E240: No connection to the X server"
+msgstr "E240: Pas de connexion au serveur X"
+
+# AB - La version française est meilleure que la version anglaise.
+#, c-format
+msgid "E241: Unable to send to %s"
+msgstr "E241: L'envoi au serveur %s a échoué"
+
+msgid "E277: Unable to read a server reply"
+msgstr "E277: Impossible de lire la réponse du serveur"
+
+msgid "E941: already started a server"
+msgstr "E941: serveur déjà démarré"
+
+msgid "E942: +clientserver feature not available"
+msgstr "E942: La fonctionnalité +clientserver n'est pas disponible"
+
+# AB - La version française est meilleure que la version anglaise.
+msgid "E258: Unable to send to client"
+msgstr "E258: La réponse n'a pas pu être envoyée au client"
+
+# DB - Message de débogage.
+msgid "Used CUT_BUFFER0 instead of empty selection"
+msgstr "CUT_BUFFER0 utilisé plutôt qu'une sélection vide"
 
 # DB - TODO : Pas compris le message ni comment le déclencher malgré une visite
 #      dans le code.
@@ -579,22 +614,6 @@ msgstr "%3d  %s %s  ligne %ld"
 msgid "%3d  expr %s"
 msgstr "%3d  expr %s"
 
-#, c-format
-msgid "E720: Missing colon in Dictionary: %s"
-msgstr "E720: Il manque ':' dans le Dictionnaire %s"
-
-#, c-format
-msgid "E721: Duplicate key in Dictionary: \"%s\""
-msgstr "E721: Clé dupliquée dans le Dictionnaire : %s"
-
-#, c-format
-msgid "E722: Missing comma in Dictionary: %s"
-msgstr "E722: Il manque une virgule dans le Dictionnaire : %s"
-
-#, c-format
-msgid "E723: Missing end of Dictionary '}': %s"
-msgstr "E723: Il manque '}' à la fin du Dictionnaire : %s"
-
 msgid "extend() argument"
 msgstr "argument de extend()"
 
@@ -748,18 +767,6 @@ msgstr "E105: :loadkeymap ne peut être utilisé que dans un script Vim"
 msgid "E791: Empty keymap entry"
 msgstr "E791: Entrée du descripteur de clavier (keymap) vide"
 
-msgid "E111: Missing ']'"
-msgstr "E111: ']' manquant"
-
-msgid "E719: Cannot use [:] with a Dictionary"
-msgstr "E719: Utilisation de [:] impossible avec un Dictionnaire"
-
-msgid "E806: using Float as a String"
-msgstr "E806: Utilisation d'un Flottant comme une Chaîne"
-
-msgid "E274: No white space allowed before parenthesis"
-msgstr "E274: espace interdite avant une parenthèse"
-
 msgid "E689: Can only index a List, Dictionary or Blob"
 msgstr "E689: Seul une Liste, un Dictionnaire ou un Blob peut être indexé"
 
@@ -775,64 +782,15 @@ msgstr "E972: Le Blob n'a pas le bon nom
 msgid "E996: Cannot lock a range"
 msgstr "E996: Impossible de verrouiller une plage"
 
-msgid "E710: List value has more items than target"
-msgstr "E710: La Liste a plus d'éléments que la destination"
-
-msgid "E711: List value has not enough items"
-msgstr "E711: La Liste n'a pas assez d'éléments"
-
 msgid "E996: Cannot lock a list or dict"
 msgstr "E996: Impossible de verrouiller une liste ou un dictionnaire"
 
-msgid "E690: Missing \"in\" after :for"
-msgstr "E690: \"in\" manquant après :for"
-
-# AB - Je suis partagé entre la concision d'une traduction assez littérale et
-#      la lourdeur d'une traduction plus correcte.
-msgid "E109: Missing ':' after '?'"
-msgstr "E109: Il manque ':' après '?'"
-
-msgid "E804: Cannot use '%' with Float"
-msgstr "E804: Impossible d'utiliser '%' avec un Flottant"
-
-msgid "E973: Blob literal should have an even number of hex characters"
-msgstr ""
-"E973: Un littéral de Blob doit avoir un nombre pair de caractères "
-"hexadécimaux"
-
-msgid "E110: Missing ')'"
-msgstr "E110: ')' manquant"
-
 msgid "E260: Missing name after ->"
 msgstr "E260: Nom manquant après ->"
 
 msgid "E695: Cannot index a Funcref"
 msgstr "E695: Impossible d'indexer une Funcref"
 
-msgid "E909: Cannot index a special variable"
-msgstr "E909: Impossible d'indexer une variable spéciale"
-
-# AB - La version française est meilleure que la version anglaise.
-#, c-format
-msgid "E112: Option name missing: %s"
-msgstr "E112: Il manque un nom d'option après %s"
-
-#, c-format
-msgid "E113: Unknown option: %s"
-msgstr "E113: Option inconnue : %s"
-
-# AB - La version française est meilleure que la version anglaise, qui est
-#      erronée, d'ailleurs : il s'agit d'une "double quote" et non d'une
-#      "quote".
-#, c-format
-msgid "E114: Missing quote: %s"
-msgstr "E114: Il manque \" à la fin de %s"
-
-# AB - La version française est meilleure que la version anglaise.
-#, c-format
-msgid "E115: Missing quote: %s"
-msgstr "E115: Il manque ' à la fin de %s"
-
 msgid "Not enough memory to set references, garbage collection aborted!"
 msgstr ""
 "Pas assez de mémoire pour les références, arrêt du ramassage de miètes !"
@@ -840,66 +798,6 @@ msgstr ""
 msgid "E724: variable nested too deep for displaying"
 msgstr "E724: variable trop imbriquée pour être affichée"
 
-msgid "E805: Using a Float as a Number"
-msgstr "E805: Utilisation d'un Flottant comme un Nombre"
-
-msgid "E703: Using a Funcref as a Number"
-msgstr "E703: Utilisation d'une Funcref comme un Nombre"
-
-msgid "E745: Using a List as a Number"
-msgstr "E745: Utilisation d'une Liste comme un Nombre"
-
-msgid "E728: Using a Dictionary as a Number"
-msgstr "E728: Utilisation d'un Dictionnaire comme un Nombre"
-
-msgid "E910: Using a Job as a Number"
-msgstr "E910: Utilisation d'une Tâche comme un Nombre"
-
-msgid "E913: Using a Channel as a Number"
-msgstr "E913: Utilisation d'un Canal comme un Nombre"
-
-msgid "E974: Using a Blob as a Number"
-msgstr "E974: Utilisation d'un Blob comme un Nombre"
-
-msgid "E891: Using a Funcref as a Float"
-msgstr "E891: Utilisation d'une Funcref comme un Flottant"
-
-msgid "E892: Using a String as a Float"
-msgstr "E892: Utilisation d'une Chaîne comme un Flottant"
-
-msgid "E893: Using a List as a Float"
-msgstr "E893: Utilisation d'une Liste comme un Flottant"
-
-msgid "E894: Using a Dictionary as a Float"
-msgstr "E894: Utilisation d'un Dictionnaire comme un Flottant"
-
-msgid "E907: Using a special value as a Float"
-msgstr "E907: Utilisation d'une valeur spéciale comme un Flottant"
-
-msgid "E911: Using a Job as a Float"
-msgstr "E911: Utilisation d'une Tâche comme un Flottant"
-
-msgid "E914: Using a Channel as a Float"
-msgstr "E914: Utilisation d'un Canal comme un Flottant"
-
-msgid "E975: Using a Blob as a Float"
-msgstr "E975: Utilisation d'un Blob comme un Flottant"
-
-msgid "E729: using Funcref as a String"
-msgstr "E729: Utilisation d'une Funcref comme une Chaîne"
-
-msgid "E730: using List as a String"
-msgstr "E730: Utilisation d'une Liste comme une Chaîne"
-
-msgid "E731: using Dictionary as a String"
-msgstr "E731: Utilisation d'un Dictionnaire comme une Chaîne"
-
-msgid "E976: using Blob as a String"
-msgstr "E976: Utilisation d'un Blob comme une Chaîne"
-
-msgid "E908: using an invalid value as a String"
-msgstr "E908: Utilisation d'une valeur invalide comme une Chaîne"
-
 msgid "E698: variable nested too deep for making a copy"
 msgstr "E698: variable trop imbriquée pour en faire une copie"
 
@@ -911,27 +809,6 @@ msgstr ""
 "\n"
 "\tModifié la dernière fois dans "
 
-msgid " line "
-msgstr " ligne "
-
-msgid "E977: Can only compare Blob with Blob"
-msgstr "E977: Un Blob ne peut être comparé qu'avec un Blob"
-
-msgid "E691: Can only compare List with List"
-msgstr "E691: Une Liste ne peut être comparée qu'avec une Liste"
-
-msgid "E692: Invalid operation for List"
-msgstr "E692: Opération invalide avec les Liste"
-
-msgid "E735: Can only compare Dictionary with Dictionary"
-msgstr "E735: Un Dictionnaire ne peut être comparé qu'avec un Dictionnaire"
-
-msgid "E736: Invalid operation for Dictionary"
-msgstr "E736: Opération invalide avec les Dictionnaires"
-
-msgid "E694: Invalid operation for Funcrefs"
-msgstr "E694: Opération invalide avec les Funcrefs"
-
 msgid "E808: Number or Float required"
 msgstr "E808: Nombre ou Flottant requis"
 
@@ -984,41 +861,14 @@ msgstr "E726: Le pas est nul"
 msgid "E727: Start past end"
 msgstr "E727: Début au-delà de la fin"
 
-msgid "E240: No connection to the X server"
-msgstr "E240: Pas de connexion au serveur X"
-
-# AB - La version française est meilleure que la version anglaise.
-#, c-format
-msgid "E241: Unable to send to %s"
-msgstr "E241: L'envoi au serveur %s a échoué"
-
-msgid "E277: Unable to read a server reply"
-msgstr "E277: Impossible de lire la réponse du serveur"
-
-msgid "E941: already started a server"
-msgstr "E941: serveur déjà démarré"
-
-msgid "E942: +clientserver feature not available"
-msgstr "E942: La fonctionnalité +clientserver n'est pas disponible"
-
-# AB - La version française est meilleure que la version anglaise.
-msgid "E258: Unable to send to client"
-msgstr "E258: La réponse n'a pas pu être envoyée au client"
-
 #, c-format
 msgid "E962: Invalid action: '%s'"
 msgstr "E962: Action invalide : « %s »"
 
-msgid "(Invalid)"
-msgstr "(Invalide)"
-
 #, c-format
 msgid "E935: invalid submatch number: %d"
 msgstr "E935: numéro de submatch invalide : %d"
 
-msgid "E18: Unexpected characters in :let"
-msgstr "E18: Caractères inattendus avant '='"
-
 msgid "E991: cannot use =<< here"
 msgstr "E991: Impossible d'utiliser =<< ici"
 
@@ -1032,8 +882,8 @@ msgstr "E172: Marqueur manquant"
 msgid "E990: Missing end marker '%s'"
 msgstr "E990: Marqueur de fin manquant « %s »"
 
-msgid "E985: .= is not supported with script version 2"
-msgstr "E985: .= non supporté avec la version de script 2"
+msgid "E985: .= is not supported with script version >= 2"
+msgstr "E985: .= non supporté avec la version de script >= 2"
 
 # DB - todo : trouver mieux que "destinations".
 msgid "E687: Less targets than List items"
@@ -1043,8 +893,8 @@ msgstr "E687: Moins de destinations que d'éléments dans la Liste"
 msgid "E688: More targets than List items"
 msgstr "E688: Plus de destinations que d'éléments dans la Liste"
 
-msgid "Double ; in list of variables"
-msgstr "Double ; dans une liste de variables"
+msgid "E452: Double ; in list of variables"
+msgstr "E452: Double ; dans une liste de variables"
 
 #, c-format
 msgid "E738: Can't list variables for %s"
@@ -1053,9 +903,6 @@ msgstr "E738: Impossible de lister les v
 msgid "E996: Cannot lock an environment variable"
 msgstr "E996: Impossible de verrouiller une variable d'environnement"
 
-msgid "E996: Cannot lock an option"
-msgstr "E996: Impossible de verrouiller une option"
-
 msgid "E996: Cannot lock a register"
 msgstr "E996: Impossible de verrouiller un registre"
 
@@ -1063,10 +910,6 @@ msgstr "E996: Impossible de verrouiller 
 msgid "E108: No such variable: \"%s\""
 msgstr "E108: Variable inexistante : %s"
 
-#, c-format
-msgid "E940: Cannot lock or unlock variable %s"
-msgstr "E940: Impossible de (dé)verrouiller la variable %s"
-
 msgid "E743: variable nested too deep for (un)lock"
 msgstr "E743: variable trop imbriquée pour la (dé)verrouiller"
 
@@ -1290,51 +1133,6 @@ msgstr "Motif trouvé dans toutes les lignes : %s"
 msgid "Pattern not found: %s"
 msgstr "Motif introuvable : %s"
 
-# This message should *so* be E42!
-msgid "E478: Don't panic!"
-msgstr "E478: Pas de panique !"
-
-#, c-format
-msgid "E661: Sorry, no '%s' help for %s"
-msgstr "E661: Désolé, aucune aide en langue '%s' pour %s"
-
-#, c-format
-msgid "E149: Sorry, no help for %s"
-msgstr "E149: Désolé, aucune aide pour %s"
-
-#, c-format
-msgid "Sorry, help file \"%s\" not found"
-msgstr "Désolé, le fichier d'aide \"%s\" est introuvable"
-
-#, c-format
-msgid "E151: No match: %s"
-msgstr "E151: Aucune correspondance : %s"
-
-#, c-format
-msgid "E152: Cannot open %s for writing"
-msgstr "E152: Impossible d'ouvrir %s en écriture"
-
-#, c-format
-msgid "E153: Unable to open %s for reading"
-msgstr "E153: Impossible d'ouvrir %s en lecture"
-
-#, c-format
-msgid "E670: Mix of help file encodings within a language: %s"
-msgstr "E670: Encodages différents dans les fichiers d'aide en langue %s"
-
-# AB - L'étiquette la plus longue fait 27 caractères. Le nom de fichier le plus
-#      long fait 12 caractères. Il faudrait donc idéalement faire une
-#      traduction de 40 caractères ou moins. Ce qui est loin d'être le cas
-#      présent.
-# DB - Suggestion.
-#, c-format
-msgid "E154: Duplicate tag \"%s\" in file %s/%s"
-msgstr "E154: Marqueur \"%s\" dupliqué dans le fichier %s/%s"
-
-#, c-format
-msgid "E150: Not a directory: %s"
-msgstr "E150: %s n'est pas un répertoire"
-
 msgid "No old files"
 msgstr "Aucun vieux fichier"
 
@@ -1369,16 +1167,6 @@ msgstr "W20: Python version 2.x non supporté, fichier %s ignoré"
 msgid "W21: Required python version 3.x not supported, ignoring file: %s"
 msgstr "W21: Python 3.x non supporté, fichier %s ignoré"
 
-# DB - Le premier %s est, au choix : "time ", "ctype " ou "messages ",
-#      sans qu'il soit possible de les traduire.
-#, c-format
-msgid "Current %slanguage: \"%s\""
-msgstr "Langue courante pour %s : \"%s\""
-
-#, c-format
-msgid "E197: Cannot set language to \"%s\""
-msgstr "E197: Impossible de choisir la langue \"%s\""
-
 msgid "Entering Ex mode.  Type \"visual\" to go to Normal mode."
 msgstr "Mode Ex activé. Tapez \"visual\" pour passer en mode Normal."
 
@@ -1420,15 +1208,16 @@ msgstr "La plage spécifiée est inversée, OK pour l'inverser"
 msgid "E494: Use w or w>>"
 msgstr "E494: Utilisez w ou w>>"
 
-msgid ""
-"INTERNAL: Cannot use EX_DFLALL with ADDR_NONE, ADDR_UNSIGNED or ADDR_QUICKFIX"
-msgstr ""
-"INTERNE: Impossible d'utiliser EX_DFLALL avec ADDR_NONE, ADDR_UNSIGNED ou ADDR_QUICKFIX"
-
 msgid "E943: Command table needs to be updated, run 'make cmdidxs'"
 msgstr ""
 "E943: La table des commandes doit être mise à jour, lancez 'make cmdidxs'"
 
+msgid ""
+"INTERNAL: Cannot use EX_DFLALL with ADDR_NONE, ADDR_UNSIGNED or ADDR_QUICKFIX"
+msgstr ""
+"INTERNE: Impossible d'utiliser EX_DFLALL avec ADDR_NONE, ADDR_UNSIGNED ou "
+"ADDR_QUICKFIX"
+
 msgid "E319: Sorry, the command is not available in this version"
 msgstr "E319: Désolé, cette commande n'est pas disponible dans cette version"
 
@@ -1616,15 +1405,6 @@ msgstr "Interruption"
 msgid "E579: :if nesting too deep"
 msgstr "E579: Imbrication de :if trop importante"
 
-msgid "E580: :endif without :if"
-msgstr "E580: :endif sans :if"
-
-msgid "E581: :else without :if"
-msgstr "E581: :else sans :if"
-
-msgid "E582: :elseif without :if"
-msgstr "E582: :elseif sans :if"
-
 msgid "E583: multiple :else"
 msgstr "E583: Il ne peut y avoir qu'un seul :else"
 
@@ -1634,35 +1414,23 @@ msgstr "E584: :elseif après :else"
 msgid "E585: :while/:for nesting too deep"
 msgstr "E585: Imbrication de :while ou :for trop importante"
 
-msgid "E586: :continue without :while or :for"
-msgstr "E586: :continue sans :while ou :for"
-
-msgid "E587: :break without :while or :for"
-msgstr "E587: :break sans :while ou :for"
-
 msgid "E732: Using :endfor with :while"
 msgstr "E732: Utilisation de :endfor avec :while"
 
 msgid "E733: Using :endwhile with :for"
 msgstr "E733: Utilisation de :endwhile avec :for"
 
+msgid "E579: block nesting too deep"
+msgstr "E579: Imbrication de bloc trop importante"
+
 msgid "E601: :try nesting too deep"
 msgstr "E601: Imbrication de :try trop importante"
 
-msgid "E603: :catch without :try"
-msgstr "E603: :catch sans :try"
-
 msgid "E604: :catch after :finally"
 msgstr "E604: :catch après :finally"
 
-msgid "E606: :finally without :try"
-msgstr "E606: :finally sans :try"
-
-msgid "E607: multiple :finally"
-msgstr "E607: Il ne peut y avoir qu'un seul :finally"
-
-msgid "E602: :endtry without :try"
-msgstr "E602: :endtry sans :try"
+msgid "E193: :enddef not inside a function"
+msgstr "E193: :enddef en dehors d'une fonction"
 
 msgid "E193: :endfunction not inside a function"
 msgstr "E193: :endfunction en dehors d'une fonction"
@@ -1776,10 +1544,10 @@ msgstr[0] "%ld ligne, "
 msgstr[1] "%ld lignes, "
 
 #, c-format
-msgid "%lld character"
-msgid_plural "%lld characters"
-msgstr[0] "%lld caractère"
-msgstr[1] "%lld caractères"
+msgid "%lld byte"
+msgid_plural "%lld bytes"
+msgstr[0] "%lld octet"
+msgstr[1] "%lld octets"
 
 msgid "[noeol]"
 msgstr "[noeol]"
@@ -1867,6 +1635,9 @@ msgstr "<vide>"
 msgid "E655: Too many symbolic links (cycle?)"
 msgstr "E655: Trop de liens symboliques (cycle ?)"
 
+msgid "writefile() first argument must be a List or a Blob"
+msgstr "le premier argument de writefile() doit être une Liste ou un Blob"
+
 # DB : Les trois messages qui suivent sont des titres de boîtes
 #      de dialogue par défaut.
 msgid "Select Directory dialog"
@@ -1881,6 +1652,9 @@ msgstr "Ouvrir un fichier"
 msgid "E338: Sorry, no file browser in console mode"
 msgstr "E338: Désolé, pas de sélecteur de fichiers en mode console"
 
+msgid "no matches"
+msgstr "aucune correspondance"
+
 msgid "E854: path too long for completion"
 msgstr "E854: chemin trop long pour complètement"
 
@@ -1968,10 +1742,6 @@ msgstr "E231: 'guifontwide' est invalide
 msgid "E599: Value of 'imactivatekey' is invalid"
 msgstr "E599: Valeur de 'imactivatekey' invalide"
 
-#, c-format
-msgid "E254: Cannot allocate color %s"
-msgstr "E254: Impossible d'allouer la couleur %s"
-
 msgid "No match at cursor, finding next"
 msgstr "Aucune correspondance sous le curseur, recherche de la suivante"
 
@@ -2006,15 +1776,15 @@ msgstr "Vim"
 msgid "E232: Cannot create BalloonEval with both message and callback"
 msgstr "E232: Impossible de créer un BalloonEval avec message ET callback"
 
-msgid "_Cancel"
-msgstr "_Annuler"
-
 msgid "_Save"
 msgstr "_Enregistrer"
 
 msgid "_Open"
 msgstr "_Ouvrir"
 
+msgid "_Cancel"
+msgstr "_Annuler"
+
 msgid "_OK"
 msgstr "_Ok"
 
@@ -2159,7 +1929,9 @@ msgid "E243: Argument not supported: \"-
 msgstr "E243: Argument non supporté : \"-%s\" ; Utilisez la version OLE."
 
 msgid "E988: GUI cannot be used. Cannot execute gvim.exe."
-msgstr "E988: L'interface graphique ne peut pas être utilisée. Impossible d'exécuter gvim.exe."
+msgstr ""
+"E988: L'interface graphique ne peut pas être utilisée. Impossible d'exécuter "
+"gvim.exe."
 
 msgid "E672: Unable to open window inside MDI application"
 msgstr "E672: Impossible d'ouvrir une fenêtre dans une application MDI"
@@ -2207,6 +1979,27 @@ msgstr "Largeur de Font0 : %d"
 msgid "Font%d width: %d"
 msgstr "Largeur de Font%d : %d"
 
+msgid "E284: Cannot set IC values"
+msgstr "E284: Impossible de régler les valeurs IC"
+
+msgid "E285: Failed to create input context"
+msgstr "E285: Échec de la création du contexte de saisie"
+
+msgid "E286: Failed to open input method"
+msgstr "E286: Échec de l'ouverture de la méthode de saisie"
+
+msgid "E287: Warning: Could not set destroy callback to IM"
+msgstr ""
+"E287: Alerte : Impossible d'inscrire le callback de destruction dans la MS"
+
+msgid "E288: input method doesn't support any style"
+msgstr "E288: la méthode de saisie ne supporte aucun style"
+
+msgid "E289: input method doesn't support my preedit type"
+msgstr ""
+"E289: le type de préédition de Vim n'est pas supporté par la méthode de "
+"saisie"
+
 # DB - todo : Pas certain de mon coup, ici...
 msgid "Invalid font specification"
 msgstr "La spécification de la police est invalide"
@@ -2336,6 +2129,51 @@ msgstr "E365: L'impression du fichier PostScript a échoué"
 msgid "Print job sent."
 msgstr "Tâche d'impression envoyée."
 
+# This message should *so* be E42!
+msgid "E478: Don't panic!"
+msgstr "E478: Pas de panique !"
+
+#, c-format
+msgid "E661: Sorry, no '%s' help for %s"
+msgstr "E661: Désolé, aucune aide en langue '%s' pour %s"
+
+#, c-format
+msgid "E149: Sorry, no help for %s"
+msgstr "E149: Désolé, aucune aide pour %s"
+
+#, c-format
+msgid "Sorry, help file \"%s\" not found"
+msgstr "Désolé, le fichier d'aide \"%s\" est introuvable"
+
+#, c-format
+msgid "E151: No match: %s"
+msgstr "E151: Aucune correspondance : %s"
+
+#, c-format
+msgid "E152: Cannot open %s for writing"
+msgstr "E152: Impossible d'ouvrir %s en écriture"
+
+#, c-format
+msgid "E153: Unable to open %s for reading"
+msgstr "E153: Impossible d'ouvrir %s en lecture"
+
+#, c-format
+msgid "E670: Mix of help file encodings within a language: %s"
+msgstr "E670: Encodages différents dans les fichiers d'aide en langue %s"
+
+# AB - L'étiquette la plus longue fait 27 caractères. Le nom de fichier le plus
+#      long fait 12 caractères. Il faudrait donc idéalement faire une
+#      traduction de 40 caractères ou moins. Ce qui est loin d'être le cas
+#      présent.
+# DB - Suggestion.
+#, c-format
+msgid "E154: Duplicate tag \"%s\" in file %s/%s"
+msgstr "E154: Marqueur \"%s\" dupliqué dans le fichier %s/%s"
+
+#, c-format
+msgid "E150: Not a directory: %s"
+msgstr "E150: %s n'est pas un répertoire"
+
 msgid "E679: recursive loop loading syncolor.vim"
 msgstr "E679: boucle récursive lors du chargement de syncolor.vim"
 
@@ -2376,6 +2214,9 @@ msgstr "E419: Couleur de premier plan in
 msgid "E420: BG color unknown"
 msgstr "E420: Couleur d'arrière-plan inconnue"
 
+msgid "E453: UL color unknown"
+msgstr "E453: Couleur d'UL inconnue"
+
 #, c-format
 msgid "E421: Color name or number not recognized: %s"
 msgstr "E421: Nom ou numéro de couleur non reconnu : %s"
@@ -2401,29 +2242,6 @@ msgstr "W18: Caractère invalide dans un nom de groupe"
 msgid "E849: Too many highlight and syntax groups"
 msgstr "E849: Trop de groupes de surbrillance et de syntaxe"
 
-#, c-format
-msgid "E799: Invalid ID: %d (must be greater than or equal to 1)"
-msgstr "E799: ID invalide : %d (doit être plus grand ou égal à 1)"
-
-#, c-format
-msgid "E801: ID already taken: %d"
-msgstr "E801: ID déjà pris : %d"
-
-msgid "E290: List or number required"
-msgstr "E290: Liste ou nombre requis"
-
-#, c-format
-msgid "E802: Invalid ID: %d (must be greater than or equal to 1)"
-msgstr "E802: ID invalide : %d (doit être plus grand ou égal à 1)"
-
-#, c-format
-msgid "E803: ID not found: %d"
-msgstr "E803: ID introuvable : %d"
-
-#, c-format
-msgid "E798: ID is reserved for \":match\": %d"
-msgstr "E798: ID est réservé pour \":match\" : %d"
-
 msgid "Add a new database"
 msgstr "Ajouter une base de données"
 
@@ -2939,6 +2757,23 @@ msgstr "Correspondance %d sur %d"
 msgid "match %d"
 msgstr "Correspondance %d"
 
+msgid "E920: _io file requires _name to be set"
+msgstr "E920: fichier _io nécessite _name"
+
+msgid "E915: in_io buffer requires in_buf or in_name to be set"
+msgstr "E915: tampon in_io nécessite in_buf ou in_name "
+
+#, c-format
+msgid "E918: buffer must be loaded: %s"
+msgstr "E918: le tampon doit être chargé : %s"
+
+msgid "E916: not a valid job"
+msgstr "E916: tâche invalide"
+
+#, c-format
+msgid "E491: json decode error at '%s'"
+msgstr "E491: Erreur de décodage json près de '%s'"
+
 #, c-format
 msgid "E938: Duplicate key in JSON: \"%s\""
 msgstr "E938: Clé dupliquée dans le document JSON : \"%s\""
@@ -2947,14 +2782,16 @@ msgstr "E938: Clé dupliquée dans le document JSON : \"%s\""
 msgid "E899: Argument of %s must be a List or Blob"
 msgstr "E899: L'argument de %s doit être une Liste ou un Blob"
 
+msgid "E900: maxdepth must be non-negative number"
+msgstr "E900: maxdepth doit être un nombre positif"
+
+msgid "flatten() argument"
+msgstr "argument de flatten()"
+
 #, c-format
 msgid "E696: Missing comma in List: %s"
 msgstr "E696: Il manque une virgule dans la Liste %s"
 
-#, c-format
-msgid "E697: Missing end of List ']': %s"
-msgstr "E697: Il manque ']' à la fin de la Liste %s"
-
 msgid "sort() argument"
 msgstr "argument de sort()"
 
@@ -2970,6 +2807,9 @@ msgstr "E882: La fonction de comparaison de uniq() a échoué"
 msgid "map() argument"
 msgstr "argument de map()"
 
+msgid "mapnew() argument"
+msgstr "argument de mapnew()"
+
 msgid "filter() argument"
 msgstr "argument de filter()"
 
@@ -2985,6 +2825,16 @@ msgstr "argument de remove()"
 msgid "reverse() argument"
 msgstr "argument de reverse()"
 
+# DB - Le premier %s est, au choix : "time ", "ctype " ou "messages ",
+#      sans qu'il soit possible de les traduire.
+#, c-format
+msgid "Current %slanguage: \"%s\""
+msgstr "Langue courante pour %s : \"%s\""
+
+#, c-format
+msgid "E197: Cannot set language to \"%s\""
+msgstr "E197: Impossible de choisir la langue \"%s\""
+
 msgid "Unknown option argument"
 msgstr "Option inconnue"
 
@@ -3405,25 +3255,6 @@ msgstr "-P <titre parent>\tOuvrir Vim da
 msgid "--windowid <HWND>\tOpen Vim inside another win32 widget"
 msgstr "--windowid <HWND>\tOuvrir Vim dans un autre widget win32"
 
-msgid "No display"
-msgstr "Aucun display"
-
-msgid ": Send failed.\n"
-msgstr " : L'envoi a échoué.\n"
-
-msgid ": Send failed. Trying to execute locally\n"
-msgstr " : L'envoi a échoué. Tentative d'exécution locale\n"
-
-#, c-format
-msgid "%d of %d edited"
-msgstr "%d édités sur %d"
-
-msgid "No display: Send expression failed.\n"
-msgstr "Aucun display : L'envoi de l'expression a échoué.\n"
-
-msgid ": Send expression failed.\n"
-msgstr " : L'envoi de l'expression a échoué.\n"
-
 #, c-format
 msgid "E224: global abbreviation already exists for %s"
 msgstr "E224: une abréviation globale existe déjà pour %s"
@@ -3449,6 +3280,9 @@ msgstr "Aucun mappage trouvé"
 msgid "E228: makemap: Illegal mode"
 msgstr "E228: makemap : mode invalide"
 
+msgid "E460: entries missing in mapset() dict argument"
+msgstr "E460: entrées manquantes dans l'argument dict de mapset()"
+
 #, c-format
 msgid "E357: 'langmap': Matching character missing for %s"
 msgstr "E357: 'langmap' : Aucun caractère correspondant pour %s"
@@ -3485,30 +3319,32 @@ msgstr ""
 "\n"
 "modif  ligne col fichier/texte"
 
+#, c-format
+msgid "E799: Invalid ID: %d (must be greater than or equal to 1)"
+msgstr "E799: ID invalide : %d (doit être plus grand ou égal à 1)"
+
+#, c-format
+msgid "E801: ID already taken: %d"
+msgstr "E801: ID déjà pris : %d"
+
+msgid "E290: List or number required"
+msgstr "E290: Liste ou nombre requis"
+
+#, c-format
+msgid "E802: Invalid ID: %d (must be greater than or equal to 1)"
+msgstr "E802: ID invalide : %d (doit être plus grand ou égal à 1)"
+
+#, c-format
+msgid "E803: ID not found: %d"
+msgstr "E803: ID introuvable : %d"
+
+#, c-format
+msgid "E798: ID is reserved for \":match\": %d"
+msgstr "E798: ID est réservé pour \":match\" : %d"
+
 msgid "E543: Not a valid codepage"
 msgstr "E543: Page de codes non valide"
 
-msgid "E284: Cannot set IC values"
-msgstr "E284: Impossible de régler les valeurs IC"
-
-msgid "E285: Failed to create input context"
-msgstr "E285: Échec de la création du contexte de saisie"
-
-msgid "E286: Failed to open input method"
-msgstr "E286: Échec de l'ouverture de la méthode de saisie"
-
-msgid "E287: Warning: Could not set destroy callback to IM"
-msgstr ""
-"E287: Alerte : Impossible d'inscrire le callback de destruction dans la MS"
-
-msgid "E288: input method doesn't support any style"
-msgstr "E288: la méthode de saisie ne supporte aucun style"
-
-msgid "E289: input method doesn't support my preedit type"
-msgstr ""
-"E289: le type de préédition de Vim n'est pas supporté par la méthode de "
-"saisie"
-
 msgid "E293: block was not locked"
 msgstr "E293: le bloc n'était pas verrouillé"
 
@@ -3715,12 +3551,17 @@ msgstr ""
 
 msgid ""
 "\n"
-"You may want to delete the .swp file now.\n"
-"\n"
-msgstr ""
-"\n"
-"Il est conseillé d'effacer maintenant le fichier .swp.\n"
-"\n"
+"You may want to delete the .swp file now."
+msgstr ""
+"\n"
+"Il est conseillé d'effacer maintenant le fichier .swp."
+
+msgid ""
+"\n"
+"Note: process STILL RUNNING: "
+msgstr ""
+"\n"
+"Note : processus EN COURS D'EXECUTION : "
 
 msgid "Using crypt key from swap file for the text file.\n"
 msgstr ""
@@ -3742,9 +3583,6 @@ msgstr "   Dans le répertoire "
 msgid "      -- none --\n"
 msgstr "     -- aucun --\n"
 
-msgid "%a %b %d %H:%M:%S %Y"
-msgstr "%a %b %d %H:%M:%S %Y"
-
 msgid "          owned by: "
 msgstr "      propriété de : "
 
@@ -4030,6 +3868,10 @@ msgid "E337: Menu not found - check menu
 msgstr "E337: Menu introuvable - vérifiez les noms des menus"
 
 #, c-format
+msgid "Error detected while compiling %s:"
+msgstr "Erreur détectée lors de la compilation %s"
+
+#, c-format
 msgid "Error detected while processing %s:"
 msgstr "Erreur détectée en traitant %s :"
 
@@ -4094,11 +3936,12 @@ msgstr "E807: printf() attend un argumen
 msgid "E767: Too many arguments to printf()"
 msgstr "E767: Trop d'arguments pour printf()"
 
-msgid "Type number and <Enter> or click with mouse (empty cancels): "
-msgstr "Tapez un nombre et <Entrée> ou cliquez avec la souris (rien annule) :"
-
-msgid "Type number and <Enter> (empty cancels): "
-msgstr "Tapez un nombre et <Entrée> (rien annule) :"
+msgid "Type number and <Enter> or click with the mouse (q or empty cancels): "
+msgstr ""
+"Tapez un nombre et <Entrée> ou cliquez avec la souris (q ou rien annule) :"
+
+msgid "Type number and <Enter> (q or empty cancels): "
+msgstr "Tapez un nombre et <Entrée> (q ou rien annule) :"
 
 #, c-format
 msgid "%ld more line"
@@ -4121,12 +3964,6 @@ msgstr "Bip !"
 msgid "E677: Error writing temp file"
 msgstr "E677: Erreur lors de l'écriture du fichier temporaire"
 
-#, c-format
-msgid "%ld second ago"
-msgid_plural "%ld seconds ago"
-msgstr[0] "il y a %ld seconde"
-msgstr[1] "il y a %ld secondes"
-
 msgid "ERROR: "
 msgstr "ERREUR : "
 
@@ -4245,6 +4082,12 @@ msgstr[0] "%ld ligne modifiée"
 msgstr[1] "%ld lignes modifiées"
 
 #, c-format
+msgid "%d line changed"
+msgid_plural "%d lines changed"
+msgstr[0] "%d ligne modifiée"
+msgstr[1] "%d lignes modifiées"
+
+#, c-format
 msgid "%ld Cols; "
 msgstr "%ld Colonnes ; "
 
@@ -4295,7 +4138,8 @@ msgid "E520: Not allowed in a modeline"
 msgstr "E520: Non autorisé dans une ligne de mode"
 
 msgid "E992: Not allowed in a modeline when 'modelineexpr' is off"
-msgstr "E992: Non autorisé dans une ligne de mode avec 'modelineexpr' désélectionnée"
+msgstr ""
+"E992: Non autorisé dans une ligne de mode avec 'modelineexpr' désélectionnée"
 
 msgid "E846: Key code not set"
 msgstr "E846: Le code de touche n'est pas configuré"
@@ -4380,7 +4224,6 @@ msgstr "Pour l'option %s"
 msgid "E540: Unclosed expression sequence"
 msgstr "E540: '}' manquant"
 
-
 msgid "E542: unbalanced groups"
 msgstr "E542: parenthèses non équilibrées"
 
@@ -4426,7 +4269,8 @@ msgid "E528: Must specify a ' value"
 msgstr "E528: Une valeur ' doit être spécifiée"
 
 msgid "E595: 'showbreak' contains unprintable or wide character"
-msgstr "E595: 'showbreak' contient des caractères à largeur double ou non imprimables"
+msgstr ""
+"E595: 'showbreak' contient des caractères à largeur double ou non imprimables"
 
 msgid "E596: Invalid font(s)"
 msgstr "E596: Police(s) invalide(s)"
@@ -4681,8 +4525,11 @@ msgstr "Alerte Vim"
 msgid "shell returned %d"
 msgstr "le shell a retourné %d"
 
-msgid "E278: Cannot put a terminal buffer in a popup window"
-msgstr "E278: Impossible de mettre un tampon de terminal dans une fenêtre contextuelle"
+msgid "E861: Cannot open a second popup with a terminal"
+msgstr "E861: Impossible d'ouvrir une seconde fenêtre contextuelle avec un terminal"
+
+msgid "E450: buffer number, text or a list required"
+msgstr "E450: numéro de tampon, texte ou une liste requis"
 
 #, c-format
 msgid "E997: Tabpage not found: %d"
@@ -4695,16 +4542,21 @@ msgstr "E993: la fenêtre %d n'est pas une fenêtre contextuelle"
 msgid "E994: Not allowed in a popup window"
 msgstr "E994: Opération interdite dans une fenêtre contextuelle"
 
+msgid "E863: Not allowed for a terminal in a popup window"
+msgstr "E863: Opération interdite pour un terminal  dans une fenêtre contextuelle"
+
 msgid "E750: First use \":profile start {fname}\""
 msgstr "E750: Utilisez d'abord \":profile start {nomfichier}\""
 
 msgid "E553: No more items"
 msgstr "E553: Plus d'éléments"
 
+msgid "E925: Current quickfix list was changed"
+msgstr "E925: La liste quickfix courante a changé"
+
 msgid "E926: Current location list was changed"
 msgstr "E926: La liste d'emplacements courante a changé"
 
-#, c-format
 msgid "E372: Too many %%%c in format string"
 msgstr "E372: Trop de %%%c dans la chaîne de format"
 
@@ -4736,9 +4588,6 @@ msgstr "E379: Nom de répertoire vide ou absent"
 msgid "E924: Current window was closed"
 msgstr "E924: La fenêtre courante doit être fermée"
 
-msgid "E925: Current quickfix was changed"
-msgstr "E925: Le quickfix courant a changé"
-
 #, c-format
 msgid "(%d of %d)%s%s: "
 msgstr "(%d sur %d)%s%s : "
@@ -4769,6 +4618,9 @@ msgstr "E683: Nom de fichier manquant ou
 msgid "Cannot open file \"%s\""
 msgstr "Impossible d'ouvrir le fichier \"%s\""
 
+msgid "cannot have both a list and a \"what\" argument"
+msgstr "impossible d'avoir une liste et un argument \"what\" en même temps"
+
 msgid "E681: Buffer is not loaded"
 msgstr "E681: le tampon n'est pas chargé"
 
@@ -4823,6 +4675,10 @@ msgid "E956: Cannot use pattern recursiv
 msgstr "E956: Impossible d'utiliser le motif récursivement"
 
 #, c-format
+msgid "E654: missing delimiter after search pattern: %s"
+msgstr "E654: il manque un délimiteur après le motif de recherche : %s"
+
+#, c-format
 msgid "E554: Syntax error in %s{...}"
 msgstr "E554: Erreur de syntaxe dans %s{...}"
 
@@ -4904,13 +4760,13 @@ msgstr "E866: (regexp NFA) %c au mauvais
 msgid "E877: (NFA regexp) Invalid character class: %d"
 msgstr "E877: (regexp NFA) Classe de caractère invalide : %d"
 
+msgid "E951: \\% value too large"
+msgstr "E951: valeur \\% trop grande"
+
 #, c-format
 msgid "E867: (NFA) Unknown operator '\\z%c'"
 msgstr "E867: (NFA) Opérateur inconnu '\\z%c'"
 
-msgid "E951: \\% value too large"
-msgstr "E951: valeur \\% trop grande"
-
 #, c-format
 msgid "E867: (NFA) Unknown operator '\\%%%c'"
 msgstr "E867: (NFA) Opérateur inconnu '\\%%%c'"
@@ -5259,9 +5115,6 @@ msgstr "  (INTROUVABLE)"
 msgid " (not supported)"
 msgstr " (non supporté)"
 
-msgid "E756: Spell checking is not enabled"
-msgstr "E756: La vérification orthographique n'est pas activée"
-
 #, c-format
 msgid "Warning: Cannot find word list \"%s_%s.spl\" or \"%s_ascii.spl\""
 msgstr "Alerte : Liste de mots \"%s_%s.spl\" ou \"%s_ascii.spl\" introuvable"
@@ -5509,32 +5362,36 @@ msgid "Reading word file %s..."
 msgstr "Lecture de la liste de mots %s..."
 
 #, c-format
-msgid "Duplicate /encoding= line ignored in %s line %d: %s"
-msgstr "Ligne /encoding= en double ignorée dans %s ligne %d : %s"
-
-#, c-format
-msgid "/encoding= line after word ignored in %s line %d: %s"
-msgstr "Ligne /encoding= après des mots ignorée dans %s ligne %d : %s"
-
-#, c-format
-msgid "Duplicate /regions= line ignored in %s line %d: %s"
-msgstr "Ligne /regions= en double ignorée dans %s ligne %d : %s"
-
-#, c-format
-msgid "Too many regions in %s line %d: %s"
-msgstr "Trop de régions dans %s ligne %d : %s"
-
-#, c-format
-msgid "/ line ignored in %s line %d: %s"
-msgstr "Ligne / ignorée dans %s ligne %d : %s"
-
-#, c-format
-msgid "Invalid region nr in %s line %d: %s"
-msgstr "Numéro de région invalide dans %s ligne %d : %s"
-
-#, c-format
-msgid "Unrecognized flags in %s line %d: %s"
-msgstr "Drapeaux non reconnus dans %s ligne %d : %s"
+msgid "Conversion failure for word in %s line %ld: %s"
+msgstr "Échec de conversion du mot dans %s ligne %ld : %s"
+
+#, c-format
+msgid "Duplicate /encoding= line ignored in %s line %ld: %s"
+msgstr "Ligne /encoding= en double ignorée dans %s ligne %ld : %s"
+
+#, c-format
+msgid "/encoding= line after word ignored in %s line %ld: %s"
+msgstr "Ligne /encoding= après des mots ignorée dans %s ligne %ld : %s"
+
+#, c-format
+msgid "Duplicate /regions= line ignored in %s line %ld: %s"
+msgstr "Ligne /regions= en double ignorée dans %s ligne %ld : %s"
+
+#, c-format
+msgid "Too many regions in %s line %ld: %s"
+msgstr "Trop de régions dans %s ligne %ld : %s"
+
+#, c-format
+msgid "/ line ignored in %s line %ld: %s"
+msgstr "Ligne / ignorée dans %s ligne %ld : %s"
+
+#, c-format
+msgid "Invalid region nr in %s line %ld: %s"
+msgstr "Numéro de région invalide dans %s ligne %ld : %s"
+
+#, c-format
+msgid "Unrecognized flags in %s line %ld: %s"
+msgstr "Drapeaux non reconnus dans %s ligne %ld : %s"
 
 #, c-format
 msgid "Ignored %d words with non-ASCII characters"
@@ -5544,8 +5401,8 @@ msgid "E845: Insufficient memory, word l
 msgstr "E845: mémoire insuffisante, liste de mots peut-être incomplète"
 
 #, c-format
-msgid "Compressed %d of %d nodes; %d (%d%%) remaining"
-msgstr "%d noeuds compressés sur %d ; %d (%d%%) restants "
+msgid "Compressed %s: %ld of %ld nodes; %ld (%ld%%) remaining"
+msgstr "Compressé %s : %ld/%ld noeuds ; %ld (%ld%%) restants"
 
 msgid "Reading back spell file..."
 msgstr "Relecture du fichier orthographique"
@@ -5626,6 +5483,10 @@ msgstr "Remplacer \"%.*s\" par :"
 msgid " < \"%.*s\""
 msgstr " < \"%.*s\""
 
+#, c-format
+msgid "E390: Illegal argument: %s"
+msgstr "E390: Argument invalide : %s"
+
 msgid "No Syntax items defined for this buffer"
 msgstr "Aucun élément de syntaxe défini pour ce tampon"
 
@@ -5638,22 +5499,12 @@ msgstr "\"syntax conceal\" activée"
 msgid "syntax conceal off"
 msgstr "\"syntax conceal\" désactivée"
 
-#, c-format
-msgid "E390: Illegal argument: %s"
-msgstr "E390: Argument invalide : %s"
-
 msgid "syntax case ignore"
 msgstr "syntaxe ignore la casse"
 
 msgid "syntax case match"
 msgstr "syntaxe respecte la casse"
 
-msgid "syntax spell toplevel"
-msgstr "contrôle orthographique dans le texte sans groupe syntaxique"
-
-msgid "syntax spell notoplevel"
-msgstr "pas de contrôle orthographique dans le texte sans groupe syntaxique"
-
 msgid "syntax spell default"
 msgstr ""
 "contrôle orthographique dans le texte sans groupe syntaxique, sauf si @Spell/"
@@ -5675,9 +5526,11 @@ msgstr "synchronisation sur les commenta
 msgid "no syncing"
 msgstr "Aucune synchronisation"
 
-# DB - Les deux messages qui suivent vont ensemble.
+msgid "syncing starts at the first line"
+msgstr "la synchronisation débute à la première ligne"
+
 msgid "syncing starts "
-msgstr "La synchronisation débute "
+msgstr "la synchronisation débute "
 
 msgid " lines before top line"
 msgstr " lignes avant la ligne du haut"
@@ -5707,6 +5560,9 @@ msgstr ""
 msgid "E392: No such syntax cluster: %s"
 msgstr "E392: Aucune grappe de syntaxe %s"
 
+msgid "from the first line"
+msgstr "à partir de la première ligne"
+
 msgid "minimal "
 msgstr "minimum "
 
@@ -5987,7 +5843,8 @@ msgid "E965: missing property type name"
 msgstr "E965: nom du type de propriété absent"
 
 msgid "E275: Cannot add text property to unloaded buffer"
-msgstr "E275: Impossible d'ajouter des propriétés de texte à un tampon déchargé"
+msgstr ""
+"E275: Impossible d'ajouter des propriétés de texte à un tampon déchargé"
 
 msgid "E967: text property info corrupted"
 msgstr "E967: information de propriété de texte corrompu"
@@ -5995,6 +5852,9 @@ msgstr "E967: information de propriété de texte corrompu"
 msgid "E968: Need at least one of 'id' or 'type'"
 msgstr "E968: Au moins « id » ou « type » sont nécessaires"
 
+msgid "E860: Need 'id' and 'type' with 'both'"
+msgstr "E860: 'id' et 'type' requis avec 'both'"
+
 #, c-format
 msgid "E969: Property type %s already defined"
 msgstr "E969: Type de propriété %s déjà défini"
@@ -6003,16 +5863,127 @@ msgstr "E969: Type de propriété %s déjà défini"
 msgid "E970: Unknown highlight group name: '%s'"
 msgstr "E970: Nom de groupe de surbrillance inconnu : « %s »"
 
+msgid "(Invalid)"
+msgstr "(Invalide)"
+
+msgid "%a %b %d %H:%M:%S %Y"
+msgstr "%a %b %d %H:%M:%S %Y"
+
+#, c-format
+msgid "%ld second ago"
+msgid_plural "%ld seconds ago"
+msgstr[0] "il y a %ld seconde"
+msgstr[1] "il y a %ld secondes"
+
+msgid "E805: Using a Float as a Number"
+msgstr "E805: Utilisation d'un Flottant comme un Nombre"
+
+msgid "E703: Using a Funcref as a Number"
+msgstr "E703: Utilisation d'une Funcref comme un Nombre"
+
+msgid "E745: Using a List as a Number"
+msgstr "E745: Utilisation d'une Liste comme un Nombre"
+
+msgid "E728: Using a Dictionary as a Number"
+msgstr "E728: Utilisation d'un Dictionnaire comme un Nombre"
+
+msgid "E611: Using a Special as a Number"
+msgstr "E611: Utilisation d'une valeur Spéciale comme Nombre"
+
+msgid "E910: Using a Job as a Number"
+msgstr "E910: Utilisation d'une Tâche comme un Nombre"
+
+msgid "E913: Using a Channel as a Number"
+msgstr "E913: Utilisation d'un Canal comme un Nombre"
+
+msgid "E974: Using a Blob as a Number"
+msgstr "E974: Utilisation d'un Blob comme un Nombre"
+
+msgid "E891: Using a Funcref as a Float"
+msgstr "E891: Utilisation d'une Funcref comme un Flottant"
+
+msgid "E892: Using a String as a Float"
+msgstr "E892: Utilisation d'une Chaîne comme un Flottant"
+
+msgid "E893: Using a List as a Float"
+msgstr "E893: Utilisation d'une Liste comme un Flottant"
+
+msgid "E894: Using a Dictionary as a Float"
+msgstr "E894: Utilisation d'un Dictionnaire comme un Flottant"
+
+msgid "E362: Using a boolean value as a Float"
+msgstr "E362: Utilisation d'une valeur Booléenne comme un Flottant"
+
+msgid "E907: Using a special value as a Float"
+msgstr "E907: Utilisation d'une valeur spéciale comme un Flottant"
+
+msgid "E911: Using a Job as a Float"
+msgstr "E911: Utilisation d'une Tâche comme un Flottant"
+
+msgid "E914: Using a Channel as a Float"
+msgstr "E914: Utilisation d'un Canal comme un Flottant"
+
+msgid "E975: Using a Blob as a Float"
+msgstr "E975: Utilisation d'un Blob comme un Flottant"
+
+msgid "E729: using Funcref as a String"
+msgstr "E729: Utilisation d'une Funcref comme une Chaîne"
+
+msgid "E730: using List as a String"
+msgstr "E730: Utilisation d'une Liste comme une Chaîne"
+
+msgid "E731: using Dictionary as a String"
+msgstr "E731: Utilisation d'un Dictionnaire comme une Chaîne"
+
+msgid "E976: using Blob as a String"
+msgstr "E976: Utilisation d'un Blob comme une Chaîne"
+
+msgid "E977: Can only compare Blob with Blob"
+msgstr "E977: Un Blob ne peut être comparé qu'avec un Blob"
+
+msgid "E691: Can only compare List with List"
+msgstr "E691: Une Liste ne peut être comparée qu'avec une Liste"
+
+msgid "E692: Invalid operation for List"
+msgstr "E692: Opération invalide avec les Liste"
+
+msgid "E735: Can only compare Dictionary with Dictionary"
+msgstr "E735: Un Dictionnaire ne peut être comparé qu'avec un Dictionnaire"
+
+msgid "E736: Invalid operation for Dictionary"
+msgstr "E736: Opération invalide avec les Dictionnaires"
+
+msgid "E694: Invalid operation for Funcrefs"
+msgstr "E694: Opération invalide avec les Funcrefs"
+
+# AB - La version française est meilleure que la version anglaise.
+#, c-format
+msgid "E112: Option name missing: %s"
+msgstr "E112: Il manque un nom d'option après %s"
+
+msgid "E973: Blob literal should have an even number of hex characters"
+msgstr ""
+"E973: Un littéral de Blob doit avoir un nombre pair de caractères "
+"hexadécimaux"
+
+# AB - La version française est meilleure que la version anglaise, qui est
+#      erronée, d'ailleurs : il s'agit d'une "double quote" et non d'une
+#      "quote".
+#, c-format
+msgid "E114: Missing quote: %s"
+msgstr "E114: Il manque \" à la fin de %s"
+
+# AB - La version française est meilleure que la version anglaise.
+#, c-format
+msgid "E115: Missing quote: %s"
+msgstr "E115: Il manque ' à la fin de %s"
+
 msgid "new shell started\n"
 msgstr "nouveau shell démarré\n"
 
 msgid "Vim: Error reading input, exiting...\n"
 msgstr "Vim : Erreur lors de la lecture de l'entrée, sortie...\n"
 
-# DB - Message de débogage.
-msgid "Used CUT_BUFFER0 instead of empty selection"
-msgstr "CUT_BUFFER0 utilisé plutôt qu'une sélection vide"
-
 msgid "E881: Line count changed unexpectedly"
 msgstr "E881: Le nombre de lignes a été changé inopinément"
 
@@ -6233,7 +6204,13 @@ msgid "E853: Duplicate argument name: %s
 msgstr "E853: Nom d'argument dupliqué : %s"
 
 msgid "E989: Non-default argument follows default argument"
-msgstr "E989: Argument sans valeur par défaut ne peut pas suivre un argument avec valeur par défaut"
+msgstr ""
+"E989: Argument sans valeur par défaut ne peut pas suivre un argument avec "
+"valeur par défaut"
+
+#, c-format
+msgid "E451: Expected }: %s"
+msgstr "E451: signe } attendu : %s"
 
 #, c-format
 msgid "E740: Too many arguments for function %s"
@@ -6273,22 +6250,10 @@ msgid "E699: Too many arguments"
 msgstr "E699: Trop d'arguments"
 
 #, c-format
-msgid "E117: Unknown function: %s"
-msgstr "E117: Fonction inconnue : %s"
-
-#, c-format
 msgid "E276: Cannot use function as a method: %s"
 msgstr "E276: Impossible d'utiliser une fonction comme méthode : %s"
 
 #, c-format
-msgid "E933: Function was deleted: %s"
-msgstr "E933: La fonction a été effacée : %s"
-
-#, c-format
-msgid "E119: Not enough arguments for function: %s"
-msgstr "E119: La fonction %s n'a pas reçu assez d'arguments"
-
-#, c-format
 msgid "E120: Using <SID> not in a script context: %s"
 msgstr "E120: <SID> utilisé en dehors d'un script : %s"
 
@@ -6310,6 +6275,9 @@ msgstr ""
 "E884: Le nom de la fonction ne peut pas contenir le caractère deux-points : "
 "%s"
 
+msgid "E454: function list was modified"
+msgstr "E454: la liste de fonctions a été modifiée"
+
 #, c-format
 msgid "E123: Undefined function: %s"
 msgstr "E123: Fonction non définie : %s"
@@ -6333,6 +6301,10 @@ msgid "E126: Missing :endfunction"
 msgstr "E126: Il manque :endfunction"
 
 #, c-format
+msgid "W1001: Text found after :enddef: %s"
+msgstr "W1001: Texte trouvé après :enddef : %s"
+
+#, c-format
 msgid "W22: Text found after :endfunction: %s"
 msgstr "W22: Texte trouvé après :endfunction : %s"
 
@@ -6513,18 +6485,15 @@ msgstr "avec interface graphique X11-neX
 msgid "with X11-Athena GUI."
 msgstr "avec interface graphique X11-Athena."
 
+msgid "with Haiku GUI."
+msgstr "avec interface graphique Haiku."
+
 msgid "with Photon GUI."
 msgstr "avec interface graphique Photon."
 
 msgid "with GUI."
 msgstr "avec une interface graphique."
 
-msgid "with Carbon GUI."
-msgstr "avec interface graphique Carbon."
-
-msgid "with Cocoa GUI."
-msgstr "avec interface graphique Cocoa."
-
 msgid "  Features included (+) or not (-):\n"
 msgstr "  Fonctionnalités incluses (+) ou non (-) :\n"
 
@@ -6535,16 +6504,16 @@ msgid "     user vimrc file: \""
 msgstr "     fichier vimrc utilisateur : \""
 
 msgid " 2nd user vimrc file: \""
-msgstr " 2me fichier vimrc utilisateur : \""
+msgstr "  2e fichier vimrc utilisateur : \""
 
 msgid " 3rd user vimrc file: \""
-msgstr " 3me fichier vimrc utilisateur : \""
+msgstr "  3e fichier vimrc utilisateur : \""
 
 msgid "      user exrc file: \""
 msgstr "      fichier exrc utilisateur : \""
 
 msgid "  2nd user exrc file: \""
-msgstr "  2me fichier exrc utilisateur : \""
+msgstr "   2e fichier exrc utilisateur : \""
 
 msgid "  system gvimrc file: \""
 msgstr "        fichier gvimrc système : \""
@@ -6553,10 +6522,10 @@ msgid "    user gvimrc file: \""
 msgstr "    fichier gvimrc utilisateur : \""
 
 msgid "2nd user gvimrc file: \""
-msgstr "2me fichier gvimrc utilisateur : \""
+msgstr " 2e fichier gvimrc utilisateur : \""
 
 msgid "3rd user gvimrc file: \""
-msgstr "3me fichier gvimrc utilisateur : \""
+msgstr " 3e fichier gvimrc utilisateur : \""
 
 msgid "       defaults file: \""
 msgstr " fichier de valeurs par défaut : \""
@@ -6657,6 +6626,21 @@ msgstr "tapez  :help register<Entrée>   pour plus d'informations          "
 msgid "menu  Help->Sponsor/Register  for information    "
 msgstr "menu  Aide->Sponsor/Enregistrement pour plus d'info"
 
+msgid "[end of lines]"
+msgstr "[fin des lignes]"
+
+msgid "global"
+msgstr "global"
+
+msgid "buffer"
+msgstr "tampon"
+
+msgid "window"
+msgstr "fenêtre"
+
+msgid "tab"
+msgstr "onglet"
+
 msgid ""
 "\n"
 "# Buffer list:\n"
@@ -6807,8 +6791,8 @@ msgstr "# 'encoding' dans lequel ce fichier a été écrit\n"
 # DB - ... dont les valeurs possibles sont les messages
 #      qui suivent.
 #, c-format
-msgid "Reading viminfo file \"%s\"%s%s%s"
-msgstr "Lecture du fichier viminfo \"%s\"%s%s%s"
+msgid "Reading viminfo file \"%s\"%s%s%s%s"
+msgstr "Lecture du fichier viminfo \"%s\"%s%s%s%s"
 
 # AB - Ce texte fait partie d'un message de débogage.
 # DB - Voir ci-dessus.
@@ -6883,9 +6867,6 @@ msgstr "E443: Rotation impossible quand une autre fenêtre est partagée"
 msgid "E444: Cannot close last window"
 msgstr "E444: Impossible de fermer la dernière fenêtre"
 
-msgid "E813: Cannot close autocmd or popup window"
-msgstr "E813: Impossible de fermer la fenêtre des autocommandes ou contextuelle"
-
 msgid "E814: Cannot close window, only autocmd window would remain"
 msgstr ""
 "E814: Impossible de fermer la fenêtre, seule la fenêtre des autocommandes "
@@ -6894,6 +6875,9 @@ msgstr ""
 msgid "E445: Other window contains changes"
 msgstr "E445: Les modifications de l'autre fenêtre n'ont pas été enregistrées"
 
+msgid "E366: Not allowed to enter a popup window"
+msgstr "E366: Interdit d'entrer dans une fenêtre contextuelle"
+
 #, c-format
 msgid "E370: Could not load library %s"
 msgstr "E370: Impossible de charger la bibliothèque %s"
@@ -6938,7 +6922,356 @@ msgstr "Erreur de gvimext.dll"
 msgid "Path length too long!"
 msgstr "Le chemin est trop long !"
 
-# msgstr "--Pas de lignes dans le tampon--"
+#, c-format
+msgid "E121: Undefined variable: %s"
+msgstr "E121: Variable non définie : %s"
+
+#, c-format
+msgid "E121: Undefined variable: %c:%s"
+msgstr "E121: Variable non définie : %c:%s"
+
+msgid "E476: Invalid command"
+msgstr "E476: Commande invalide"
+
+#, c-format
+msgid "E476: Invalid command: %s"
+msgstr "E476: Commande invalide : %s"
+
+msgid "E710: List value has more items than targets"
+msgstr "E710: La Liste a plus d'éléments que la destination"
+
+msgid "E711: List value does not have enough items"
+msgstr "E711: La Liste n'a pas assez d'éléments"
+
+msgid "E719: Cannot slice a Dictionary"
+msgstr "E719: Utilisation de [:] impossible avec un Dictionnaire"
+
+msgid ""
+"E856: \"assert_fails()\" second argument must be a string or a list with one "
+"or two strings"
+msgstr "E856: le second argument d'\"assert_fails()\" doit être une chaîne ou une liste avec une ou deux chaînes"
+
+msgid "E909: Cannot index a special variable"
+msgstr "E909: Impossible d'indexer une variable spéciale"
+
+#, c-format
+msgid "E1100: Missing :var: %s"
+msgstr "E1100: Il manque :var: %s"
+
+#, c-format
+msgid "E1001: Variable not found: %s"
+msgstr "E1001: Variable introuvable: %s"
+
+#, c-format
+msgid "E1002: Syntax error at %s"
+msgstr "E1002: Erreur de syntaxe dans %s"
+
+msgid "E1003: Missing return value"
+msgstr "E1003: Valeur de retour manquante"
+
+#, c-format
+msgid "E1004: White space required before and after '%s'"
+msgstr "E1004: Espace requise avant et après '%s'"
+
+msgid "E1005: Too many argument types"
+msgstr "E1005: Trop de types d'arguments"
+
+#, c-format
+msgid "E1006: %s is used as an argument"
+msgstr "E1006: %s est utilisé comme argument"
+
+msgid "E1007: Mandatory argument after optional argument"
+msgstr "E1007: Argument obligatoire après un argument optionnel"
+
+msgid "E1008: Missing <type>"
+msgstr "E1008: <type> manquant"
+
+msgid "E1009: Missing > after type"
+msgstr "E1009: Il manque > après type"
+
+#, c-format
+msgid "E1010: Type not recognized: %s"
+msgstr "E1010: Type non reconnu : %s"
+
+#, c-format
+msgid "E1011: Name too long: %s"
+msgstr "E1011: Nom trop long : %s"
+
+#, c-format
+msgid "E1012: Type mismatch; expected %s but got %s"
+msgstr "E1012: Type inconsistant ; attendu %s mais reçu %s"
+
+#, c-format
+msgid "E1013: Argument %d: type mismatch, expected %s but got %s"
+msgstr "E1013: Argument %d : type inconsistant, attendu %s mais reçu %s"
+
+#, c-format
+msgid "E1014: Invalid key: %s"
+msgstr "E1014: clé invalide : %s"
+
+#, c-format
+msgid "E1015: Name expected: %s"
+msgstr "E1015: Nom attendu : %s"
+
+#, c-format
+msgid "E1016: Cannot declare a %s variable: %s"
+msgstr "E1016: Impossible de déclarer variable %s : %s"
+
+#, c-format
+msgid "E1016: Cannot declare an environment variable: %s"
+msgstr "E1016: Impossible de déclarer une variable d'environnement : %s"
+
+#, c-format
+msgid "E1017: Variable already declared: %s"
+msgstr "E1017: Variable déjà déclarée : %s"
+
+#, c-format
+msgid "E1018: Cannot assign to a constant: %s"
+msgstr "E1018: Impossible d'assigner à une constante : %s"
+
+msgid "E1019: Can only concatenate to string"
+msgstr "E1019: Seules les chaînes peuvent être concaténées"
+
+#, c-format
+msgid "E1020: Cannot use an operator on a new variable: %s"
+msgstr "E1020: Impossible d'utiliser un opérateur sur une nouvelle variable : %s"
+
+msgid "E1021: Const requires a value"
+msgstr "E1021: Const nécessite une valeur"
+
+msgid "E1022: Type or initialization required"
+msgstr "E1022: Type ou initialisation requis"
+
+#, c-format
+msgid "E1023: Using a Number as a Bool: %d"
+msgstr "E1023: Utilisation d'un Nombre comme un Booléen : %d"
+
+msgid "E1024: Using a Number as a String"
+msgstr "E1024: Utilisation d'un Nombre comme une Chaîne"
+
+msgid "E1025: Using } outside of a block scope"
+msgstr "E1025: Utilisation de } hors d'un bloc de portée"
+
+msgid "E1026: Missing }"
+msgstr "E1026: } manquant"
+
+msgid "E1027: Missing return statement"
+msgstr "E1027: commande 'return' manquante"
+
+msgid "E1028: Compiling :def function failed"
+msgstr "E1028: Compilation de function :def a échoué"
+
+#, c-format
+msgid "E1029: Expected %s but got %s"
+msgstr "E1029: %s attendu mais %s reçu"
+
+#, c-format
+msgid "E1030: Using a String as a Number: \"%s\""
+msgstr "E1030: Utilisation d'une Chaîne comme Nombre : \"%s\""
+
+msgid "E1031: Cannot use void value"
+msgstr "E1031: Impossible d'utiliser une valeur 'void'"
+
+msgid "E1032: Missing :catch or :finally"
+msgstr "E1032: :catch ou :finally manquant"
+
+#, c-format
+msgid "E1034: Cannot use reserved name %s"
+msgstr "E1034: Impossible d'utiliser le nom réservé %s"
+
+msgid "E1035: % requires number arguments"
+msgstr "E1035: % nécessite des arguments numériques"
+
+#, c-format
+msgid "E1036: %c requires number or float arguments"
+msgstr "E1036: %c nécessite des arguments numériques ou flottants"
+
+#, c-format
+msgid "E1037: Cannot use \"%s\" with %s"
+msgstr "E1037: Impossible d'utiliser \"%s\" avec %s"
+
+msgid "E1038: \"vim9script\" can only be used in a script"
+msgstr "E1038: \"vim9script\" ne peut être utilisé que dans un script"
+
+msgid "E1039: \"vim9script\" must be the first command in a script"
+msgstr "E1039: \"vim9script\" doit être la première commande dans un script"
+
+msgid "E1040: Cannot use :scriptversion after :vim9script"
+msgstr "E1040: Impossible d'utiliser :scriptversion après :vim9script"
+
+#, c-format
+msgid "E1041: Redefining script item %s"
+msgstr "E1041: Redéfinition de l'élément de script %s"
+
+msgid "E1042: Export can only be used in vim9script"
+msgstr "E1042: Export ne peut être utilisé que dans vim9script"
+
+msgid "E1043: Invalid command after :export"
+msgstr "E1043: Commande invalide après :export"
+
+msgid "E1044: Export with invalid argument"
+msgstr "E1044: Export avec argument invalide"
+
+msgid "E1045: Missing \"as\" after *"
+msgstr "E1045: \"as\" manquant après *"
+
+msgid "E1046: Missing comma in import"
+msgstr "E1046: virgule manquante dans import"
+
+msgid "E1047: Syntax error in import"
+msgstr "E1047: Erreur de syntaxe dans import" 
+
+#, c-format
+msgid "E1048: Item not found in script: %s"
+msgstr "E1048: Élément non trouvé dans le script : %s"
+
+#, c-format
+msgid "E1049: Item not exported in script: %s"
+msgstr "E1049: Élément non exporté dans le script : %s"
+
+#, c-format
+msgid "E1052: Cannot declare an option: %s"
+msgstr "E1052: Impossible de déclarer un option : %s"
+
+#, c-format
+msgid "E1053: Could not import \"%s\""
+msgstr "E1053: Impossible d'importer \"%s\""
+
+#, c-format
+msgid "E1054: Variable already declared in the script: %s"
+msgstr "E1054: Variable déjà déclarée dans le script : %s"
+
+msgid "E1055: Missing name after ..."
+msgstr "E1055: Nom manquant après ..."
+
+#, c-format
+msgid "E1056: Expected a type: %s"
+msgstr "E1056: Type attendu : %s"
+
+msgid "E1057: Missing :enddef"
+msgstr "E1057: :enddef manquant"
+
+msgid "E1058: Function nesting too deep"
+msgstr "E1058: Fonctions trop imbriquées"
+
+#, c-format
+msgid "E1059: No white space allowed before colon: %s"
+msgstr "E1059: Espace interdite avant les deux-points : %s"
+
+#, c-format
+msgid "E1060: Expected dot after name: %s"
+msgstr "E1060: point attendu après le nom : %s"
+
+#, c-format
+msgid "E1061: Cannot find function %s"
+msgstr "E1061: Impossible de trouver la fonction : %s"
+
+msgid "E1062: Cannot index a Number"
+msgstr "E1062: Impossible d'indexer un Nombre"
+
+msgid "E1063: Type mismatch for v: variable"
+msgstr "E1063: Type inconsistant pour la variable v:"
+
+#, c-format
+msgid "E1066: Cannot declare a register: %s"
+msgstr "E1066: Impossible déclarer un registre : %s"
+
+#, c-format
+msgid "E1067: Separator mismatch: %s"
+msgstr "E1067: Séparateur inconsistant : %s"
+
+#, c-format
+msgid "E1068: No white space allowed before '%s'"
+msgstr "E1068: Espace interdite avant '%s'"
+
+#, c-format
+msgid "E1069: White space required after '%s'"
+msgstr "E1069: Espace interdite après '%s'"
+
+msgid "E1070: Missing \"from\""
+msgstr "E1070: \"from\" manquant"
+
+msgid "E1071: Invalid string after \"from\""
+msgstr "E1071: Chaîne invalide après \"from\""
+
+#, c-format
+msgid "E1072: Cannot compare %s with %s"
+msgstr "E1072: Impossible de comparer %s avec %s"
+
+#, c-format
+msgid "E1073: Name already defined: %s"
+msgstr "E1073: Nom déjà défini : %s"
+
+msgid "E1074: No white space allowed after dot"
+msgstr "E1074: Espace interdite après un point"
+
+#, c-format
+msgid "E1084: Cannot delete Vim9 script function %s"
+msgstr "E1084: Impossible de supprimer la fonction %s du script vim9"
+
+msgid "E1086: Cannot use :function inside :def"
+msgstr "E1086: Impossible d'utiliser :function dans :def"
+
+msgid "E1119: Cannot change list item"
+msgstr "E1119: Impossible de changer un élément de liste"
+
+msgid "E1120: Cannot change dict"
+msgstr "E1120: Impossible de changer un dictionnaire"
+
+msgid "E1121: Cannot change dict item"
+msgstr "E1121: Impossible de changer un élément de dictionnaire"
+
+#, c-format
+msgid "E1122: Variable is locked: %s"
+msgstr "E1122: Variable verrouillée : %s"
+
+#, c-format
+msgid "E1123: Missing comma before argument: %s"
+msgstr "E1123: Virgule manquante avant un argument : %s"
+
+msgid "E1127: Missing name after dot"
+msgstr "E1127: Nom manquant après un point"
+
+msgid "E1128: } without {"
+msgstr "E1128: } sans {"
+
+msgid "E1130: Cannot add to null list"
+msgstr "E1130: Impossible d'ajouter à une liste nulle"
+
+msgid "E1131: Cannot add to null blob"
+msgstr "E1131: Impossible d'ajouter à un Blob nul"
+
+msgid "E1132: Missing function argument"
+msgstr "E1132: Argument de fonction manquant"
+
+msgid "E1133: Cannot extend a null dict"
+msgstr "E1133: Impossible d'étendre un dictionnaire nul"
+
+#, c-format
+msgid "E1135: Using a String as a Bool: \"%s\""
+msgstr "E1135: Utilisation d'une Chaîne comme un Booléen : \"%s\""
+
+msgid "E1138: Using a Bool as a Number"
+msgstr "E1138: Utilisation d'un Booléen comme un Nombre"
+
+msgid "E1141: Indexable type required"
+msgstr "E1141: Type indexable requis"
+
+msgid "E1142: Non-empty string required"
+msgstr "E1142: Chaîne non vide requise"
+
+#, c-format
+msgid "E1143: Empty expression: \"%s\""
+msgstr "E1143: Expression vide : \"%s\""
+
+#, c-format
+msgid "E1146: Command not recognized: %s"
+msgstr "E1146: Commande non reconnue : %s"
+
+#, c-format
+msgid "E1148: Cannot index a %s"
+msgstr "E1148: Impossible d'indexer %s"
+
 # DB - todo : ou encore : msgstr "--Aucune ligne dans le tampon--"
 msgid "--No lines in buffer--"
 msgstr "--Le tampon est vide--"
@@ -6964,9 +7297,21 @@ msgstr ""
 msgid "E171: Missing :endif"
 msgstr "E171: :endif manquant"
 
+msgid "E603: :catch without :try"
+msgstr "E603: :catch sans :try"
+
+msgid "E606: :finally without :try"
+msgstr "E606: :finally sans :try"
+
+msgid "E607: multiple :finally"
+msgstr "E607: Il ne peut y avoir qu'un seul :finally"
+
 msgid "E600: Missing :endtry"
 msgstr "E600: :endtry manquant"
 
+msgid "E602: :endtry without :try"
+msgstr "E602: :endtry sans :try"
+
 msgid "E170: Missing :endwhile"
 msgstr "E170: :endwhile manquant"
 
@@ -7033,13 +7378,13 @@ msgstr "E15: Expression invalide : %s"
 msgid "E16: Invalid range"
 msgstr "E16: Plage invalide"
 
-msgid "E476: Invalid command"
-msgstr "E476: Commande invalide"
-
 #, c-format
 msgid "E17: \"%s\" is a directory"
 msgstr "E17: \"%s\" est un répertoire"
 
+msgid "E756: Spell checking is not possible"
+msgstr "E756: La vérification orthographique n'est pas possible"
+
 #, c-format
 msgid "E364: Library call failed for \"%s()\""
 msgstr "E364: L'appel à la bibliothèque a échoué pour \"%s()\""
@@ -7187,10 +7532,6 @@ msgid "E45: 'readonly' option is set (ad
 msgstr "E45: L'option 'readonly' est activée (ajoutez ! pour passer outre)"
 
 #, c-format
-msgid "E121: Undefined variable: %s"
-msgstr "E121: Variable non définie : %s"
-
-#, c-format
 msgid "E734: Wrong variable type for %s="
 msgstr "E734: Type de variable erroné avec %s="
 
@@ -7236,8 +7577,16 @@ msgid "E118: Too many arguments for func
 msgstr "E118: La fonction %s a reçu trop d'arguments"
 
 #, c-format
-msgid "E716: Key not present in Dictionary: %s"
-msgstr "E716: La clé %s n'existe pas dans le Dictionnaire"
+msgid "E119: Not enough arguments for function: %s"
+msgstr "E119: La fonction %s n'a pas reçu assez d'arguments"
+
+#, c-format
+msgid "E933: Function was deleted: %s"
+msgstr "E933: La fonction a été effacée : %s"
+
+#, c-format
+msgid "E716: Key not present in Dictionary: \"%s\""
+msgstr "E716: La clé n'existe pas dans le Dictionnaire : \"%s\""
 
 msgid "E714: List required"
 msgstr "E714: Liste requise"
@@ -7246,6 +7595,10 @@ msgid "E897: List or Blob required"
 msgstr "E897: Liste ou Blob requis"
 
 #, c-format
+msgid "E697: Missing end of List ']': %s"
+msgstr "E697: Il manque ']' à la fin de la Liste %s"
+
+#, c-format
 msgid "E712: Argument of %s must be a List or Dictionary"
 msgstr "E712: L'argument de %s doit être une Liste ou un Dictionnaire"
 
@@ -7253,6 +7606,26 @@ msgstr "E712: L'argument de %s doit être une Liste ou un Dictionnaire"
 msgid "E896: Argument of %s must be a List, Dictionary or Blob"
 msgstr "E896: L'argument de %s doit être une Liste, Dictionnaire ou un Blob"
 
+msgid "E804: Cannot use '%' with Float"
+msgstr "E804: Impossible d'utiliser '%' avec un Flottant"
+
+msgid "E908: using an invalid value as a String"
+msgstr "E908: Utilisation d'une valeur invalide comme une Chaîne"
+
+msgid "E996: Cannot lock an option"
+msgstr "E996: Impossible de verrouiller une option"
+
+#, c-format
+msgid "E113: Unknown option: %s"
+msgstr "E113: Option inconnue : %s"
+
+msgid "E18: Unexpected characters in :let"
+msgstr "E18: Caractères inattendus avant '='"
+
+#, c-format
+msgid "E857: Dictionary key \"%s\" required"
+msgstr "E857: Clé de Dictionnaire \"%s\" requis"
+
 msgid "E47: Error while reading errorfile"
 msgstr "E47: Erreur lors de la lecture du fichier d'erreurs"
 
@@ -7260,7 +7633,13 @@ msgid "E48: Not allowed in sandbox"
 msgstr "E48: Opération interdite dans le bac à sable"
 
 msgid "E523: Not allowed here"
-msgstr "E523: Interdit à cet endroit"
+msgstr "E523: Interdit ici"
+
+msgid "E578: Not allowed to change text here"
+msgstr "E578: Interdit de changer le texte ici"
+
+msgid "E565: Not allowed to change text or change window"
+msgstr "E565: Interdit de changer le texte ou la fenêtre"
 
 msgid "E359: Screen mode setting not supported"
 msgstr "E359: Choix du mode d'écran non supporté"
@@ -7295,6 +7674,10 @@ msgstr "E77: Trop de noms de fichiers"
 msgid "E488: Trailing characters"
 msgstr "E488: Caractères surnuméraires"
 
+#, c-format
+msgid "E488: Trailing characters: %s"
+msgstr "E488: Caractères surnuméraires : %s"
+
 msgid "E78: Unknown mark"
 msgstr "E78: Marque inconnue"
 
@@ -7320,6 +7703,25 @@ msgstr "E81: <SID> utilisé en dehors d'un script"
 msgid "E107: Missing parentheses: %s"
 msgstr "E107: Parenthèses manquantes : %s"
 
+msgid "E110: Missing ')'"
+msgstr "E110: ')' manquant"
+
+#, c-format
+msgid "E720: Missing colon in Dictionary: %s"
+msgstr "E720: Il manque ':' dans le Dictionnaire %s"
+
+#, c-format
+msgid "E721: Duplicate key in Dictionary: \"%s\""
+msgstr "E721: Clé dupliquée dans le Dictionnaire : %s"
+
+#, c-format
+msgid "E722: Missing comma in Dictionary: %s"
+msgstr "E722: Il manque une virgule dans le Dictionnaire : %s"
+
+#, c-format
+msgid "E723: Missing end of Dictionary '}': %s"
+msgstr "E723: Il manque '}' à la fin du Dictionnaire : %s"
+
 msgid "E449: Invalid expression received"
 msgstr "E449: Expression invalide reçue"
 
@@ -7353,6 +7755,9 @@ msgstr "E764: L'option '%s' n'est pas activée"
 msgid "E850: Invalid register name"
 msgstr "E850: Nom de registre invalide"
 
+msgid "E806: using Float as a String"
+msgstr "E806: Utilisation d'un Flottant comme une Chaîne"
+
 #, c-format
 msgid "E919: Directory not found in '%s': \"%s\""
 msgstr "E919: Répertoire introuvable dans '%s' : \"%s\""
@@ -7360,6 +7765,10 @@ msgstr "E919: Répertoire introuvable dans '%s' : \"%s\""
 msgid "E952: Autocommand caused recursive behavior"
 msgstr "E952: Une autocommande a causé une récursivité"
 
+msgid "E813: Cannot close autocmd or popup window"
+msgstr ""
+"E813: Impossible de fermer la fenêtre des autocommandes ou contextuelle"
+
 # DB - todo : J'hésite avec
 #      msgstr "E328: Le menu n'existe pas dans ce mode"
 msgid "E328: Menu only exists in another mode"
@@ -7372,12 +7781,56 @@ msgstr "E957: numéro de fenêtre invalide"
 msgid "E686: Argument of %s must be a List"
 msgstr "E686: L'argument de %s doit être une Liste"
 
+# AB - Je suis partagé entre la concision d'une traduction assez littérale et
+#      la lourdeur d'une traduction plus correcte.
+msgid "E109: Missing ':' after '?'"
+msgstr "E109: Il manque ':' après '?'"
+
+msgid "E690: Missing \"in\" after :for"
+msgstr "E690: \"in\" manquant après :for"
+
+#, c-format
+msgid "E117: Unknown function: %s"
+msgstr "E117: Fonction inconnue : %s"
+
+msgid "E111: Missing ']'"
+msgstr "E111: ']' manquant"
+
+msgid "E581: :else without :if"
+msgstr "E581: :else sans :if"
+
+msgid "E582: :elseif without :if"
+msgstr "E582: :elseif sans :if"
+
+msgid "E580: :endif without :if"
+msgstr "E580: :endif sans :if"
+
+msgid "E586: :continue without :while or :for"
+msgstr "E586: :continue sans :while ou :for"
+
+msgid "E587: :break without :while or :for"
+msgstr "E587: :break sans :while ou :for"
+
+msgid "E274: No white space allowed before parenthesis"
+msgstr "E274: espace interdite avant une parenthèse"
+
+#, c-format
+msgid "E940: Cannot lock or unlock variable %s"
+msgstr "E940: Impossible de (dé)verrouiller la variable %s"
+
+#, c-format
+msgid "E254: Cannot allocate color %s"
+msgstr "E254: Impossible d'allouer la couleur %s"
+
 msgid "search hit TOP, continuing at BOTTOM"
 msgstr "La recherche a atteint le HAUT, et continue en BAS"
 
 msgid "search hit BOTTOM, continuing at TOP"
 msgstr "La recherche a atteint le BAS, et continue en HAUT"
 
+msgid " line "
+msgstr " ligne "
+
 #, c-format
 msgid "Need encryption key for \"%s\""
 msgstr "Besoin de la clé de chiffrement pour \"%s\""
@@ -7708,3 +8161,69 @@ msgstr "gvim"
 
 msgid "Vim"
 msgstr "Vim"
+
+msgid "(local to buffer)"
+msgstr "(local au tampon)"
+
+msgid "(global or local to buffer)"
+msgstr "(global ou local au tampon)"
+
+msgid "number of lines used for the command-line"
+msgstr "nombre de lignes utilisée pour la ligne de commande"
+
+msgid "don't redraw while executing macros"
+msgstr "ne pas rafraîchir l'écran lors de l'exécution des macros"
+
+msgid "show <Tab> as ^I and end-of-line as $"
+msgstr "montrer ^I pour <Tab> et $ pour la fin de ligne"
+
+msgid "show the line number for each line"
+msgstr "montrer le numéro de chaque ligne"
+
+msgid "terminal"
+msgstr "terminal"
+
+msgid "enable lisp mode"
+msgstr "activer le mode lisp"
+
+msgid "folding"
+msgstr "repli"
+
+msgid "list of directories to put backup files in"
+msgstr "liste des répertoires des copies de secours dans"
+
+msgid "the swap file"
+msgstr "le fichier d'échange"
+
+msgid "list of directories for the swap file"
+msgstr "liste des répertoires du fichier d'échange"
+
+msgid "command line editing"
+msgstr "édition de ligne de commande"
+
+msgid "multi-byte characters"
+msgstr "caractères multi-octets"
+
+msgid "various"
+msgstr "divers"
+
+msgid "name of the Lua dynamic library"
+msgstr "nom de la bibliothèque dynamique Lua"
+
+msgid "name of the Perl dynamic library"
+msgstr "nom de la bibliothèque dynamique Perl"
+
+msgid "whether to use Python 2 or 3"
+msgstr "utilisation de Python 2 ou 3"
+
+msgid "name of the Python 2 dynamic library"
+msgstr "nom de la bibliothèque dynamique Python 2"
+
+msgid "name of the Ruby dynamic library"
+msgstr "nom de la bibliothèque dynamique Ruby"
+
+msgid "name of the Tcl dynamic library"
+msgstr "nom de la bibliothèque dynamique Tcl"
+
+msgid "name of the MzScheme dynamic library"
+msgstr "nom de la bibliothèque dynamique MzScheme"