changeset 19303:51bc26d4a393

Update runtime files. Commit: https://github.com/vim/vim/commit/560979ed4f0216f902a2c247e937f00a27dcb198 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Feb 4 22:53:05 2020 +0100 Update runtime files.
author Bram Moolenaar <Bram@vim.org>
date Tue, 04 Feb 2020 23:00:04 +0100
parents 5060698bf8a8
children 097c46668bd1
files runtime/doc/autocmd.txt runtime/doc/eval.txt runtime/doc/insert.txt runtime/doc/popup.txt runtime/doc/tags runtime/doc/tagsrch.txt runtime/doc/terminal.txt runtime/doc/todo.txt runtime/doc/version8.txt runtime/doc/vim9.txt runtime/ftplugin/c.vim runtime/syntax/cs.vim runtime/syntax/debchangelog.vim runtime/syntax/debsources.vim runtime/syntax/dockerfile.vim runtime/syntax/fortran.vim
diffstat 16 files changed, 177 insertions(+), 61 deletions(-) [+]
line wrap: on
line diff
--- 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 17
+*autocmd.txt*   For Vim version 8.2.  Last change: 2020 Jan 26
 
 
 		  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 Jan 19
+*eval.txt*	For Vim version 8.2.  Last change: 2020 Feb 03
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1808,7 +1808,9 @@ v:errors	Errors found by assert function
 
 					*v:event* *event-variable*
 v:event		Dictionary containing information about the current
-		|autocommand|.  The dictionary is emptied when the |autocommand|
+		|autocommand|.  See the specific event for what it puts in
+		this dictionary.
+		The dictionary is emptied when the |autocommand|
 		finishes, please refer to |dict-identity| for how to get an
 		independent copy of it.
 
@@ -3455,6 +3457,7 @@ chdir({dir})						*chdir()*
 			  directory (|:tcd|) then changes the tabpage local
 			  directory.
 			- Otherwise, changes the global directory.
+		{dir} must be a String.
 		If successful, returns the previous working directory.  Pass
 		this to another chdir() to restore the directory.
 		On failure, returns an empty string.
@@ -5664,7 +5667,7 @@ getwininfo([{winid}])					*getwininfo()*
 			GetWinnr()->getwininfo()
 
 getwinpos([{timeout}])					*getwinpos()*
-		The result is a list with two numbers, the result of
+		The result is a List with two numbers, the result of
 		|getwinposx()| and |getwinposy()| combined:
 			[x-pos, y-pos]
 		{timeout} can be used to specify how long to wait in msec for
@@ -10461,6 +10464,7 @@ winline()	The result is a Number, which 
 							*winnr()*
 winnr([{arg}])	The result is a Number, which is the number of the current
 		window.  The top window has number 1.
+		Returns zero for a popup window.
 
 		The optional argument {arg} supports the following values:
 			$	the number of the last window (the window
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 8.2.  Last change: 2020 Jan 04
+*insert.txt*    For Vim version 8.2.  Last change: 2020 Jan 26
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1079,7 +1079,8 @@ If you want to suppress the warning mess
 
 Other items are ignored.
 
-For acting upon end of completion, see the |CompleteDone| autocommand event.
+For acting upon end of completion, see the |CompleteDonePre| and
+|CompleteDone| autocommand event.
 
 For example, the function can contain this: >
 	let matches = ... list of words ...
--- a/runtime/doc/popup.txt
+++ b/runtime/doc/popup.txt
@@ -1,4 +1,4 @@
-*popup.txt*  For Vim version 8.2.  Last change: 2019 Nov 30
+*popup.txt*  For Vim version 8.2.  Last change: 2020 Feb 03
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -11,6 +11,7 @@ 1. Introduction			|popup-intro|
    Window position and size	|popup-position|
    Closing the popup window	|popup-close|
    Popup buffer and window	|popup-buffer|
+   Terminal in popup window	|popup-terminal|
 2. Functions			|popup-functions|
    Details			|popup-function-details|
 3. Usage			|popup-usage|
@@ -140,6 +141,22 @@ And options can be set on the buffer wit
 You can also use `win_execute()` with a ":setlocal" command.
 
 
+TERMINAL IN POPUP WINDOW				 *popup-terminal*
+
+A special case is running a terminal in a popup window.  Many rules are then
+different:						*E863*
+- The popup window always has focus, it is not possible to switch to another
+  window.
+- When the job ends, the popup window closes.
+- The default Pmenu color is only used for the border and padding.  To change
+  the color of the terminal itself set 'wincolor'.
+
+To run a terminal in a popup window, first create the terminal hidden.  Then
+pass the buffer number to popup_create().  Example: >
+	let buf = term_start(['picker', 'Something'], #{hidden: 1, term_finish: 'close'})
+	let winid = popup_create(buf, #{minwidth: 50, minheight: 20})
+	set wincolor=Search
+
 ==============================================================================
 2. Functions						*popup-functions*
 
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2313,6 +2313,7 @@ 90.5	usr_90.txt	/*90.5*
 :debug-name	repeat.txt	/*:debug-name*
 :debugg	repeat.txt	/*:debugg*
 :debuggreedy	repeat.txt	/*:debuggreedy*
+:def	vim9.txt	/*:def*
 :del	change.txt	/*:del*
 :delc	map.txt	/*:delc*
 :delcommand	map.txt	/*:delcommand*
@@ -2384,6 +2385,7 @@ 90.5	usr_90.txt	/*90.5*
 :emenu	gui.txt	/*:emenu*
 :en	eval.txt	/*:en*
 :end	eval.txt	/*:end*
+:enddef	vim9.txt	/*:enddef*
 :endf	eval.txt	/*:endf*
 :endfo	eval.txt	/*:endfo*
 :endfor	eval.txt	/*:endfor*
@@ -2404,6 +2406,8 @@ 90.5	usr_90.txt	/*90.5*
 :execute	eval.txt	/*:execute*
 :exi	editing.txt	/*:exi*
 :exit	editing.txt	/*:exit*
+:exp	vim9.txt	/*:exp*
+:export	vim9.txt	/*:export*
 :exu	helphelp.txt	/*:exu*
 :exusage	helphelp.txt	/*:exusage*
 :f	editing.txt	/*:f*
@@ -2506,6 +2510,9 @@ 90.5	usr_90.txt	/*90.5*
 :imapclear	map.txt	/*:imapclear*
 :ime	gui.txt	/*:ime*
 :imenu	gui.txt	/*:imenu*
+:imp	vim9.txt	/*:imp*
+:import	vim9.txt	/*:import*
+:import-cycle	vim9.txt	/*:import-cycle*
 :in	insert.txt	/*:in*
 :index	index.txt	/*:index*
 :ino	map.txt	/*:ino*
@@ -3354,6 +3361,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*
 :vimgrep	quickfix.txt	/*:vimgrep*
 :vimgrepa	quickfix.txt	/*:vimgrepa*
 :vimgrepadd	quickfix.txt	/*:vimgrepadd*
@@ -3834,6 +3843,7 @@ Command-line	cmdline.txt	/*Command-line*
 Command-line-mode	cmdline.txt	/*Command-line-mode*
 CompleteChanged	autocmd.txt	/*CompleteChanged*
 CompleteDone	autocmd.txt	/*CompleteDone*
+CompleteDonePre	autocmd.txt	/*CompleteDonePre*
 ConPTY	terminal.txt	/*ConPTY*
 Contents	quickref.txt	/*Contents*
 Cscope	if_cscop.txt	/*Cscope*
@@ -4661,6 +4671,7 @@ E858	eval.txt	/*E858*
 E859	eval.txt	/*E859*
 E86	windows.txt	/*E86*
 E862	eval.txt	/*E862*
+E863	popup.txt	/*E863*
 E864	pattern.txt	/*E864*
 E865	pattern.txt	/*E865*
 E866	pattern.txt	/*E866*
@@ -6276,6 +6287,7 @@ faq	intro.txt	/*faq*
 farsi	farsi.txt	/*farsi*
 farsi.txt	farsi.txt	/*farsi.txt*
 fasm.vim	syntax.txt	/*fasm.vim*
+fast-functions	vim9.txt	/*fast-functions*
 fcs_choice-variable	eval.txt	/*fcs_choice-variable*
 fcs_reason-variable	eval.txt	/*fcs_reason-variable*
 feature-list	eval.txt	/*feature-list*
@@ -8315,6 +8327,7 @@ popup-menu-added	version5.txt	/*popup-me
 popup-position	popup.txt	/*popup-position*
 popup-props	popup.txt	/*popup-props*
 popup-scrollbar	popup.txt	/*popup-scrollbar*
+popup-terminal	popup.txt	/*popup-terminal*
 popup-textprop-pos	popup.txt	/*popup-textprop-pos*
 popup-usage	popup.txt	/*popup-usage*
 popup-window	popup.txt	/*popup-window*
@@ -9544,6 +9557,7 @@ tutor	usr_01.txt	/*tutor*
 twice	if_cscop.txt	/*twice*
 two-engines	pattern.txt	/*two-engines*
 type()	eval.txt	/*type()*
+type-inference	vim9.txt	/*type-inference*
 type-mistakes	tips.txt	/*type-mistakes*
 typecorr-settings	usr_41.txt	/*typecorr-settings*
 typecorr.txt	usr_41.txt	/*typecorr.txt*
@@ -9907,6 +9921,14 @@ vim-variable	eval.txt	/*vim-variable*
 vim.vim	syntax.txt	/*vim.vim*
 vim7	version7.txt	/*vim7*
 vim8	version8.txt	/*vim8*
+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-script	vim9.txt	/*vim9-script*
+vim9-types	vim9.txt	/*vim9-types*
+vim9.txt	vim9.txt	/*vim9.txt*
+vim9script	vim9.txt	/*vim9script*
 vim:	options.txt	/*vim:*
 vim_announce	intro.txt	/*vim_announce*
 vim_dev	intro.txt	/*vim_dev*
--- a/runtime/doc/tagsrch.txt
+++ b/runtime/doc/tagsrch.txt
@@ -1,4 +1,4 @@
-*tagsrch.txt*   For Vim version 8.2.  Last change: 2019 Dec 27
+*tagsrch.txt*   For Vim version 8.2.  Last change: 2020 Jan 30
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -903,8 +903,8 @@ The following is a hypothetical example 
 uses the output of |taglist()| to generate the result: a list of tags in the
 inverse order of file names.
 >
-	function! TagFunc(pattern, flags, info)
-	  function! CompareFilenames(item1, item2)
+	function TagFunc(pattern, flags, info)
+	  function CompareFilenames(item1, item2)
 	    let f1 = a:item1['filename']
 	    let f2 = a:item2['filename']
 	    return f1 >=# f2 ?
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -1,4 +1,4 @@
-*terminal.txt*	For Vim version 8.2.  Last change: 2020 Jan 04
+*terminal.txt*	For Vim version 8.2.  Last change: 2020 Jan 30
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1025,7 +1025,7 @@ Writing a screen dump test for Vim ~
 For an example see the Test_syntax_c() function in
 src/testdir/test_syntax.vim.  The main parts are:
 - Write a file you want to test with. This is useful for testing syntax
-  highlighting.  You can also start Vim with en empty buffer.
+  highlighting.  You can also start Vim with an empty buffer.
 - Run Vim in a terminal with a specific size.  The default is 20 lines of 75
   characters.  This makes sure the dump is always this size.  The function
   RunVimInTerminal() takes care of this.  Pass it the arguments for the Vim
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.2.  Last change: 2020 Jan 23
+*todo.txt*      For Vim version 8.2.  Last change: 2020 Feb 04
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -40,10 +40,44 @@ browser use: https://github.com/vim/vim/
 
 Include ipv6 syntax changes?  (DJ Lucas, #5360)
 
+Add win_type(), which "popup" and "cmdline" as values?
+
+Vim9 script:
+- test s:var += 'some'
+  test exported += 'some'
+- implement default values for optional arguments
+  Generate instructions at start of function, skip over if argument provided?
+- Disallow unlet for local/script/imported vars
+- :func inside vim9script must still use a:arg
+- 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
+- Test each level of expressions properly, with type checking
+- Test the
+- Test try/catch and throw better, also nested.
+  Test return inside try/finally jumps to finally and then returns.
+- call autoload function.
+- Type checking arguments when calling :def function
+- can use func as reference:
+	def SomeFunc() ...
+	map(list, SomeFunc)
+- define function and create funcref in one step:
+	let ref = def(arg: type): rettype
+  Also extends lambda
+- Test: Function declared inside a :def function is local, disappears at the
+  end of the function.  Unless g: is used, just like with variables.
+- Can we omit \ for line continuation inside (), {}, ?
+  Requires parsing while reading a function.  Like fgetline in do_one_cmd()?
+- implement :type
+- implement class
+- implement interface
+- predefined class: Promise<T>
+- import statement for type declaration?
+- Make accessing varargs faster: arg[expr]
+	EVAL expr
+	LOADVARARG (varags idx)
+
 Popup windows:
-- Make it possible to put a terminal window in a popup.  Would always grab key
-  input?  Sort-of possible by creating a hidden terminal and opening a popup
-  with that buffer: #4063.
 - Use popup (or popup menu) for command line completion
 - When using a popup for the info of a completion menu, and there is not
   enough space, let the popup overlap with the menu. (#4544)
@@ -55,6 +89,8 @@ Popup windows:
 - Figure out the size and position better if wrapping inserts indent
 
 Text properties:
+- Combining text property with 'cursorline' does not always work (Billie
+  Cleek, #5533)
 - Text properties spanning more than one line
 - See remarks at top of src/textprop.c
 
@@ -121,9 +157,8 @@ Terminal emulator window:
   conversions.
 
 Error numbers available:
-E450, E451, E452,
-E453, E454, E460, E489, E491, E565, E578, E610, E611, E653,
-E654, E856, E857, E860, E861, E863, E889, E900
+E451, E452, E453, E454, E460, E489, E491, E565, E578, E610, E611, E653,
+E654, E856, E857, E860, E861, E900
 
 Patch to move duplicated code to a function. (Yegappan Lakshmanan, #5330)
 
@@ -142,16 +177,20 @@ Needs better docs.  Is there a better na
 
 undo result wrong: Masato Nishihata, #4798
 
+When 'lazyredraw' is set sometimes the title is not updated.
+(Jason Franklin, 2020 Feb 3)  Looks like a race condition.
+
 Patch to add function to return the text used in the quickfix window.
 (Yegappan, #5465)
 
+Patch for Template string: #4491.  New pull: #4634
+Implementation is too inefficient, avoid using lambda.
+
 Undo puts cursor in wrong line after "cG<Esc>" undo.
 
 :unmap <c-n> gives error but does remove the mapping. (Antony Scriven, 2019
 Dec 19)
 
-Sound: support on Mac?  Or does libcanberra work there?
-
 Patch to fix session file when using multiple tab pages. (Jason Franklin, 2019
 May 20)
 Also put :argadd commands at the start for all buffers, so that their order
@@ -194,6 +233,8 @@ Enable 'termbidi' if $VTE_VERSION >= 570
 Universal solution to detect if t_RS is working, using cursor position.
 Koichi Iwamoto, #2126
 
+Sound: support on Mac?  Or does libcanberra work there?
+
 Python 3.8 doesn't work. (Antonios Hadjigeorgalis, #5509)
 
 The :syntax cchar value can only be a single character.  It would be useful to
@@ -204,6 +245,8 @@ It can replace the BeOS code, which is l
 Now on github: #1856.  Updated Oct 2017
 Got permission to include this under the Vim license.
 
+"--cleanFOO" does not result in an error. (#5537)
+
 Add "t" action to settagstack(): truncate and add new entries. (#5405)
 
 Result of synID() sometimes wrong in help files. (#5252)
@@ -269,9 +312,6 @@ Patch by Alex Dobrynin, 2007 Jun 3.  Als
 Add a WindowScrolled event.  Trigger around the same time as CursorMoved.
 Can be used to update highlighting. #3127  #5181
 
-Patch for Template string: #4491.  New pull: #4634
-Implementation is too inefficient, avoid using lambda.
-
 Incorrect formatting with autoindent. (Sebastian Gniazdowski, #4909)
 
 Patch to add the :bvimgrep command.  (Christian Brabandt, 2014 Nov 12)
@@ -812,9 +852,6 @@ option_save({list})					*option_save()*
 directory (Paulo Marcel Coelho Arabic, 2017 Oct 30, #2266)
 Also see #1689.
 
-crash when removing an element while inside map(). (Nikolai Pavlov, 2018 Feb
-17, #2652)
-
 When 'virtualedit' is "all" and 'cursorcolumn' is set, the wrong column may be
 highlighted. (van-de-bugger, 2018 Jan 23, #2576)
 
--- a/runtime/doc/version8.txt
+++ b/runtime/doc/version8.txt
@@ -1,4 +1,4 @@
-*version8.txt*  For Vim version 8.2.  Last change: 2019 Dec 29
+*version8.txt*  For Vim version 8.2.  Last change: 2020 Feb 04
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -306,7 +306,6 @@ New and extended functions: ~
 |systemlist()|		get the result of a shell command as a list
 |test_alloc_fail()|	make memory allocation fail
 |test_autochdir()|	test 'autochdir' functionality
-test_disable_char_avail() test without typeahead (removed later)
 |test_garbagecollect_now()| free memory right now
 |test_null_channel()|	return a null Channel
 |test_null_dict()|	return a null Dict
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -1,4 +1,4 @@
-*vim9.txt*	For Vim version 8.2.  Last change: 2019 Dec 06
+*vim9.txt*	For Vim version 8.2.  Last change: 2020 Jan 30
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -113,7 +113,7 @@ used: >
 	}
 	echo temp  " Error!
 
-An existing variable cannot be assigend to with `:let`, since that implies a
+An existing variable cannot be assigned to with `:let`, since that implies a
 declaration.  An exception is global variables: these can be both used with
 and without `:let`, because there is no rule about where they are declared.
 
@@ -128,7 +128,7 @@ Omitting :call and :eval ~
 
 Functions can be called without `:call`: >
   	writefile(lines, 'file')
-Using `:call` is still posible, but this is discouraged.
+Using `:call` is still possible, but this is discouraged.
 
 A method call without `eval` is possible, so long as the start is an
 identifier or can't be an Ex command.  It does not work for string constants: >
@@ -146,9 +146,14 @@ No curly braces expansion ~
 |curly-braces-names| cannot be used.
 
 
-Comperators ~
+No :append, :change or :insert ~
+
+These commands are too quickly confused with local variable names.
 
-The 'ignorecase' option is not used for comperators that use strings.
+
+Comparators ~
+
+The 'ignorecase' option is not used for comparators that use strings.
 
 
 White space ~
@@ -242,6 +247,10 @@ THIS IS STILL UNDER DEVELOPMENT - ANYTHI
 			The second and third form are optional arguments.
 			When the caller omits an argument the {value} is used.
 
+			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`.
 
 							*:enddef*
@@ -325,7 +334,7 @@ items, can then be imported in another s
 
 Namespace ~
 							*:vim9script* *:vim9*
-To recognize an file that can be imported the `vim9script` statement must
+To recognize a file that can be imported the `vim9script` statement must
 appear as the first statement in the file.  It tells Vim to interpret the
 script in its own namespace, instead of the global namespace.  If a file
 starts with: >
@@ -371,7 +380,7 @@ The exported items can be imported indiv
 To import multiple items at the same time: >
 	import {someValue, MyClass} from "thatscript.vim"
 
-In case the name is ambigiuous, another name can be specified: >
+In case the name is ambiguous, another name can be specified: >
 	import MyClass as ThatClass from "myclass.vim"
 	import {someValue, MyClass as ThatClass} from "myclass.vim"
 
@@ -404,7 +413,7 @@ result in undefined items.
 Import in an autoload script ~
 
 For optimal startup speed, loading scripts should be postponed until they are
-actually needed.  A recommended mechamism:
+actually needed.  A recommended mechanism:
 
 1. In the plugin define user commands, functions and/or mappings that refer to
    an autoload script. >
@@ -445,7 +454,7 @@ 9. Rationale						*vim9-rationale*
 The :def command ~
 
 Plugin writers have asked for a much faster Vim script.  Investigation have
-shown that keeping the existing semantics of funtion calls make this close to
+shown that keeping the existing semantics of function calls make this close to
 impossible, because of the overhead involved with calling a function, setting
 up the local function scope and executing lines.  There are many details that
 need to be handled, such as error messages and exceptions.  The need to create
@@ -483,7 +492,7 @@ JavaScript/TypeScript syntax and semanti
 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
-abondon the well-known parts of legacy Vim script.
+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
--- a/runtime/ftplugin/c.vim
+++ b/runtime/ftplugin/c.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	C
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2017 Sep 28
+" Last Change:	2020 Feb 01
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -15,12 +15,16 @@ let b:did_ftplugin = 1
 let s:cpo_save = &cpo
 set cpo-=C
 
-let b:undo_ftplugin = "setl fo< com< ofu< | if has('vms') | setl isk< | endif"
+let b:undo_ftplugin = "setl fo< com< ofu< cms< def< inc< | if has('vms') | setl isk< | endif"
 
 " Set 'formatoptions' to break comment lines but not other lines,
 " and insert the comment leader when hitting <CR> or using "o".
 setlocal fo-=t fo+=croql
 
+" These options have the right value as default, but the user may have
+" overruled that.
+setlocal commentstring& define& include&
+
 " Set completion with CTRL-X CTRL-O to autoloaded function.
 if exists('&ofu')
   setlocal ofu=ccomplete#Complete
--- a/runtime/syntax/cs.vim
+++ b/runtime/syntax/cs.vim
@@ -3,7 +3,7 @@
 " Maintainer:          Nick Jensen <nickspoon@gmail.com>
 " Former Maintainers:  Anduin Withers <awithers@anduin.com>
 "                      Johannes Zellner <johannes@zellner.org>
-" Last Change:         2019-08-01
+" Last Change:         2020-01-27
 " Filenames:           *.cs
 " License:             Vim (see :h license)
 " Repository:          https://github.com/nickspoons/vim-cs
@@ -97,6 +97,8 @@ syn match	csXmlComment	"///.*$" contains
 syn include	@csXml syntax/xml.vim
 hi def link	xmlRegion Comment
 
+" Since syntax/xml.vim contains `syn spell toplevel`, we need to set it back to `default` here.
+syn spell default
 
 " [1] 9.5 Pre-processing directives
 syn region	csPreCondit	start="^\s*#\s*\(define\|undef\|if\|elif\|else\|endif\|line\|error\|warning\)" skip="\\$" end="$" contains=csComment keepend
--- a/runtime/syntax/debchangelog.vim
+++ b/runtime/syntax/debchangelog.vim
@@ -3,7 +3,7 @@
 " Maintainer:  Debian Vim Maintainers
 " Former Maintainers: Gerfried Fuchs <alfie@ist.org>
 "                     Wichert Akkerman <wakkerma@debian.org>
-" Last Change: 2019 Oct 20
+" Last Change: 2020 Feb 02
 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim
 
 " Standard syntax initialization
@@ -24,7 +24,7 @@ let s:supported = [
       \ 'wheezy', 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
       \ 'sid', 'rc-buggy',
       \
-      \ 'trusty', 'xenial', 'bionic', 'disco', 'eoan', 'focal', 'devel'
+      \ 'trusty', 'xenial', 'bionic', 'eoan', 'focal', 'devel'
       \ ]
 let s:unsupported = [
       \ 'frozen', 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
@@ -33,7 +33,8 @@ let s:unsupported = [
       \ 'warty', 'hoary', 'breezy', 'dapper', 'edgy', 'feisty',
       \ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid',
       \ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy',
-      \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic'
+      \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic',
+      \ 'disco'
       \ ]
 let &cpo=s:cpo
 
@@ -43,7 +44,7 @@ exe 'syn match debchangelogFirstKV	conta
 exe 'syn match debchangelogOtherKV	contained ", \('.s:urgency.'\|'.s:binNMU.'\)"'
 exe 'syn match debchangelogTarget	contained "\%( \%('.join(s:supported, '\|').'\)\>[-[:alnum:]]*\)\+"'
 exe 'syn match debchangelogUnsupportedTarget	contained "\%( \%('.join(s:unsupported, '\|').'\)\>[-[:alnum:]]*\)\+"'
-syn keyword debchangelogUnreleased	contained UNRELEASED
+syn match debchangelogUnreleased	contained / UNRELEASED/
 syn match debchangelogVersion	contained "(.\{-})"
 syn match debchangelogCloses	contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*"
 syn match debchangelogLP	contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*"
--- a/runtime/syntax/debsources.vim
+++ b/runtime/syntax/debsources.vim
@@ -2,7 +2,7 @@
 " Language:     Debian sources.list
 " Maintainer:   Debian Vim Maintainers
 " Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
-" Last Change: 2019 Oct 18
+" Last Change: 2020 Feb 02
 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim
 
 " Standard syntax initialization
@@ -26,7 +26,7 @@ let s:supported = [
       \ 'wheezy', 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
       \ 'sid', 'rc-buggy',
       \
-      \ 'trusty', 'xenial', 'bionic', 'disco', 'eoan', 'focal', 'devel'
+      \ 'trusty', 'xenial', 'bionic', 'eoan', 'focal', 'devel'
       \ ]
 let s:unsupported = [
       \ 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
@@ -35,7 +35,8 @@ let s:unsupported = [
       \ 'warty', 'hoary', 'breezy', 'dapper', 'edgy', 'feisty',
       \ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid',
       \ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy',
-      \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic'
+      \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic',
+      \ 'disco'
       \ ]
 let &cpo=s:cpo
 
--- a/runtime/syntax/dockerfile.vim
+++ b/runtime/syntax/dockerfile.vim
@@ -1,26 +1,45 @@
 " dockerfile.vim - Syntax highlighting for Dockerfiles
 " Maintainer:   Honza Pokorny <https://honza.ca>
-" Version:      0.6
-" Last Change:  2019 Aug 16
+" Last Change:  2020 Jan 27
 " License:      BSD
 
+" https://docs.docker.com/engine/reference/builder/
 
 if exists("b:current_syntax")
     finish
 endif
 
-let b:current_syntax = "dockerfile"
+syntax include @JSON syntax/json.vim
+unlet b:current_syntax
+
+syntax include @Shell syntax/sh.vim
+unlet b:current_syntax
 
 syntax case ignore
+syntax match dockerfileLinePrefix /\v^\s*(ONBUILD\s+)?\ze\S/ contains=dockerfileKeyword nextgroup=dockerfileInstruction skipwhite
+syntax region dockerfileFrom matchgroup=dockerfileKeyword start=/\v^\s*(FROM)\ze(\s|$)/ skip=/\v\\\_./ end=/\v((^|\s)AS(\s|$)|$)/ contains=dockerfileOption
 
-syntax match dockerfileKeyword /\v^\s*(ONBUILD\s+)?(ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)\s/
+syntax keyword dockerfileKeyword contained ADD ARG CMD COPY ENTRYPOINT ENV EXPOSE HEALTHCHECK LABEL MAINTAINER ONBUILD RUN SHELL STOPSIGNAL USER VOLUME WORKDIR
+syntax match dockerfileOption contained /\v(^|\s)\zs--\S+/
 
-syntax match dockerfileKeyword /\v(AS)/
+syntax match dockerfileInstruction contained /\v(\S+)(\s+--\S+)*/             contains=dockerfileKeyword,dockerfileOption skipwhite nextgroup=dockerfileValue
+syntax match dockerfileInstruction contained /\v(ADD|COPY)(\s+--\S+)*/        contains=dockerfileKeyword,dockerfileOption skipwhite nextgroup=dockerfileJSON
+syntax match dockerfileInstruction contained /\v(HEALTHCHECK)(\s+--\S+)*/     contains=dockerfileKeyword,dockerfileOption skipwhite nextgroup=dockerfileInstruction
+syntax match dockerfileInstruction contained /\v(CMD|ENTRYPOINT|RUN)/         contains=dockerfileKeyword skipwhite nextgroup=dockerfileShell
+syntax match dockerfileInstruction contained /\v(CMD|ENTRYPOINT|RUN)\ze\s+\[/ contains=dockerfileKeyword skipwhite nextgroup=dockerfileJSON
+syntax match dockerfileInstruction contained /\v(SHELL|VOLUME)/               contains=dockerfileKeyword skipwhite nextgroup=dockerfileJSON
 
-syntax region dockerfileString start=/\v"/ skip=/\v\\./ end=/\v"/
+syntax region dockerfileString contained start=/\v"/ skip=/\v\\./ end=/\v"/
+syntax region dockerfileJSON   contained keepend start=/\v\[/ skip=/\v\\\_./ end=/\v$/ contains=@JSON
+syntax region dockerfileShell  contained keepend start=/\v/ skip=/\v\\\_./ end=/\v$/ contains=@Shell
+syntax region dockerfileValue  contained keepend start=/\v/ skip=/\v\\\_./ end=/\v$/ contains=dockerfileString
 
-syntax match dockerfileComment "\v^\s*#.*$"
+syntax region dockerfileComment start=/\v^\s*#/ end=/\v$/
+set commentstring=#\ %s
 
 hi def link dockerfileString String
 hi def link dockerfileKeyword Keyword
 hi def link dockerfileComment Comment
+hi def link dockerfileOption Special
+
+let b:current_syntax = "dockerfile"
--- a/runtime/syntax/fortran.vim
+++ b/runtime/syntax/fortran.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	Fortran 2008 (and older: Fortran 2003, 95, 90, and 77)
-" Version:	101
-" Last Change:	2019 Nov. 26
+" Version:	102
+" Last Change:	2019 Dec. 14
 " Maintainer:	Ajit J. Thakkar <ajit@unb.ca>; <http://www2.unb.ca/~ajit/>
 " Usage:	For instructions, do :help fortran-syntax from Vim
 " Credits:
@@ -185,8 +185,8 @@ syn match fortranLabelNumber	display	"^ 
 if exists("fortran_more_precise")
   " Numbers as targets
   syn match fortranTarget	display	"\(\<if\s*(.\+)\s*\)\@<=\(\d\+\s*,\s*\)\{2}\d\+\>"
-  syn match fortranTarget	display	"\(\<do\s\+\)\@<11=\d\+\>"
-  syn match fortranTarget	display	"\(\<go\s*to\s*(\=\)\@<11=\(\d\+\s*,\s*\)*\d\+\>"
+  syn match fortranTarget	display	"\(\<do\s\+\)\@11<=\d\+\>"
+  syn match fortranTarget	display	"\(\<go\s*to\s*(\=\)\@11<=\(\d\+\s*,\s*\)*\d\+\>"
 endif
 
 syn keyword fortranTypeR	external
@@ -274,7 +274,7 @@ syn match fortranType			"\<elemental\>"
 syn match fortranType			"\<pure\>"
 syn match fortranType			"\<impure\>"
 if exists("fortran_more_precise")
-  syn match fortranConstructName "\(\<end\s*forall\s\+\)\@<15=\a\w*\>"
+  syn match fortranConstructName "\(\<end\s*forall\s\+\)\@15<=\a\w*\>"
 endif
 
 if b:fortran_dialect == "f08"