Update runtime files.
diff --git a/runtime/syntax/html.vim b/runtime/syntax/html.vim
index aa9cb12..36d3c25 100644
--- a/runtime/syntax/html.vim
+++ b/runtime/syntax/html.vim
@@ -1,10 +1,10 @@
 " Vim syntax file
 " Language:             HTML
-" Maintainer:           Jorge Maldonado Ventura <jorgesumle@freakspot.net>
+" Previous Maintainer:  Jorge Maldonado Ventura <jorgesumle@freakspot.net>
 " Previous Maintainer:  Claudio Fleiner <claudio@fleiner.com>
 " Repository:           https://notabug.org/jorgesumle/vim-html-syntax
-" Last Change:          2020 Mar 17
-" Included patch from Florian Breisch to add the summary element
+" Last Change:          2021 Feb 25
+"			Included patch #7900 to fix comments
 "
 
 " Please check :help html.vim for some comments and a description of the options
@@ -141,9 +141,21 @@
 if exists("html_wrong_comments")
   syn region htmlComment                start=+<!--+    end=+--\s*>+ contains=@Spell
 else
-  syn region htmlComment                start=+<!+      end=+>+   contains=htmlCommentPart,htmlCommentError,@Spell
-  syn match  htmlCommentError contained "[^><!]"
-  syn region htmlCommentPart  contained start=+--+      end=+--\s*+  contains=@htmlPreProc,@Spell
+  " The HTML 5.2 syntax 8.2.4.41-42: bogus comment is parser error; browser skips until next &gt;
+  " Note: must stand first to get lesser :syn-priority
+  syn region htmlComment                start=+<!+      end=+>+     contains=htmlCommentError
+  " Normal comment opening <!-- ...>
+  syn region htmlComment                start=+<!--+    end=+>+     contains=htmlCommentPart,@Spell
+  " Idem 8.2.4.43-44: <!--> and <!---> are parser errors; browser treats as comments
+  syn match htmlComment "<!---\?>" contains=htmlCommentError
+  " Idem 8.2.4.51: any number of consecutive dashes within comment is okay; --> closes comment
+  " Idem 8.2.4.52: closing comment by dash-dash-bang (--!>) is error ignored by parser(!); closes comment
+  syn region htmlCommentPart  contained start=+--+      end=+--!\?>+me=e-1  contains=htmlCommentNested,@htmlPreProc,@Spell
+  " Idem 8.2.4.49: opening nested comment <!-- is parser error, ignored by browser, except <!--> is all right
+  syn match htmlCommentNested contained "<!--[^>]"me=e-1
+  syn match htmlCommentNested contained "<!--->"me=e-3
+  syn match htmlCommentNested contained "<!---\?!>"me=e-4
+  syn match htmlCommentError contained "[^><!]"
 endif
 syn region htmlComment                  start=+<!DOCTYPE+ keepend end=+>+
 
@@ -317,6 +329,7 @@
 hi def link htmlComment            Comment
 hi def link htmlCommentPart        Comment
 hi def link htmlValue              String
+hi def link htmlCommentNested      htmlCommentError
 hi def link htmlCommentError       htmlError
 hi def link htmlTagError           htmlError
 hi def link htmlEvent              javaScript
diff --git a/runtime/syntax/lhaskell.vim b/runtime/syntax/lhaskell.vim
index 0a8a076..cf1f126 100644
--- a/runtime/syntax/lhaskell.vim
+++ b/runtime/syntax/lhaskell.vim
@@ -1,11 +1,11 @@
 " Vim syntax file
 " Language:		Haskell with literate comments, Bird style,
-"			TeX style and plain text surrounding
+"			Markdown style, TeX style and plain text surrounding
 "			\begin{code} \end{code} blocks
 " Maintainer:		Haskell Cafe mailinglist <haskell-cafe@haskell.org>
 " Original Author:	Arthur van Leeuwen <arthurvl@cs.uu.nl>
-" Last Change:		2010 Apr 11
-" Version:		1.04
+" Last Change:		2020 Feb 25
+" Version:		1.05
 "
 " Thanks to Ian Lynagh for thoughtful comments on initial versions and
 " for the inspiration for writing this in the first place.
@@ -44,8 +44,8 @@
 " First off, see if we can inherit a user preference for lhs_markup
 if !exists("b:lhs_markup")
     if exists("lhs_markup")
-	if lhs_markup =~ '\<\%(tex\|none\)\>'
-	    let b:lhs_markup = matchstr(lhs_markup,'\<\%(tex\|none\)\>')
+	if lhs_markup =~ '\<\%(tex\|md\|none\)\>'
+	    let b:lhs_markup = matchstr(lhs_markup,'\<\%(tex\|md\|none\)\>')
 	else
 	    echohl WarningMsg | echo "Unknown value of lhs_markup" | echohl None
 	    let b:lhs_markup = "unknown"
@@ -54,7 +54,7 @@
 	let b:lhs_markup = "unknown"
     endif
 else
-    if b:lhs_markup !~ '\<\%(tex\|none\)\>'
+    if b:lhs_markup !~ '\<\%(tex\|md\|none\)\>'
 	let b:lhs_markup = "unknown"
     endif
 endif
@@ -74,6 +74,8 @@
 if b:lhs_markup == "unknown"
     if search('\\documentclass\|\\begin{\(code}\)\@!\|\\\(sub\)*section\|\\chapter|\\part','W') != 0
 	let b:lhs_markup = "tex"
+    elseif search('```haskell','W') != 0
+        let b:lhs_markup = "md"
     else
 	let b:lhs_markup = "plain"
     endif
@@ -86,6 +88,10 @@
     " Tex.vim removes "_" from 'iskeyword', but we need it for Haskell.
     setlocal isk+=_
     syntax cluster lhsTeXContainer contains=tex.*Zone,texAbstract
+elseif b:lhs_markup == "md"
+    runtime! syntax/markdown.vim
+    unlet b:current_syntax
+    syntax cluster lhsTeXContainer contains=markdown.*
 else
     syntax cluster lhsTeXContainer contains=.*
 endif
@@ -96,9 +102,12 @@
 
 syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack containedin=@lhsTeXContainer
 syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,beginCodeBegin containedin=@lhsTeXContainer
+syntax region lhsHaskellMDBlock start="^```haskell$" matchgroup=NONE end="^```$" keepend contains=@haskellTop,lhsMarkdownCode containedin=@lhsTeXContainer
 
 syntax match lhsBirdTrack "^>" contained
 
+syntax match lhsMarkdownCode "^\(```haskell\|^```\)$" contained
+
 syntax match beginCodeBegin "^\\begin" nextgroup=beginCodeCode contained
 syntax region beginCodeCode  matchgroup=texDelimiter start="{" end="}"
 
@@ -107,6 +116,8 @@
 
 hi def link lhsBirdTrack Comment
 
+hi def link lhsMarkdownCode Comment
+
 hi def link beginCodeBegin	      texCmdName
 hi def link beginCodeCode	      texSection
 
diff --git a/runtime/syntax/python.vim b/runtime/syntax/python.vim
index 23666a1..53e0734 100644
--- a/runtime/syntax/python.vim
+++ b/runtime/syntax/python.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	Python
 " Maintainer:	Zvezdan Petkovic <zpetkovic@acm.org>
-" Last Change:	2016 Oct 29
+" Last Change:	2021 Feb 15
 " Credits:	Neil Schemenauer <nas@python.ca>
 "		Dmitry Vasiliev
 "
@@ -71,30 +71,17 @@
 
 " Keep Python keywords in alphabetical order inside groups for easy
 " comparison with the table in the 'Python Language Reference'
-" https://docs.python.org/2/reference/lexical_analysis.html#keywords,
-" https://docs.python.org/3/reference/lexical_analysis.html#keywords.
+" https://docs.python.org/reference/lexical_analysis.html#keywords.
 " Groups are in the order presented in NAMING CONVENTIONS in syntax.txt.
 " Exceptions come last at the end of each group (class and def below).
 "
-" Keywords 'with' and 'as' are new in Python 2.6
-" (use 'from __future__ import with_statement' in Python 2.5).
+" The list can be checked using:
 "
-" Some compromises had to be made to support both Python 3 and 2.
-" We include Python 3 features, but when a definition is duplicated,
-" the last definition takes precedence.
-"
-" - 'False', 'None', and 'True' are keywords in Python 3 but they are
-"   built-ins in 2 and will be highlighted as built-ins below.
-" - 'exec' is a built-in in Python 3 and will be highlighted as
-"   built-in below.
-" - 'nonlocal' is a keyword in Python 3 and will be highlighted.
-" - 'print' is a built-in in Python 3 and will be highlighted as
-"   built-in below (use 'from __future__ import print_function' in 2)
-" - async and await were added in Python 3.5 and are soft keywords.
+" python3 -c 'import keyword, pprint; pprint.pprint(keyword.kwlist, compact=True)'
 "
 syn keyword pythonStatement	False None True
-syn keyword pythonStatement	as assert break continue del exec global
-syn keyword pythonStatement	lambda nonlocal pass print return with yield
+syn keyword pythonStatement	as assert break continue del global
+syn keyword pythonStatement	lambda nonlocal pass return with yield
 syn keyword pythonStatement	class def nextgroup=pythonFunction skipwhite
 syn keyword pythonConditional	elif else if
 syn keyword pythonRepeat	for while
@@ -103,7 +90,7 @@
 syn keyword pythonInclude	from import
 syn keyword pythonAsync		async await
 
-" Decorators (new in Python 2.4)
+" Decorators
 " A dot must be allowed because of @MyClass.myfunc decorators.
 syn match   pythonDecorator	"@" display contained
 syn match   pythonDecoratorName	"@\s*\h\%(\w\|\.\)*" display contains=pythonDecorator
@@ -168,8 +155,7 @@
 " - 08e0 or 08j are highlighted,
 "
 " and so on, as specified in the 'Python Language Reference'.
-" https://docs.python.org/2/reference/lexical_analysis.html#numeric-literals
-" https://docs.python.org/3/reference/lexical_analysis.html#numeric-literals
+" https://docs.python.org/reference/lexical_analysis.html#numeric-literals
 if !exists("python_no_number_highlight")
   " numbers (including longs and complex)
   syn match   pythonNumber	"\<0[oO]\=\o\+[Ll]\=\>"
@@ -186,37 +172,37 @@
 
 " Group the built-ins in the order in the 'Python Library Reference' for
 " easier comparison.
-" https://docs.python.org/2/library/constants.html
-" https://docs.python.org/3/library/constants.html
-" http://docs.python.org/2/library/functions.html
-" http://docs.python.org/3/library/functions.html
-" http://docs.python.org/2/library/functions.html#non-essential-built-in-functions
-" http://docs.python.org/3/library/functions.html#non-essential-built-in-functions
+" https://docs.python.org/library/constants.html
+" http://docs.python.org/library/functions.html
 " Python built-in functions are in alphabetical order.
+"
+" The list can be checked using:
+"
+" python3 -c 'import builtins, pprint; pprint.pprint(dir(builtins), compact=True)'
+"
+" The constants added by the `site` module are not listed below because they
+" should not be used in programs, only in interactive interpreter.
+" Similarly for some other attributes and functions `__`-enclosed from the
+" output of the above command.
+"
 if !exists("python_no_builtin_highlight")
   " built-in constants
   " 'False', 'True', and 'None' are also reserved words in Python 3
   syn keyword pythonBuiltin	False True None
   syn keyword pythonBuiltin	NotImplemented Ellipsis __debug__
+  " constants added by the `site` module
+  syn keyword pythonBuiltin	quit exit copyright credits license
   " built-in functions
-  syn keyword pythonBuiltin	abs all any bin bool bytearray callable chr
-  syn keyword pythonBuiltin	classmethod compile complex delattr dict dir
-  syn keyword pythonBuiltin	divmod enumerate eval filter float format
-  syn keyword pythonBuiltin	frozenset getattr globals hasattr hash
-  syn keyword pythonBuiltin	help hex id input int isinstance
+  syn keyword pythonBuiltin	abs all any ascii bin bool breakpoint bytearray
+  syn keyword pythonBuiltin	bytes callable chr classmethod compile complex
+  syn keyword pythonBuiltin	delattr dict dir divmod enumerate eval exec
+  syn keyword pythonBuiltin	filter float format frozenset getattr globals
+  syn keyword pythonBuiltin	hasattr hash help hex id input int isinstance
   syn keyword pythonBuiltin	issubclass iter len list locals map max
   syn keyword pythonBuiltin	memoryview min next object oct open ord pow
   syn keyword pythonBuiltin	print property range repr reversed round set
-  syn keyword pythonBuiltin	setattr slice sorted staticmethod str
-  syn keyword pythonBuiltin	sum super tuple type vars zip __import__
-  " Python 2 only
-  syn keyword pythonBuiltin	basestring cmp execfile file
-  syn keyword pythonBuiltin	long raw_input reduce reload unichr
-  syn keyword pythonBuiltin	unicode xrange
-  " Python 3 only
-  syn keyword pythonBuiltin	ascii bytes exec
-  " non-essential built-in functions; Python 2 only
-  syn keyword pythonBuiltin	apply buffer coerce intern
+  syn keyword pythonBuiltin	setattr slice sorted staticmethod str sum super
+  syn keyword pythonBuiltin	tuple type vars zip __import__
   " avoid highlighting attributes as builtins
   syn match   pythonAttribute	/\.\h\w*/hs=s+1
 	\ contains=ALLBUT,pythonBuiltin,pythonFunction,pythonAsync
@@ -224,28 +210,27 @@
 endif
 
 " From the 'Python Library Reference' class hierarchy at the bottom.
-" http://docs.python.org/2/library/exceptions.html
-" http://docs.python.org/3/library/exceptions.html
+" http://docs.python.org/library/exceptions.html
 if !exists("python_no_exception_highlight")
   " builtin base exceptions (used mostly as base classes for other exceptions)
   syn keyword pythonExceptions	BaseException Exception
-  syn keyword pythonExceptions	ArithmeticError BufferError
-  syn keyword pythonExceptions	LookupError
-  " builtin base exceptions removed in Python 3
-  syn keyword pythonExceptions	EnvironmentError StandardError
+  syn keyword pythonExceptions	ArithmeticError BufferError LookupError
   " builtin exceptions (actually raised)
-  syn keyword pythonExceptions	AssertionError AttributeError
-  syn keyword pythonExceptions	EOFError FloatingPointError GeneratorExit
-  syn keyword pythonExceptions	ImportError IndentationError
-  syn keyword pythonExceptions	IndexError KeyError KeyboardInterrupt
-  syn keyword pythonExceptions	MemoryError NameError NotImplementedError
-  syn keyword pythonExceptions	OSError OverflowError ReferenceError
-  syn keyword pythonExceptions	RuntimeError StopIteration SyntaxError
+  syn keyword pythonExceptions	AssertionError AttributeError EOFError
+  syn keyword pythonExceptions	FloatingPointError GeneratorExit ImportError
+  syn keyword pythonExceptions	IndentationError IndexError KeyError
+  syn keyword pythonExceptions	KeyboardInterrupt MemoryError
+  syn keyword pythonExceptions	ModuleNotFoundError NameError
+  syn keyword pythonExceptions	NotImplementedError OSError OverflowError
+  syn keyword pythonExceptions	RecursionError ReferenceError RuntimeError
+  syn keyword pythonExceptions	StopAsyncIteration StopIteration SyntaxError
   syn keyword pythonExceptions	SystemError SystemExit TabError TypeError
-  syn keyword pythonExceptions	UnboundLocalError UnicodeError
-  syn keyword pythonExceptions	UnicodeDecodeError UnicodeEncodeError
+  syn keyword pythonExceptions	UnboundLocalError UnicodeDecodeError
+  syn keyword pythonExceptions	UnicodeEncodeError UnicodeError
   syn keyword pythonExceptions	UnicodeTranslateError ValueError
   syn keyword pythonExceptions	ZeroDivisionError
+  " builtin exception aliases for OSError
+  syn keyword pythonExceptions	EnvironmentError IOError WindowsError
   " builtin OS exceptions in Python 3
   syn keyword pythonExceptions	BlockingIOError BrokenPipeError
   syn keyword pythonExceptions	ChildProcessError ConnectionAbortedError
@@ -253,18 +238,13 @@
   syn keyword pythonExceptions	ConnectionResetError FileExistsError
   syn keyword pythonExceptions	FileNotFoundError InterruptedError
   syn keyword pythonExceptions	IsADirectoryError NotADirectoryError
-  syn keyword pythonExceptions	PermissionError ProcessLookupError
-  syn keyword pythonExceptions	RecursionError StopAsyncIteration
-  syn keyword pythonExceptions	TimeoutError
-  " builtin exceptions deprecated/removed in Python 3
-  syn keyword pythonExceptions	IOError VMSError WindowsError
+  syn keyword pythonExceptions	PermissionError ProcessLookupError TimeoutError
   " builtin warnings
   syn keyword pythonExceptions	BytesWarning DeprecationWarning FutureWarning
   syn keyword pythonExceptions	ImportWarning PendingDeprecationWarning
-  syn keyword pythonExceptions	RuntimeWarning SyntaxWarning UnicodeWarning
+  syn keyword pythonExceptions	ResourceWarning RuntimeWarning
+  syn keyword pythonExceptions	SyntaxWarning UnicodeWarning
   syn keyword pythonExceptions	UserWarning Warning
-  " builtin warnings in Python 3
-  syn keyword pythonExceptions	ResourceWarning
 endif
 
 if exists("python_space_error_highlight")