changeset 20856:83cfa1ef1bf2

Update runtime files Commit: https://github.com/vim/vim/commit/65e0d77a66b7e50beb562ad554ace46c32ef8f0f Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jun 14 17:29:55 2020 +0200 Update runtime files
author Bram Moolenaar <Bram@vim.org>
date Sun, 14 Jun 2020 17:45:04 +0200
parents 6390b8b611fb
children ed923c9d9948
files runtime/doc/Makefile runtime/doc/autocmd.txt runtime/doc/eval.txt runtime/doc/options.txt runtime/doc/os_vms.txt runtime/doc/quickref.txt runtime/doc/spell.txt runtime/doc/syntax.txt runtime/doc/tags runtime/doc/testing.txt runtime/doc/todo.txt runtime/doc/usr_41.txt runtime/doc/usr_45.txt runtime/doc/usr_46.txt runtime/doc/usr_90.txt runtime/doc/usr_toc.txt runtime/doc/version8.txt runtime/doc/vim9.txt runtime/doc/windows.txt runtime/menu.vim runtime/optwin.vim runtime/pack/dist/opt/termdebug/plugin/termdebug.vim runtime/syntax/desktop.vim runtime/syntax/objc.vim runtime/syntax/tex.vim
diffstat 25 files changed, 632 insertions(+), 235 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/Makefile
+++ b/runtime/doc/Makefile
@@ -141,6 +141,7 @@ DOCS = \
 	usr_43.txt \
 	usr_44.txt \
 	usr_45.txt \
+	usr_46.txt \
 	usr_90.txt \
 	usr_toc.txt \
 	various.txt \
@@ -282,6 +283,7 @@ HTMLS = \
 	usr_43.html \
 	usr_44.html \
 	usr_45.html \
+	usr_46.html \
 	usr_90.html \
 	usr_toc.html \
 	various.html \
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1,4 +1,4 @@
-*autocmd.txt*   For Vim version 8.2.  Last change: 2020 Jan 26
+*autocmd.txt*   For Vim version 8.2.  Last change: 2020 Jun 10
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 8.2.  Last change: 2020 Jun 07
+*eval.txt*	For Vim version 8.2.  Last change: 2020 Jun 14
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1533,6 +1533,7 @@ An internal variable is explicitly destr
 Using a name that is not an internal variable or refers to a variable that has
 been destroyed results in an error.
 
+						*variable-scope*
 There are several name spaces for variables.  Which one is to be used is
 specified by what is prepended:
 
@@ -1551,7 +1552,9 @@ delete all script-local variables: >
 	:for k in keys(s:)
 	:    unlet s:[k]
 	:endfor
-<
+
+Note: in Vim9 script this is different, see |vim9-scopes|.
+
 						*buffer-variable* *b:var* *b:*
 A variable name that is preceded with "b:" is local to the current buffer.
 Thus you can have several "b:foo" variables, one for each buffer.
@@ -4523,7 +4526,7 @@ flatten({list} [, {maxdepth}])					*flat
 		a very large number.
 		The {list} is changed in place, make a copy first if you do
 		not want that.
-							        *E964*
+							        *E900*
 		{maxdepth} means how deep in nested lists changes are made.
 		{list} is not modified when {maxdepth} is 0.
 		{maxdepth} must be positive number.
@@ -6278,10 +6281,11 @@ inputlist({textlist})					*inputlist()*
 		displayed, one string per line.  The user will be prompted to
 		enter a number, which is returned.
 		The user can also select an item by clicking on it with the
-		mouse.  For the first string 0 is returned.  When clicking
-		above the first item a negative number is returned.  When
-		clicking on the prompt one more than the length of {textlist}
-		is returned.
+		mouse, if the mouse is enabled in the command line ('mouse' is
+		"a" or includes "c").  For the first string 0 is returned.
+		When clicking above the first item a negative number is
+		returned.  When clicking on the prompt one more than the
+		length of {textlist} is returned.
 		Make sure {textlist} has less than 'lines' entries, otherwise
 		it won't work.  It's a good idea to put the entry number at
 		the start of the string.  And put a prompt in the first item.
@@ -11783,6 +11787,9 @@ like this: >
 
 	:call filename#funcname()
 
+These functions are always global, in Vim9 script "g:" needs to be used: >
+	:call g:filename#funcname()
+
 When such a function is called, and it is not defined yet, Vim will search the
 "autoload" directories in 'runtimepath' for a script file called
 "filename.vim".  For example "~/.vim/autoload/filename.vim".  That file should
@@ -11794,7 +11801,11 @@ then define the function like this: >
 
 The file name and the name used before the # in the function must match
 exactly, and the defined function must have the name exactly as it will be
-called.
+called.  In Vim9 script the "g:" prefix must be used: >
+	function g:filename#funcname()
+
+or for a compiled function: >
+	def g:filename#funcname()
 
 It is possible to use subdirectories.  Every # in the function name works like
 a path separator.  Thus when calling a function: >
@@ -11877,6 +11888,9 @@ This does NOT work: >
 ==============================================================================
 7. Commands						*expression-commands*
 
+Note: in Vim9 script `:let` is used for variable declaration, not assignment.
+An assignment leaves out the `:let` command.  |vim9-declaration|
+
 :let {var-name} = {expr1}				*:let* *E18*
 			Set internal variable {var-name} to the result of the
 			expression {expr1}.  The variable will get the type
@@ -12099,12 +12113,14 @@ text...
 			  s:	script-local variables
 			  l:	local function variables
 			  v:	Vim variables.
+			This does not work in Vim9 script. |vim9-declaration|
 
 :let			List the values of all variables.  The type of the
 			variable is indicated before the value:
 			    <nothing>	String
 				#	Number
 				*	Funcref
+			This does not work in Vim9 script. |vim9-declaration|
 
 :unl[et][!] {name} ...				*:unlet* *:unl* *E108* *E795*
 			Remove the internal variable {name}.  Several variable
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 8.2.  Last change: 2020 May 31
+*options.txt*	For Vim version 8.2.  Last change: 2020 Jun 10
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -5232,7 +5232,7 @@ A jump table for the options with a shor
 <	If your terminal can't overrule the mouse events going to the
 	application, use: >
 		:set mouse=nvi
-<	The you can press ":", select text for the system, and press Esc to go
+<	Then you can press ":", select text for the system, and press Esc to go
 	back to Vim using the mouse events.
 	In |defaults.vim| "nvi" is used if the 'term' option is not matching
 	"xterm".
--- 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: 2019 Jan 29
+*os_vms.txt*    For Vim version 8.2.  Last change: 2020 Jun 07
 
 
 		  VIM REFERENCE MANUAL
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -1,4 +1,4 @@
-*quickref.txt*  For Vim version 8.2.  Last change: 2020 Jun 02
+*quickref.txt*  For Vim version 8.2.  Last change: 2020 Jun 10
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -910,6 +910,7 @@ Short explanation of each option:		*opti
 'spellcapcheck'   'spc'     pattern to locate end of a sentence
 'spellfile'	  'spf'     files where |zg| and |zw| store words
 'spelllang'	  'spl'     language(s) to do spell checking for
+'spelloptions'	  'spo'     options for spell checking
 'spellsuggest'	  'sps'     method(s) used to suggest spelling corrections
 'splitbelow'	  'sb'	    new window from split is below the current one
 'splitright'	  'spr'     new window is put right of the current one
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt*	For Vim version 8.2.  Last change: 2019 Aug 16
+*spell.txt*	For Vim version 8.2.  Last change: 2020 Jun 10
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1214,11 +1214,13 @@ DESKTOP					   *desktop.vim* *ft-desktop
 
 Primary goal of this syntax file is to highlight .desktop and .directory files
 according to freedesktop.org standard:
-http://standards.freedesktop.org/desktop-entry-spec/latest/
-But actually almost none implements this standard fully.  Thus it will
-highlight all Unix ini files.  But you can force strict highlighting according
-to standard by placing this in your vimrc file: >
-	:let enforce_freedesktop_standard = 1
+https://specifications.freedesktop.org/desktop-entry-spec/latest/
+To highlight nonstandard extensions that does not begin with X-, set >
+	let g:desktop_enable_nonstd = 1
+Note that this may cause wrong highlight.
+To highlight KDE-reserved features, set >
+	let g:desktop_enable_kde = 1
+g:desktop_enable_kde follows g:desktop_enable_nonstd if not supplied
 
 
 DIFF							*diff.vim*
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -915,11 +915,13 @@
 'spellcapcheck'	options.txt	/*'spellcapcheck'*
 'spellfile'	options.txt	/*'spellfile'*
 'spelllang'	options.txt	/*'spelllang'*
+'spelloptions'	options.txt	/*'spelloptions'*
 'spellsuggest'	options.txt	/*'spellsuggest'*
 'spf'	options.txt	/*'spf'*
 'spl'	options.txt	/*'spl'*
 'splitbelow'	options.txt	/*'splitbelow'*
 'splitright'	options.txt	/*'splitright'*
+'spo'	options.txt	/*'spo'*
 'spr'	options.txt	/*'spr'*
 'sps'	options.txt	/*'sps'*
 'sr'	options.txt	/*'sr'*
@@ -1926,6 +1928,10 @@ 45.2	usr_45.txt	/*45.2*
 45.3	usr_45.txt	/*45.3*
 45.4	usr_45.txt	/*45.4*
 45.5	usr_45.txt	/*45.5*
+46.1	usr_46.txt	/*46.1*
+46.2	usr_46.txt	/*46.2*
+46.3	usr_46.txt	/*46.3*
+46.?	usr_46.txt	/*46.?*
 8g8	various.txt	/*8g8*
 90.1	usr_90.txt	/*90.1*
 90.2	usr_90.txt	/*90.2*
@@ -3886,6 +3892,7 @@ E101	diff.txt	/*E101*
 E102	diff.txt	/*E102*
 E103	diff.txt	/*E103*
 E104	digraph.txt	/*E104*
+E1042	vim9.txt	/*E1042*
 E105	mbyte.txt	/*E105*
 E107	eval.txt	/*E107*
 E108	eval.txt	/*E108*
@@ -4732,6 +4739,7 @@ E897	eval.txt	/*E897*
 E898	channel.txt	/*E898*
 E899	eval.txt	/*E899*
 E90	message.txt	/*E90*
+E900	eval.txt	/*E900*
 E901	channel.txt	/*E901*
 E902	channel.txt	/*E902*
 E903	channel.txt	/*E903*
@@ -5059,6 +5067,7 @@ SessionLoad-variable	starting.txt	/*Sess
 SessionLoadPost	autocmd.txt	/*SessionLoadPost*
 ShellCmdPost	autocmd.txt	/*ShellCmdPost*
 ShellFilterPost	autocmd.txt	/*ShellFilterPost*
+SigUSR1	autocmd.txt	/*SigUSR1*
 SourceCmd	autocmd.txt	/*SourceCmd*
 SourcePost	autocmd.txt	/*SourcePost*
 SourcePre	autocmd.txt	/*SourcePre*
@@ -5450,20 +5459,7 @@ bars	help.txt	/*bars*
 base_font_name_list	mbyte.txt	/*base_font_name_list*
 basic.vim	syntax.txt	/*basic.vim*
 beep	options.txt	/*beep*
-beos-colors	os_beos.txt	/*beos-colors*
-beos-compiling	os_beos.txt	/*beos-compiling*
-beos-dragndrop	os_beos.txt	/*beos-dragndrop*
-beos-fonts	os_beos.txt	/*beos-fonts*
-beos-general	os_beos.txt	/*beos-general*
-beos-gui	os_beos.txt	/*beos-gui*
-beos-launch	os_beos.txt	/*beos-launch*
-beos-meta	os_beos.txt	/*beos-meta*
-beos-mouse	os_beos.txt	/*beos-mouse*
-beos-perl	os_beos.txt	/*beos-perl*
-beos-timeout	os_beos.txt	/*beos-timeout*
-beos-unicode	os_beos.txt	/*beos-unicode*
-beos-utf8	os_beos.txt	/*beos-utf8*
-beos-vimdir	os_beos.txt	/*beos-vimdir*
+beos	os_beos.txt	/*beos*
 better-python-interface	version7.txt	/*better-python-interface*
 beval_bufnr-variable	eval.txt	/*beval_bufnr-variable*
 beval_col-variable	eval.txt	/*beval_col-variable*
@@ -6342,6 +6338,7 @@ filetype.txt	filetype.txt	/*filetype.txt
 filetypedetect-changed	version6.txt	/*filetypedetect-changed*
 filetypes	filetype.txt	/*filetypes*
 filewritable()	eval.txt	/*filewritable()*
+filler-lines	windows.txt	/*filler-lines*
 filter	change.txt	/*filter*
 filter()	eval.txt	/*filter()*
 find-manpage	usr_12.txt	/*find-manpage*
@@ -6364,6 +6361,7 @@ fixed-7.1	version7.txt	/*fixed-7.1*
 fixed-7.2	version7.txt	/*fixed-7.2*
 fixed-7.3	version7.txt	/*fixed-7.3*
 fixed-7.4	version7.txt	/*fixed-7.4*
+flatten()	eval.txt	/*flatten()*
 flexwiki.vim	syntax.txt	/*flexwiki.vim*
 float-e	eval.txt	/*float-e*
 float-functions	usr_41.txt	/*float-functions*
@@ -8885,6 +8883,7 @@ sound_playevent()	eval.txt	/*sound_playe
 sound_playfile()	eval.txt	/*sound_playfile()*
 sound_stop()	eval.txt	/*sound_stop()*
 soundfold()	eval.txt	/*soundfold()*
+source-vim9-script	usr_46.txt	/*source-vim9-script*
 space	intro.txt	/*space*
 spec-customizing	pi_spec.txt	/*spec-customizing*
 spec-how-to-use-it	pi_spec.txt	/*spec-how-to-use-it*
@@ -9525,6 +9524,7 @@ terminal-unix	terminal.txt	/*terminal-un
 terminal-use	terminal.txt	/*terminal-use*
 terminal-window	terminal.txt	/*terminal-window*
 terminal.txt	terminal.txt	/*terminal.txt*
+terminalprops()	eval.txt	/*terminalprops()*
 terminfo	term.txt	/*terminfo*
 termresponse-variable	eval.txt	/*termresponse-variable*
 test-functions	usr_41.txt	/*test-functions*
@@ -9701,6 +9701,7 @@ usr_42.txt	usr_42.txt	/*usr_42.txt*
 usr_43.txt	usr_43.txt	/*usr_43.txt*
 usr_44.txt	usr_44.txt	/*usr_44.txt*
 usr_45.txt	usr_45.txt	/*usr_45.txt*
+usr_46.txt	usr_46.txt	/*usr_46.txt*
 usr_90.txt	usr_90.txt	/*usr_90.txt*
 usr_toc.txt	usr_toc.txt	/*usr_toc.txt*
 utf-8	mbyte.txt	/*utf-8*
@@ -9920,6 +9921,7 @@ val-variable	eval.txt	/*val-variable*
 valgrind	debug.txt	/*valgrind*
 values()	eval.txt	/*values()*
 var-functions	usr_41.txt	/*var-functions*
+variable-scope	eval.txt	/*variable-scope*
 variables	eval.txt	/*variables*
 various	various.txt	/*various*
 various-cmds	various.txt	/*various-cmds*
@@ -9993,11 +9995,15 @@ vim.vim	syntax.txt	/*vim.vim*
 vim7	version7.txt	/*vim7*
 vim8	version8.txt	/*vim8*
 vim9	vim9.txt	/*vim9*
+vim9-declaration	vim9.txt	/*vim9-declaration*
+vim9-declarations	usr_46.txt	/*vim9-declarations*
 vim9-differences	vim9.txt	/*vim9-differences*
 vim9-export	vim9.txt	/*vim9-export*
 vim9-import	vim9.txt	/*vim9-import*
 vim9-rationale	vim9.txt	/*vim9-rationale*
+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*
 vim9script	vim9.txt	/*vim9script*
--- a/runtime/doc/testing.txt
+++ b/runtime/doc/testing.txt
@@ -1,4 +1,4 @@
-*testing.txt*	For Vim version 8.2.  Last change: 2020 Jun 03
+*testing.txt*	For Vim version 8.2.  Last change: 2020 Jun 13
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.2.  Last change: 2020 Jun 07
+*todo.txt*      For Vim version 8.2.  Last change: 2020 Jun 14
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -40,15 +40,17 @@ browser use: https://github.com/vim/vim/
 
 Include src/po/vim.pot ?
 
-If there are no complaints, remove more typecasts from vim_strnsave() length
-argument.
-
 Vim9 script:
 Making everything work:
+- assignment to script var should check type
+- Compile: let [var, var] = expr
+  share code for :let between compiled and uncompiled?
+- do not allow "let g:var = value", must drop "let"
 - possible memory leak in test_vim9_func through compile_nested_function.
 - memory leaks in test_vim9_expr
 - memory leaks in test_vim9_script
 - Test that a script-local function in Vim9 script cannot be deleted.
+- Check that when sourcing a Vim9 script, only the global items can be used.
 - Make "true" and "false" work in vim9script
 - Test that a function defined inside a :def function is local to that
   function, g: functions can be defined and script-local functions cannot be
@@ -56,7 +58,6 @@ Making everything work:
 - make 0 == 'string' fail on the script level, like inside :def.
 - Check that when using a user function name without prefix, it does not find
   a global function.  Prefixing g: is required.
-- Compile: let [var, var] = expr
 - Compile: for [key, value] in items(map)
 - Assignment to dict doesn't work:
       let ret: dict<string> = #{}
@@ -76,6 +77,7 @@ Making everything work:
     (Ben Jackson, #5671)
     Can we share the code from ex_let_const() between direct execution and
     compiling?
+- Implement "as Name" in "import Item as Name from ..."
 - Disallow unlet for local/script/imported vars
 - Make "++nr" work.
 - Make closures work:
@@ -88,13 +90,14 @@ Making everything work:
 New syntax and functionality:
 Improve error checking:
 - "echo Func()" is an error if Func() does not return anything.
+Test:
+- Using a Vim9 autoload script (functions must be global).
 Also:
 - For range: make table of first ASCII character with flag to quickly check if
   it can be a Vim9 command. E.g. "+" can, but "." can't.
 - better implementation for partial and tests for that.
 - Make "g:imported = Export.exported" work in Vim9 script.
 - Make Foo.Bar() work to call the dict function. (#5676)
-- Check that import in legacy script works and puts item in s:
 - Error in any command in "vim9script" aborts sourcing.
 - Find a way to test expressions in legacy and Vim9 script without duplication
 - Fix memory leaks for test_vim9_disassemble, test_vim9_expr, test_vim9_script
@@ -237,7 +240,25 @@ Terminal emulator window:
   conversions.
 
 Error numbers available:
-E489, E610, E611, E653, E856, E857, E861, E900
+E489, E610, E611, E653, E856, E857, E861
+
+Remove SPACE_IN_FILENAME ? It is only used for completion.
+
+Can we detect true color support?  https://gist.github.com/XVilka/8346728
+Try setting a color then request the current color, like using t_u7.
+
+Check out PR #543 (Roland Puntaier).
+Patch for multi-byte characters in langmap and applying a mapping on them.
+(Christian Brabandt, 2015 Jun 12, update July 25)
+Is this the right solution?  Need to cleanup langmap behavior:
+- in vgetorpeek() apply langmap to the typeahead buffer and put the result in
+  a copy-buffer, only when langmap is appropriate for the current mode. Then
+  check for mapping and let gotchars() work on the copy-buffer.
+- Remove LANGMAP_ADJUST() in other parts of the code.  Make sure the mode is
+  covered by the above change.
+So that replaying the register doesn't use keymap/langmap and still does the
+same thing.
+Also see #737: langmap not applied to replaying recording.
 
 Buffer autocommands are a bit inconsistent.  Add a separate set of
 autocommands for the buffer lifecycle:
@@ -275,6 +296,9 @@ undo result wrong: Masato Nishihata, #47
 When 'lazyredraw' is set sometimes the title is not updated.
 (Jason Franklin, 2020 Feb 3)  Looks like a race condition.
 
+Regexp to search for duplicate lines does not work correctly:
+/\(^.*\n\)\1  (Chris Morgan, #6239)
+
 With bash ":make" does not set v:shell_error.  Possible solution: set
 'shellpipe' to "2>&1| tee %s; exit ${PIPESTATUS[0]}"  #5994
 
@@ -305,6 +329,8 @@ Wrong error when using local arglist. (H
 Request to support <Cmd> in mappings, similar to how Neovim does this.
 (Daniel Hahler, #4784)
 
+Test loose_clipboard() by selecting text before suspending.
+
 Undo puts cursor in wrong line after "cG<Esc>" undo.
 
 :unmap <c-n> gives error but does remove the mapping. (Antony Scriven, 2019
@@ -391,7 +417,7 @@ When using :packadd files under "later" 
 with packages under "start". (xtal8, #1994)
 
 Patch to add new motion ]( and ]{.  (Yasuhiro Matsumoto, #5320)
-Better: use the "z" prefix.
+Better: use the "z" prefix.  or ]t) and [t(.
 
 Modeless selection doesn't work in gvim. (#4783)
 Caused by patch 8.1.1534.
@@ -439,18 +465,12 @@ Can be used to update highlighting. #312
 Incorrect formatting with autoindent. (Sebastian Gniazdowski, #4909)
 
 Patch to add the :bvimgrep command.  (Christian Brabandt, 2014 Nov 12)
-Updated 2016 Jun 10, #858  Update 2017 Mar 28: use <buffer>
+Updated 2016 Jun 10, #858  Update 2017 Mar 28: use <buffer>.
+Better use ":bufgrep" ?
 
 Errors found with random data:
     heap-buffer-overflow in alist_add (#2472)
 
-Patch to support CamelCase for spell checking: See a lower-to-upper case
-change as a word boundary. (btucker-MPCData, 2016 Nov 6, #1235)
-patch for 'spellcamelcase' option: spellcheck each CamelCased word.
-(Ben Tucker, 2016 Dec 2)
-
-Patch to add "cmdline" completion to getcompletion(). (Shougo, Oct 1, #1140)
-
 Improve fallback for menu translations, to avoid having to create lots of
 files that source the actual file.  E.g. menu_da_de -> menu_da
 Include part of #3242?
@@ -466,18 +486,6 @@ Added tests (James McCoy, 2016 Aug 3, #9
 window 2.  User expects 10 to be added to size of window 2. (Daniel Steinberg,
 #5443)
 
-Patch for multi-byte characters in langmap and applying a mapping on them.
-(Christian Brabandt, 2015 Jun 12, update July 25)
-Is this the right solution?  Need to cleanup langmap behavior:
-- in vgetorpeek() apply langmap to the typeahead buffer and put the result in
-  a copy-buffer, only when langmap is appropriate for the current mode. Then
-  check for mapping and let gotchars() work on the copy-buffer.
-- Remove LANGMAP_ADJUST() in other parts of the code.  Make sure the mode is
-  covered by the above change.
-So that replaying the register doesn't use keymap/langmap and still does the
-same thing.  Remarks on PR #543 (Roland Puntaier).
-Also see #737: langmap not applied to replaying recording.
-
 Would be nice to set tab-local values for 'diffexpr' and 'diffopt'.  Use
 t:diffexpr_option t:diffopt_option? (#4782)
 
@@ -507,10 +515,10 @@ Give a few examples. (#4288)
 Opening a file with --remote-tab-silent that matches 'wildignore' does not
 work, results in (E479: No match". (#4610)
 
-Patch for this (Tristan Konolige, #1011, only adds the option, no implem.):
 7   Add an option to add one pixel column to the character width?  Lucida
     Console italic is wider than the normal font ("d" overlaps with next char).
     Opposite of 'linespace': 'columnspace'.
+Patch for this (Tristan Konolige, #1011, only added the option, no implem.)
 
 Bug: script written with "-W scriptout" contains Key codes, while the script
 read with "-s scriptin" expects escape codes.  Probably "scriptout" needs to
@@ -583,9 +591,6 @@ C syntax: {} inside () causes following 
 Check: __attribute__((format(printf, on semsg() and siemsg().  Where was this
 added?
 
-Patch to add a flatten() function.  #3676.  Check that the doc explains the
-maxdepth argument (applies to the input "recursiveness").
-
 Add test for urxvt mouse codes.  Also test that mouse coordinates can be
 negative. (see #4326)
 
@@ -656,11 +661,6 @@ punctuation is repeated. (Smylers, 2018 
 
 ml_get error: (Israel Chauca Fuentes, 2018 Oct 17, #3550).
 
-Patch to add more info to OptionSet.  Should mention what triggered the change
-":set", ":setlocal", ":setglobal", "modeline"; and the old global value.
-#4118.  Proposed implementation: 2019 Mar 27.
-Updated 2019 May 25.
-
 Using single wide base character with double wide composing character gives
 drawing errors.  Fill up the base character?  (Dominique, #4328)
 
@@ -711,23 +711,13 @@ Neovim uses "eob:X" in 'fillchars'.
 Sourceforge Vim pages still have content, redirect from empty page.
 Check for PHP errors. (Wayne Davison, 2018 Oct 26)
 
-Patch to support ":tag <tagkind> <tagname>". (emmrk, 2018 May 7, #2871)
-Use something like ":tag {kind}/{tagname}".
-Not ready to include.
-
 Problem with Visual yank when 'linebreak' and 'showbreak' are set.
 Patch with tests, but it's not clear how it is supposed to work. (tommm, 2018
 Nov 17)  Asked about this, Dec 22. Christian will have a look.
 
-Patch for larger icons in installer. (#978)  Still not good.
-
 Patch to fix that using "5gj" starting inside a closed fold does not work on
 screen lines but on text lines. (Julius Hulsmann, #4095)  Lacks a test.
 
-Patch to implement 'diffref' option. (#3535)
-  Easier to use a 'diffmaster' option, is the extra complexity needed?
-  Not ready to include.
-
 home_replace() uses $HOME instead of "homedir". (Cesar Martins, 2018 Aug 9)
 
 When the status line uses term_gettitle(), it does not get updated when the
@@ -755,7 +745,7 @@ Further xdiff changes:
 Difference between two regexp engines: #3373
 
 Patch to add ch_listen() (Yasuhiro Matsumoto, 2018 Nov 26, #3639)
-What is the practical use for this?
+What is the practical use for this?  Need an example.
 
 When the last line wraps, selecting with the mouse below that line only
 includes the first screen line. (2018 Aug 23, #3368)
@@ -779,8 +769,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?
 
-Patch to "fix" 'visualbell'. Add option to set delay?  (#1789)
-
 Script generated by :mksession does not work well if there are windows with
 modified buffers
   change "silent only" into "silent only!"
@@ -870,9 +858,6 @@ deleting autocmds, not when adding them.
 
 Alternative manpager.vim. (Enno, 2018 Jan 5, #2529)
 
-Delete all the specific stuff for the Borland compiler? (#3374)
-Patch in #3377 (Thomas Dziedzic)
-
 With 'foldmethod' "indent" and appending an empty line, what follows isn't
 included in the existing fold.  Deleting the empty line and undo fixes it.
 (Oleg Koshovetc, 2018 Jul 15, #3214)
@@ -1037,6 +1022,7 @@ The ":move" command does not honor close
 
 Patch to fix increment/decrement not working properly when 'virtualedit' is
 set. (Hirohito Higashi, 2016 Aug 1, #923)
+Was this fixed?
 
 Cannot copy modeless selection when cursor is inside it. (lkintact, #2300)
 
@@ -1106,8 +1092,6 @@ Or is this not an actual problem?
 
 Better TeX indent file. (Christian Brabandt, 2017 May 3)
 
-Patch to use a separate code for BS on Windows. (Linwei, #1823)
-
 Use gvimext.dll from the nightly build? (Issue #249)
 
 'synmaxcol' works with bytes instead of screen cells. (Llandon, 2017 May 31,
@@ -1216,13 +1200,6 @@ Implement named arguments for functions:
 Add a command to take a range of lines, filter them and put the output
 somewhere else.  :{range}copy {dest} !cmd
 
-Patch to fix that empty first tab is not in session.
-(Hirohito Higashi, 2016 Nov 25, #1282)
-
-Patch to fix escaping of job arguments. (Yasuhiro Matsumoto, 2016 Oct 5)
-Update Oct 14: https://gist.github.com/mattn/d47e7d3bfe5ade4be86062b565a4bfca
-Update Aug 2017: #1954
-
 The TermResponse event is not triggered when a plugin has set 'eventignore' to
 "all".  Netrw does this. (Gary Johnson, 2017 Jan 24)
 Postpone the event until 'eventignore' is reset.
@@ -1386,11 +1363,6 @@ Undo message is not always properly disp
 3.  Doesn't work properly according to Yukihiro Nakadaira.
 Also see #1635.
 
-Patch for systemlist(), add empty item. (thinca, Sep 30, #1135)
-Add an argument to choose binary or non-binary (like readfile()), when omitted
-use the current behavior.
-Include the test.
-
 When 'keywordprg' starts with ":" the argument is still escaped as a shell
 command argument. (Romain Lafourcade, 2016 Oct 16, #1175)
 
@@ -1412,9 +1384,6 @@ synced.  (Ryan Carney, 2016 Sep 14)
 Syntax highlighting for messages with RFC3339 timestamp (#946)
 Did maintainer reply?
 
-Patch to avoid problem with special characters in file name.
-(Shougo, 2016 Sept 19, #1099)  Not finished?
-
 ml_get errors when reloading file. (Chris Desjardins, 2016 Apr 19)
 Also with latest version.
 
@@ -1450,8 +1419,6 @@ Filetype plugin for awk. (Doug Kearns, 2
 
 Patch to improve map documentation. Issue #799.
 
-Patch for syntax folding optimization. (Shougo, 2016 Sep 6, #1045)
-
 We can use '. to go to the last change in the current buffer, but how about
 the last change in any buffer?  Can we use ', (, is next to .)?
 
@@ -1508,11 +1475,6 @@ Mechelynck)  Perhaps use exists("::tearo
 Use vim.vim syntax highlighting for help file examples, but without ":" in
 'iskeyword' for syntax.
 
-Patch to make "%:h:h" return "." instead of the full path.
-(Coot, 2016 Jan 24, #592)
-
-Remove SPACE_IN_FILENAME ? What could possibly go wrong?
-
 When command names are very long :command output is difficult to read.  Use a
 maximum for the column width?  (#871)
 Patcy by varmanishant, 2016 Jun 18, #876
@@ -2107,11 +2069,6 @@ Vim using lots of memory when joining li
 BT regexp engine: After trying a \@> match and failing, submatches are not
 cleared.  See test64.
 
-Patch to make "z=" work when 'spell' is off.  Does this have nasty side
-effects?  (Christian Brabandt, 2012 Aug 5, Update 2013 Aug 12)
-Would also need to do this for spellbadword() and spellsuggest().
-https://github.com/chrisbra/vim-mq-patches/blob/master/enable_spellchecking
-
 On 64 bit MS-Windows "long" is only 32 bits, but we sometimes need to store a
 64 bits value.  Change all number options to use nropt_T and define it to the
 right type.
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -1,4 +1,4 @@
-*usr_41.txt*	For Vim version 8.2.  Last change: 2020 Jun 01
+*usr_41.txt*	For Vim version 8.2.  Last change: 2020 Jun 13
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -41,10 +41,11 @@ prefer.  And you can use any colon comma
 specific file type.  A complicated macro can be defined by a separate Vim
 script file.  You can think of other uses yourself.
 
-Note: if you are familiar with Python, you can find a comparison between
-Python and Vim script here, with pointers to other documents:
-   https://gist.github.com/yegappan/16d964a37ead0979b05e655aa036cad0
-
+	If you are familiar with Python, you can find a comparison between
+	Python and Vim script here, with pointers to other documents:
+	   https://gist.github.com/yegappan/16d964a37ead0979b05e655aa036cad0
+	And if you are familiar with Javascript:
+	   https://w0rp.com/blog/post/vim-script-for-the-javascripter/
 
 Let's start with a simple example: >
 
@@ -98,6 +99,8 @@ and the value of the variable i.  Since 
 Then there is the ":let i += 1" command.  This does the same thing as
 ":let i = i + 1".  This adds one to the variable i and assigns the new value
 to the same variable.
+Note: this is how it works in legacy Vim script, which is what we discuss in
+this file.  In Vim9 script it's a bit different, see |usr_46.txt|.
 
 The example was given to explain the commands, but would you really want to
 make such a loop, it can be written much more compact: >
--- a/runtime/doc/usr_45.txt
+++ b/runtime/doc/usr_45.txt
@@ -1,8 +1,8 @@
-*usr_45.txt*	For Vim version 8.2.  Last change: 2008 Nov 15
+*usr_45.txt*	For Vim version 8.2.  Last change: 2020 Jun 11
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
-			     Select your language
+			Select your language (locale)
 
 
 The messages in Vim can be given in several languages.  This chapter explains
@@ -15,7 +15,7 @@ in various languages is explained.
 |45.4|	Editing files with a different encoding
 |45.5|	Entering language text
 
-     Next chapter: |usr_90.txt|  Installing Vim
+     Next chapter: |usr_46.txt|  Write plugins using Vim9 script
  Previous chapter: |usr_44.txt|  Your own syntax highlighted
 Table of contents: |usr_toc.txt|
 
@@ -408,6 +408,6 @@ Don't type the spaces.  See |i_CTRL-V_di
 
 ==============================================================================
 
-Next chapter: |usr_90.txt|  Installing Vim
+Next chapter: |usr_46.txt|  Write plugins using Vim9 script
 
 Copyright: see |manual-copyright|  vim:tw=78:ts=8:noet:ft=help:norl:
new file mode 100644
--- /dev/null
+++ b/runtime/doc/usr_46.txt
@@ -0,0 +1,192 @@
+*usr_46.txt*	For Vim version 8.2.  Last change: 2020 Jun 14
+
+		     VIM USER MANUAL - by Bram Moolenaar
+
+		       Write plugins using Vim9 script
+
+
+The Vim9 script language is used for writing plugins, especially larger ones
+that use multiple files.  This chapter explains how to split up a plugin into
+modules, import and export items and keep the rest local.
+
+|46.1|	Introduction
+|46.2|	Variable declarations
+|46.3|	Functions and types
+|46.?|	Using a Vim9 script from legacy script
+
+     Next chapter: |usr_90.txt|  Installing Vim
+ Previous chapter: |usr_45.txt|  Select your language (locale)
+Table of contents: |usr_toc.txt|
+
+==============================================================================
+*46.1*	Introduction				*vim9-script-intro*
+
+Vim9 script was designed to make it easier to write large Vim scripts.  It
+looks more like other script languages, especially Typescript.  Also,
+functions are compiled into instructions that can be executed quickly.  This
+makes Vim9 script a lot faster, up to a 100 times.
+
+The basic idea is that a script file has items that are private, only used
+inside the script file, and items that are exported, used outside of the
+script file.  The exported items can then be used by scripts that import them.
+That makes very clear what is defined where.
+
+Let's start with an example, a script that exports one function and has one
+private function: >
+
+	vim9script  " This indicates a Vim9 script file, 
+
+	export def GetMessage(): string
+	   let result = ''
+	   ...
+	   result = GetPart(count)
+	   ...
+	   return result
+	enddef
+
+	def GetPart(nr: number): string
+	  if nr == 4
+	     return 'yes'
+	  else
+	     return 'no'
+	  endif
+	enddef
+
+The `vim9script` command must be the very first command in the file.  Without
+it Vim will assume legacy script syntax.
+
+The `export def GetMessage(): string` line starts with `export`, meaning that
+this function can be imported and called by other scripts. The line
+`def GetPart(...` does not start with `export`, this is a script-local
+function, it can only be used inside this script file.
+
+In the `export def GetMessage(): string` line you will notice the colon and
+the return type.  Vim9 functions, defined with `def`, require specifying the
+type of arguments and the return type.  That way Vim can compile the code
+efficiently.  The GetPart function defines an argument "nr" of type "number".
+
+Notice that the assignment `result = GetPart(count)` does not use the `let`
+command.  That is explained in the next section.
+
+==============================================================================
+*46.2*	Variable declarations				*vim9-declarations*
+
+In Vim9 script variables are declared once with a `:let` or `:const` command.
+Assigning a value is done without `:let` and it is not possible to `:unlet`
+the variable.
+
+In most cases you will want to declare the variable and initialize it at the
+same time: >
+	let myText = 'some text'
+	...
+	myText = 'other text'
+
+The type of the variable will be inferred from the expression.  In this case
+it is a string.  If you initialize with a number, then the type is number: >
+	let myNumber = 1234
+	...
+	myNumber = 0
+
+If you try to assign a string to this variable, you will get an error: >
+	let myNumber = 'this fails!'
+
+In the rare case you want a variable that can take values of any type, you
+have to specify the type: >
+	let myVar: any = 1234
+	myVar = 'text also works'
+
+You can also declare a variable without assigning a value.  In that case Vim
+will initialize it to zero or empty: >
+	let word: string
+	if condition
+	  word = 'yes'
+	else
+	  word = 'no'
+	endif
+
+Although it's shorter to do: >
+	let word = condition ? 'yes' : 'no'
+
+==============================================================================
+*46.3*	Functions and types
+
+Legacy Vim script does have type checking, but this happens at runtime, when
+the code is executed.  And it's permissive, often a computation gives an
+unexpected value instead of reporting an error .  Thus you can define a
+function and think it's fine, but see a problem only later when it is called: >
+	let s:collected = ''
+	func ExtendAndReturn(add)
+	   let s:collected += a:add
+	   return s:collected
+	endfunc
+
+Can you spot the error?  Try this: >
+	echo ExtendAndReturn('text')
+And you'll see zero.  Why?  Because in legacy Vim script "+=" will convert the
+arguments to numbers, and any string without a number results in zero!
+
+With `:def` the type checking happens when compiling the function.  For that
+you need to specify the argument types and the return type.  Also notice that
+the argument is used without the "a:" prefix: >
+	let s:collected = ''
+	def ExtendAndReturn(add: string): string
+	   s:collected += add
+	   return s:collected
+	enddef
+	defcompile
+
+Here we use `:defcompile` to do the compilation right away, without it the
+compilation would happen when the function is called.  Vim will tell you what
+you did wrong: >
+	E1013: type mismatch, expected number but got string
+
+Vim9 script is strict, it uses the "+" operator only for numbers and floats.
+For string concatenation ".." must be used.  This avoids mistakes and avoids
+the automatic conversion that gave a suprising result above.  So you change
+the first line of the function to: >
+	   s:collected ..= add
+And now it works.
+
+If the function does not return anything, just leave out the return type: >
+	def ReportResult(result: string)
+	   echo 'The result is: ' .. result
+	enddef
+
+This is also checked, if you try to return a value you'll get an error.
+
+In case you don't care about types or have a function that does work with
+multiple types, you can use the "any" type: >
+	def Store(key: string, value: any)
+	  resultDict[key] = value
+	enddef
+
+==============================================================================
+*46.?*	Using a Vim9 script from legacy script		*source-vim9-script*
+
+In some cases you have a legacy Vim script where you want to use items from a
+Vim9 script.  For example in your .vimrc you want to initialize a plugin.  The
+best way to do this is to use `:import`.  For example: >
+
+	import Init as NiceInit from 'myNicePlugin.vim'
+	call NiceInit('today')
+
+This finds the exported function "Init" in the Vim9 script file and makes it
+available as script-local item "NiceInit". `:import` always uses the script
+namespace, even when "s:" is not given.  If "myNicePlugin.vim" was already
+sourced it is not sourced again.
+
+Besides avoiding putting any items in the global namespace (where name clashes
+can cause unexpected errors), this also means the script is sourced only once,
+no matter how many times items from it are imported.
+
+In some cases, e.g. for testing, you may just want to source the Vim9 script.
+That is OK, but then only global items will be available.  The Vim9 script
+will have to make sure to use a unique name for these global items. Example: >
+	source ~/.vim/extra/myNicePlugin.vim
+	call g:NicePluginTest()
+
+==============================================================================
+
+Next chapter: |usr_90.txt|  Installing Vim
+
+Copyright: see |manual-copyright|  vim:tw=78:ts=8:noet:ft=help:norl:
--- a/runtime/doc/usr_90.txt
+++ b/runtime/doc/usr_90.txt
@@ -1,4 +1,4 @@
-*usr_90.txt*	For Vim version 8.2.  Last change: 2008 Sep 10
+*usr_90.txt*	For Vim version 8.2.  Last change: 2020 Jun 11
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -15,7 +15,7 @@ upgrading to a new version is done.
 |90.4|	Common installation issues
 |90.5|	Uninstalling Vim
 
- Previous chapter: |usr_45.txt|  Select your language
+ Previous chapter: |usr_46.txt|  Write plugins using Vim9 script
 Table of contents: |usr_toc.txt|
 
 ==============================================================================
--- a/runtime/doc/usr_toc.txt
+++ b/runtime/doc/usr_toc.txt
@@ -1,4 +1,4 @@
-*usr_toc.txt*	For Vim version 8.2.  Last change: 2019 May 24
+*usr_toc.txt*	For Vim version 8.2.  Last change: 2020 Jun 11
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -42,7 +42,8 @@ Tuning Vim
 |usr_42.txt|  Add new menus
 |usr_43.txt|  Using filetypes
 |usr_44.txt|  Your own syntax highlighted
-|usr_45.txt|  Select your language
+|usr_45.txt|  Select your language (locale)
+|usr_46.txt|  Write plugins using Vim9 script
 
 Making Vim Run
 |usr_90.txt|  Installing Vim
--- a/runtime/doc/version8.txt
+++ b/runtime/doc/version8.txt
@@ -1,4 +1,4 @@
-*version8.txt*  For Vim version 8.2.  Last change: 2020 Feb 04
+*version8.txt*  For Vim version 8.2.  Last change: 2020 Jun 08
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -30777,7 +30777,7 @@ Solution:   Use a double quoted string. 
 Files:	    src/ex_docmd.c, src/testdir/test_mksession.vim
 
 Patch 8.1.0804
-Problem:    Crash when setting v:errmsg to empty list. (Jaon Franklin)
+Problem:    Crash when setting v:errmsg to empty list. (Jason Franklin)
 Solution:   Separate getting value and assigning result.
 Files:	    src/eval.c, src/testdir/test_eval_stuff.vim
 
@@ -33684,8 +33684,8 @@ Solution:   Also change the textprop imp
 Files:	    src/textprop.c
 
 Patch 8.1.1279
-Problem:    Cannot set 'spellang' to "sr@latin". (Bojan Stipic)
-Solution:   Allow using '@' in 'spellang'. (closes #4342)
+Problem:    Cannot set 'spelllang' to "sr@latin". (Bojan Stipic)
+Solution:   Allow using '@' in 'spelllang'. (closes #4342)
 Files:	    src/option.c, src/testdir/gen_opt_test.vim
 
 Patch 8.1.1280
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -1,4 +1,4 @@
-*vim9.txt*	For Vim version 8.2.  Last change: 2020 May 25
+*vim9.txt*	For Vim version 8.2.  Last change: 2020 Jun 14
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -106,7 +106,7 @@ list type, similar to Typescript.  For e
 
 
 Functions and variables are script-local by default ~
-
+							*vim9-scopes*
 When using `:function` or `:def` to specify a new function at the script level
 in a Vim9 script, the function is local to the script, as if "s:" was
 prefixed.  Using the "s:" prefix is optional.
@@ -136,7 +136,7 @@ and cannot be deleted or replaced.
 
 
 Variable declarations with :let and :const ~
-
+							*vim9-declaration*
 Local variables need to be declared with `:let`.  Local constants need to be
 declared with `:const`.  We refer to both as "variables".
 
@@ -388,13 +388,17 @@ THIS IS STILL UNDER DEVELOPMENT - ANYTHI
 			The second and third form are optional arguments.
 			When the caller omits an argument the {value} is used.
 
+			The function will be compiled into instructions when
+			called, or when `:defcompile` is used.  Syntax and
+			type errors will be produced at that time.
+
 			NOTE: It is possible to nest `:def` inside another
 			`:def`, but it is not possible to nest `:def` inside
 			`:function`, for backwards compatibility.
 
 			[!] is used as with `:function`.  Note that in Vim9
 			script script-local functions cannot be deleted or
-			redefined.
+			redefined later in the same script.
 
 							*:enddef*
 :enddef			End of a function defined with `:def`.
@@ -402,8 +406,9 @@ THIS IS STILL UNDER DEVELOPMENT - ANYTHI
 
 If the script the function is defined in is Vim9 script, then script-local
 variables can be accessed without the "s:" prefix.  They must be defined
-before the function.  If the script the function is defined in is legacy
-script, then script-local variables must be accessed with the "s:" prefix.
+before the function is compiled.  If the script the function is defined in is
+legacy script, then script-local variables must be accessed with the "s:"
+prefix.
 
 						*:defc* *:defcompile*
 :defc[ompile]		Compile functions defined in the current script that
@@ -555,6 +560,9 @@ be exported.
 Alternatively, an export statement can be used to export several already
 defined (otherwise script-local) items: >
 	export {EXPORTED_CONST, someValue, MyFunc, MyClass}
+<
+							*E1042*
+`:export` can only be used in Vim9 script, at the script level.
 
 
 Import ~
@@ -629,8 +637,8 @@ 3. Other functionality, possibly shared 
 
 Import in legacy Vim script ~
 
-If an `import` statement is used in legacy Vim script, for identifier the
-script-local "s:" namespace will be used, even when "s:" is not specified.
+If an `import` statement is used in legacy Vim script, the script-local "s:"
+namespace will be used for the imported item, even when "s:" is not specified.
 
 
 ==============================================================================
@@ -673,12 +681,37 @@ widely used.  The type names are what wa
 additions such as "void" and "bool".
 
 
-JavaScript/TypeScript syntax and semantics ~
+Compiling functions early ~
+
+Functions are compiled when called or when `:defcompile` is used.  Why not
+compile them early, so that syntax and type errors are reported early?
+
+The functions can't be compiled right away when encountered, because there may
+be forward references to functions defined later.  Consider defining functions
+A, B and C, where A calls B, B calls C, and C calls A again.  It's impossible
+to reorder the functions to avoid forward references.
+
+An alternative would be to first scan through the file to locate items and
+figure out their type, so that forward refeferences are found, and only then
+execute the script and compile the functions.  This means the script has to be
+parsed twice, which is slower, and some conditions at the script level, such
+as checking if a feature is supported, are hard to use.  An attempt was made
+to see if it works, but it turned out to be impossible to make work nicely.
+
+It would be possible to compile all the functions at the end of the script.
+The drawback is that if a function never gets called, the overhead of
+compiling it counts anyway.  Since startup speed is very important, in most
+cases it's better to do it later and accept that syntax and type errors are
+only reported then.  In case these errors should be found early, e.g. when
+testing, the `:defcompile` command will help out.
+
+
+TypeScript syntax and semantics ~
 
 Script writers have complained that the Vim script syntax is unexpectedly
 different from what they are used to.  To reduce this complaint popular
-languages will be used as an example.  At the same time, we do not want to
-abandon the well-known parts of legacy Vim script.
+languages are used as an example.  At the same time, we do not want to abandon
+the well-known parts of legacy Vim script.
 
 Since Vim already uses `:let` and `:const` and optional type checking is
 desirable, the JavaScript/TypeScript syntax fits best for variable
@@ -695,7 +728,7 @@ are doing.  Some details are unexpected 
 	...
 	return result || 0	" returns 1
 
-Vim9 script works like JavaScript, keep the value: >
+Vim9 script works like JavaScript/Typescript, keep the value: >
 	let result = 44
 	...
 	return result || 0	" returns 44
@@ -727,6 +760,16 @@ that works like one would expect:
   avoided.
 - The Vim-specific use of "s:" to make things script-local can be dropped.
 
+When sourcing a Vim9 script from a legacy script, only the items defined
+globally can be used, not the exported items.  Alternatives considered:
+- All the exported items become available as script-local items.  This makes
+  it uncontrollable what items get defined.
+- Use the exported items and make them global.  Disadvantage is that it's then
+  not possible to avoid name clashes in the global namespace.
+- Completely disallow sourcing a Vim9 script, require using `:import`.  That
+  makes it difficult to use scripts for testing, or sourcing them from the
+  command line to try them out.
+
 
 Classes ~
 
--- a/runtime/doc/windows.txt
+++ b/runtime/doc/windows.txt
@@ -137,6 +137,12 @@ invert the status line.  Now it should b
 status line is inverted anyway; you will only see this problem on terminals
 that have termcap codes for italics.
 
+							*filler-lines*
+The lines after the last buffer line in a window are called filler lines.
+These lines start with a tilde (~) character. By default, these are
+highlighted as NonText (|hl-NonText|). The EndOfBuffer highlight group
+(|hl-EndOfBuffer|) can be used to change the highlighting of filler lines.
+
 ==============================================================================
 3. Opening and closing a window				*opening-window* *E36*
 
--- a/runtime/menu.vim
+++ b/runtime/menu.vim
@@ -453,12 +453,12 @@ if has("spell")
   an 40.335.260 &Tools.&Spelling.Set\ Language\ to\ "en_us"	:set spl=en_us spell<CR>
   an <silent> 40.335.270 &Tools.&Spelling.&Find\ More\ Languages	:call <SID>SpellLang()<CR>
 
-  let s:undo_spellang = ['aun &Tools.&Spelling.&Find\ More\ Languages']
+  let s:undo_spelllang = ['aun &Tools.&Spelling.&Find\ More\ Languages']
   func s:SpellLang()
-    for cmd in s:undo_spellang
+    for cmd in s:undo_spelllang
       exe "silent! " . cmd
     endfor
-    let s:undo_spellang = []
+    let s:undo_spelllang = []
 
     if &enc == "iso-8859-15"
       let enc = "latin1"
@@ -481,7 +481,7 @@ if has("spell")
 	  let found += 1
 	  let menuname = '&Tools.&Spelling.' . escape(g:menutrans_set_lang_to, "\\. \t|") . '\ "' . nm . '"'
 	  exe 'an 40.335.' . n . ' ' . menuname . ' :set spl=' . nm . ' spell<CR>'
-	  let s:undo_spellang += ['aun ' . menuname]
+	  let s:undo_spelllang += ['aun ' . menuname]
 	endif
 	let n += 10
       endfor
--- a/runtime/optwin.vim
+++ b/runtime/optwin.vim
@@ -1,7 +1,7 @@
 " These commands create the option window.
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2020 Jun 02
+" Last Change:	2020 Jun 10
 
 " If there already is an option window, jump to that one.
 let buf = bufnr('option-window')
@@ -447,6 +447,9 @@ if has("syntax")
   call append("$", "spellcapcheck\tpattern to locate the end of a sentence")
   call append("$", "\t(local to buffer)")
   call <SID>OptionL("spc")
+  call append("$", "spelloptions\tflags to change how spell checking works")
+  call append("$", "\t(local to buffer)")
+  call <SID>OptionL("spo")
   call append("$", "spellsuggest\tmethods used to suggest corrections")
   call <SID>OptionG("sps", &sps)
   call append("$", "mkspellmem\tamount of memory used by :mkspell before compressing")
--- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
+++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
@@ -2,7 +2,7 @@
 "
 " Author: Bram Moolenaar
 " Copyright: Vim license applies, see ":help license"
-" Last Change: 2020 May 22
+" Last Change: 2020 Jun 12
 "
 " WORK IN PROGRESS - Only the basics work
 " Note: On MS-Windows you need a recent version of gdb.  The one included with
@@ -710,7 +710,7 @@ func s:DeleteCommands()
   delcommand Source
   delcommand Winbar
 
-  if exists('s:k_map_saved')
+  if exists('s:k_map_saved') && !empty(s:k_map_saved)
     call mapset('n', 0, s:k_map_saved)
     unlet s:k_map_saved
   endif
--- a/runtime/syntax/desktop.vim
+++ b/runtime/syntax/desktop.vim
@@ -1,107 +1,267 @@
 " Vim syntax file
-" Language:	.desktop, .directory files
-"		according to freedesktop.org specification 0.9.4
-" http://pdx.freedesktop.org/Standards/desktop-entry-spec/desktop-entry-spec-0.9.4.html
-" Maintainer:	Mikolaj Machowski ( mikmach AT wp DOT pl )
-" Last Change:	2016 Apr 02
-" 		(added "Keywords")
-" Version Info: desktop.vim 0.9.4-1.2
+" Language: XDG desktop entry
+" Filenames: *.desktop, *.directory
+" Maintainer: Eisuke Kawashima ( e.kawaschima+vim AT gmail.com )
+" Previous Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
+" Last Change: 2020-06-11
+" Version Info: desktop.vim 1.5
+" References:
+" - https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.5.html (2020-04-27)
+" - https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-0.11.html (2006-02-07)
 
 " quit when a syntax file was already loaded
 if exists("b:current_syntax")
-    finish
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+syn case match
+
+" Variable {{{1
+" This syntax file can be used to all *nix configuration files similar to dos
+" ini format (eg. .xawtv, .radio, kde rc files) - this is default mode.
+" By default strict following of freedesktop.org standard is enforced.
+" To highlight nonstandard extensions that does not begin with X-, set
+"   let g:desktop_enable_nonstd = v:true
+" Note that this may cause wrong highlight.
+" To highlight KDE-reserved features, set
+"   let g:desktop_enable_kde = v:true
+" g:desktop_enable_kde follows g:desktop_enable_nonstd if not supplied
+
+if exists("g:desktop_enable_nonstd") && g:desktop_enable_nonstd
+  let s:desktop_enable_nonstd = v:true
+else
+  let s:desktop_enable_nonstd = v:false
+endif
+
+if exists("g:desktop_enable_kde") && g:desktop_enable_kde || s:desktop_enable_nonstd
+  let s:desktop_enable_kde = v:true
+else
+  let s:desktop_enable_kde = v:false
 endif
 
-" This syntax file can be used to all *nix configuration files similar to dos
-" ini format (eg. .xawtv, .radio, kde rc files) - this is default mode. But
-" you can also enforce strict following of freedesktop.org standard for
-" .desktop and .directory files . Set (eg. in vimrc)
-" let enforce_freedesktop_standard = 1
-" and nonstandard extensions not following X- notation will not be highlighted.
-if exists("enforce_freedesktop_standard")
-	let b:enforce_freedesktop_standard = 1
-else
-	let b:enforce_freedesktop_standard = 0
+" Comment {{{1
+syn match dtComment /^#.*$/
+
+" Error {{{1
+syn match dtError /\%(^\s.*\|\s\+$\)/
+
+" Group Header {{{1
+" ASCII printable characters except for brackets [ (0x5B) and ] (0x5D)
+syn match dtGroup /^\[[\x20-\x5A\x5C\x5E-\x7E]\+\]$/
+
+" Entries {{{1
+syn match dtDelim /=/ contained
+" lang_territory.codeset@modifier
+syn match dtLocaleSuffix
+      \ /\[\%(C\|POSIX\|[a-z]\{2,4}\%(_[A-Z0-9]\{2,3}\)\?\)\%(\.[A-Za-z0-9_-]\+\)\?\%(@[A-Za-z]\+\)\?\]\ze\s*=/
+      \ contained
+
+" Boolean Value {{{2
+syn match   dtBoolean
+      \ /^\%(DBusActivatable\|Hidden\|NoDisplay\|PrefersNonDefaultGPU\|StartupNotify\|Terminal\)\s*=\s*\%(true\|false\)/
+      \ contains=dtBooleanKey,dtDelim,dtBooleanValue transparent
+syn keyword dtBooleanKey
+      \ DBusActivatable Hidden NoDisplay PrefersNonDefaultGPU StartupNotify Terminal
+      \ contained nextgroup=dtDelim
+
+if s:desktop_enable_kde
+  syn match   dtBoolean
+        \ /^ReadOnly\s*=\s*\%(true\|false\)/
+        \ contains=dtBooleanKey,dtDelim,dtBooleanValue transparent
+  syn keyword dtBooleanKey
+        \ ReadOnly
+        \ contained nextgroup=dtDelim
+endif
+syn keyword dtBooleanValue true false contained
+
+" Numeric Value {{{2
+" icon theme
+syn match   dtNumeric /^\%(MaxSize\|MinSize\|Size\|Threshold\)\s*=\s*\d\+/ contains=dtNumericKey,dtDelim,dtNumericDecimal
+syn keyword dtNumericKey
+      \ MaxSize MinSize Size Threshold
+      \ contained nextgroup=dtDelim
+
+if s:desktop_enable_kde
+  syn match   dtNumeric /^InitialPreference\s*=\s*\d\+/ contains=dtNumericKey,dtDelim,dtNumericDecimal
+  syn keyword dtNumericKey
+        \ InitialPreference
+        \ contained nextgroup=dtDelim
 endif
 
-" case on
-syn case match
+syn match   dtNumericDecimal /\<\d\+$/ contained
+
+" String Value {{{2
+syn match   dtString
+      \ /^\%(Actions\|Implements\|MimeType\|NotShowIn\|OnlyShowIn\|Path\|StartupWMClass\|URL\)\s*=.*\S/
+      \ contains=dtStringKey,dtDelim transparent
+syn keyword dtStringKey
+      \ Actions Implements MimeType NotShowIn OnlyShowIn Path StartupWMClass URL Version
+      \ contained nextgroup=dtDelim
 
-" General
-if b:enforce_freedesktop_standard == 0
-	syn match  dtNotStLabel	"^.\{-}=\@=" nextgroup=dtDelim
+" icon theme
+syn match   dtString
+      \ /^\%(Context\|Directories\|Example\|Inherits\)\s*=.*\S/
+      \ contains=dtStringKey,dtDelim transparent
+syn keyword dtStringKey
+      \ Context Directories Example Inherits
+      \ contained nextgroup=dtDelim
+
+if s:desktop_enable_kde
+  syn match   dtString
+        \ /^\%(Dev\|DocPath\|FSType\|MountPoint\|ServiceTypes\)\s*=.*\S/
+        \ contains=dtStringKey,dtDelim transparent
+  syn keyword dtStringKey
+        \ Dev DocPath FSType MountPoint ServiceTypes
+        \ contained nextgroup=dtDelim
 endif
 
-syn match  dtGroup	/^\s*\[.*\]/
-syn match  dtComment	/^\s*#.*$/
-syn match  dtDelim	/=/ contained
-
-" Locale
-syn match   dtLocale /^\s*\<\(Name\|GenericName\|Comment\|SwallowTitle\|Icon\|UnmountIcon\)\>.*/ contains=dtLocaleKey,dtLocaleName,dtDelim transparent
-syn keyword dtLocaleKey Name GenericName Comment SwallowTitle Icon UnmountIcon nextgroup=dtLocaleName containedin=dtLocale
-syn match   dtLocaleName /\(\[.\{-}\]\s*=\@=\|\)/ nextgroup=dtDelim containedin=dtLocale contained
+" Categories {{{3
+" https://specifications.freedesktop.org/menu-spec/menu-spec-1.0.html#category-registry
+syn match   dtCategories /^Categories\s*=.\+\S/ contains=dtCategoriesKey,dtDelim,dtCategoriesValue transparent
+syn keyword dtCategoriesKey
+      \ Categories
+      \ contained nextgroup=dtDelim
 
-" Numeric
-syn match   dtNumeric /^\s*\<Version\>/ contains=dtNumericKey,dtDelim
-syn keyword dtNumericKey Version nextgroup=dtDelim containedin=dtNumeric contained
-
-" Boolean
-syn match   dtBoolean /^\s*\<\(StartupNotify\|ReadOnly\|Terminal\|Hidden\|NoDisplay\)\>.*/ contains=dtBooleanKey,dtDelim,dtBooleanValue transparent
-syn keyword dtBooleanKey StartupNotify ReadOnly Terminal Hidden NoDisplay nextgroup=dtDelim containedin=dtBoolean contained
-syn keyword dtBooleanValue true false containedin=dtBoolean contained
+" Main Categories
+syn keyword dtCategoriesValue
+      \ Audio AudioVideo Development Education Game Graphics Network Office
+      \ Settings System Utility Video
+      \ contained
 
-" String
-syn match   dtString /^\s*\<\(Encoding\|Icon\|Path\|Actions\|FSType\|MountPoint\|UnmountIcon\|URL\|Keywords\|Categories\|OnlyShowIn\|NotShowIn\|StartupWMClass\|FilePattern\|MimeType\)\>.*/ contains=dtStringKey,dtDelim transparent
-syn keyword dtStringKey Type Encoding TryExec Exec Path Actions FSType MountPoint URL Keywords Categories OnlyShowIn NotShowIn StartupWMClass FilePattern MimeType nextgroup=dtDelim containedin=dtString contained
-
-" Exec
-syn match   dtExec /^\s*\<\(Exec\|TryExec\|SwallowExec\)\>.*/ contains=dtExecKey,dtDelim,dtExecParam transparent
-syn keyword dtExecKey Exec TryExec SwallowExec nextgroup=dtDelim containedin=dtExec contained
-syn match   dtExecParam  /%[fFuUnNdDickv]/ containedin=dtExec contained
+" Additional Categories
+syn keyword dtCategoriesValue
+      \ BoardGame Chat Clock Geoscience Presentation 2DGraphics 3DGraphics
+      \ Accessibility ActionGame AdventureGame Amusement ArcadeGame Archiving
+      \ Art ArtificialIntelligence Astronomy AudioVideoEditing Biology
+      \ BlocksGame BoardGame Building Calculator Calendar CardGame Chart Chat
+      \ Chemistry Clock Compression ComputerScience ConsoleOnly Construction
+      \ ContactManagement Core DataVisualization Database Debugger
+      \ DesktopSettings Dialup Dictionary DiscBurning Documentation Economy
+      \ Electricity Electronics Email Emulator Engineering FileManager
+      \ FileTools FileTransfer Filesystem Finance FlowChart GNOME GTK
+      \ GUIDesigner Geography Geology Geoscience HamRadio HardwareSettings
+      \ History IDE IRCClient ImageProcessing InstantMessaging Java KDE
+      \ KidsGame Languages Literature LogicGame Math MedicalSoftware Midi
+      \ Mixer Monitor Motif Music News NumericalAnalysis OCR P2P PDA
+      \ PackageManager ParallelComputing Photography Physics Player
+      \ Presentation Printing Profiling ProjectManagement Publishing Qt
+      \ RasterGraphics Recorder RemoteAccess RevisionControl Robotics
+      \ RolePlaying Scanning Science Security Sequencer Simulation Sports
+      \ SportsGame Spreadsheet StrategyGame TV Telephony TelephonyTools
+      \ TerminalEmulator TextEditor TextTools Translation Tuner VectorGraphics
+      \ VideoConference Viewer WebBrowser WebDevelopment WordProcessor
+      \ contained
 
-" Type
-syn match   dtType /^\s*\<Type\>.*/ contains=dtTypeKey,dtDelim,dtTypeValue transparent
-syn keyword dtTypeKey Type nextgroup=dtDelim containedin=dtType contained
-syn keyword dtTypeValue Application Link FSDevice Directory containedin=dtType contained
+" Reserved Category
+syn keyword dtCategoriesValue
+      \ Applet Screensaver Shell TrayIcon
+      \ contained
+
+" Exec/TryExec {{{3
+syn match   dtExec /^\%(Exec\|TryExec\)\s*=.\+\S/ contains=dtExecKey,dtDelim,dtExecParam transparent
+syn keyword dtExecKey
+      \ Exec TryExec
+      \ contained nextgroup=dtDelim
+" code for file(s), URL(s), etc
+syn match   dtExecParam  /\s\zs%[fFuUick]\ze\%(\W\|$\)/ contained
 
-" X-Addition
-syn match   dtXAdd    /^\s*X-.*/ contains=dtXAddKey,dtDelim transparent
-syn match   dtXAddKey /^\s*X-.\{-}\s*=\@=/ nextgroup=dtDelim containedin=dtXAdd contains=dtXLocale contained
+" Type {{{3
+syn match   dtType /^Type\s*=\s*\S\+/ contains=dtTypeKey,dtDelim,dtTypeValue transparent
+syn keyword dtTypeKey
+      \ Type
+      \ contained nextgroup=dtDelim
+syn keyword dtTypeValue
+      \ Application Directory Link
+      \ contained
 
-" Locale for X-Addition
-syn match   dtXLocale /\[.\{-}\]\s*=\@=/ containedin=dtXAddKey contained
-
-" Locale for all
-syn match   dtALocale /\[.\{-}\]\s*=\@=/ containedin=ALL
+if s:desktop_enable_kde
+  syn keyword dtTypeValue
+        \ FSDevice Service ServiceType
+        \ contained
+endif
 
 
-" Define the default highlighting.
-" Only when an item doesn't have highlighting yet
+" Version {{{3
+syn match   dtVersion /^Version\s*=\s*\S\+/ contains=dtVersionKey,dtDelim,dtVersionValue transparent
+syn keyword dtVersionKey
+      \ Version
+      \ contained nextgroup=dtDelim
+syn match   dtVersionValue /[0-9]\+\%(\.[0-9]\+\)\{1,2}$/ contained
 
-hi def link dtGroup		 Special
-hi def link dtComment	 Comment
-hi def link dtDelim		 String
+" Localestring Value {{{2
+syn match   dtLocalestring
+      \ /^\%(Comment\|GenericName\|Keywords\|Name\)\%(\[.\{-}\]\)\?\s*=.*\S/
+      \ contains=dtLocalestringKey,dtLocaleSuffix,dtDelim transparent
+syn keyword dtLocalestringKey
+      \ Comment GenericName Keywords Name
+      \ contained nextgroup=dtLocaleSuffix,dtDelim skipwhite
 
-hi def link dtLocaleKey	 Type
-hi def link dtLocaleName	 Identifier
-hi def link dtXLocale	 Identifier
-hi def link dtALocale	 Identifier
+" Iconstring Value {{{2
+syn match   dtIconstring
+      \ /^Icon\s*=.*\S/
+      \ contains=dtIconstringKey,dtDelim transparent
+syn keyword dtIconstringKey
+      \ Icon
+      \ contained nextgroup=dtDelim skipwhite
 
-hi def link dtNumericKey	 Type
+if s:desktop_enable_kde
+  syn match   dtIconstring
+        \ /^UnmountIcon\>\%(\[.\{-}\]\)\?\s*=.*\S/
+        \ contains=dtIconstringKey,dtLocaleSuffix,dtDelim transparent
+  syn keyword dtIconstringKey
+        \ UnmountIcon
+        \ contained nextgroup=dtLocaleSuffix,dtDelim skipwhite
+endif
+
+" X-Extension {{{2
+syn match   dtXExtension    /^X-[0-9A-Za-z-]*\%(\[.\{-}\]\)\?\s*=.*\S/
+      \ contains=dtXExtensionKey,dtLocaleSuffix,dtDelim transparent
+syn match   dtXExtensionKey /^X-[0-9A-Za-z-]*/ contained nextgroup=dtLocaleSuffix,dtDelim
 
-hi def link dtBooleanKey	 Type
-hi def link dtBooleanValue	 Constant
+" non standard {{{2
+if s:desktop_enable_nonstd
+  syn match dtNonStdLabel    /^[0-9A-Za-z-]\+\%(\[.\{-}\]\)\?\s*=.*\S/
+        \ contains=dtNonStdLabelKey,dtLocaleSuffix,dtDelim transparent
+  syn match dtNonStdLabelKey /^[0-9A-Za-z-]\+/ contained nextgroup=dtLocaleSuffix,dtDelim
+endif
+
+" Highlight {{{1
+hi def link dtComment		Comment
+hi def link dtError		Error
 
-hi def link dtStringKey	 Type
+hi def link dtGroup		Special
+
+hi def link dtDelim		Delimiter
+hi def link dtLocaleSuffix	Identifier
+
+hi def link dtBooleanKey	Type
+hi def link dtBooleanValue	Boolean
+
+hi def link dtNumericKey	Type
+hi def link dtNumericDecimal	Number
 
-hi def link dtExecKey	 Type
-hi def link dtExecParam	 Special
-hi def link dtTypeKey	 Type
-hi def link dtTypeValue	 Constant
-hi def link dtNotStLabel	 Type
-hi def link dtXAddKey	 Type
+hi def link dtStringKey		Type
+hi def link dtCategoriesKey	Type
+hi def link dtCategoriesValue	Constant
+hi def link dtExecKey		Type
+hi def link dtExecParam		Special
+hi def link dtTypeKey		Type
+hi def link dtTypeValue		Constant
+hi def link dtVersionKey	Type
+hi def link dtVersionValue	Constant
+
+hi def link dtLocalestringKey	Type
 
+hi def link dtIconStringKey	Type
 
+hi def link dtXExtensionKey	Type
+
+hi def link dtNonStdLabelKey	Type
+
+" Clean Up {{{1
 let b:current_syntax = "desktop"
+let &cpo = s:cpo_save
 
-" vim:ts=8
+" vim:ts=8:sw=2:fdm=marker
--- a/runtime/syntax/objc.vim
+++ b/runtime/syntax/objc.vim
@@ -1,7 +1,8 @@
 " Vim syntax file
 " Language:     Objective-C
 " Maintainer:   Kazunobu Kuriyama <kazunobu.kuriyama@gmail.com>
-" Last Change:  2015 Dec 14
+" Last Change:  2020 Jun 07
+" Last Change By Maintainer:   2015 Dec 14
 
 """ Preparation for loading ObjC stuff
 if exists("b:current_syntax")
@@ -24,7 +25,7 @@ syn keyword objcUsefulTerm nil Nil NO YE
 
 " Preprocessor Directives
 syn region objcImported display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
-syn match objcImported display contained "\(<\h[-a-zA-Z0-9_/]*\.h>\|<[a-z0-9]\+>\)"
+syn match objcImported display contained "\(<\h[-+a-zA-Z0-9_/]*\.h>\|<[a-z0-9]\+>\)"
 syn match objcImport display "^\s*\(%:\|#\)\s*import\>\s*["<]" contains=objcImported
 
 " ObjC Compiler Directives
--- a/runtime/syntax/tex.vim
+++ b/runtime/syntax/tex.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	TeX
 " Maintainer:	Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
-" Last Change:	May 19, 2020
-" Version:	117
+" Last Change:	Jun 07, 2020
+" Version:	118
 " URL:		http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX
 "
 " Notes: {{{1
@@ -755,6 +755,8 @@ if has("conceal") && &enc == 'utf-8'
     \ ['lceil'		, '⌈'],
     \ ['ldots'		, '…'],
     \ ['le'		, '≤'],
+    \ ['left|'		, '|'],
+    \ ['left\|'		, '‖'],
     \ ['left('		, '('],
     \ ['left\['		, '['],
     \ ['left\\{'	, '{'],
@@ -805,6 +807,8 @@ if has("conceal") && &enc == 'utf-8'
     \ ['quad'		, ' '],
     \ ['qquad'		, ' '],
     \ ['rfloor'		, '⌋'],
+    \ ['right|'		, '|'],
+    \ ['right\\|'	, '‖'],
     \ ['right)'		, ')'],
     \ ['right]'		, ']'],
     \ ['right\\}'	, '}'],