changeset 13231:167a030448fa

Update runtime files. commit https://github.com/vim/vim/commit/7254067ee970686cc3ff4a1effc3e49e9192a5c1 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Feb 9 22:00:53 2018 +0100 Update runtime files.
author Christian Brabandt <cb@256bit.org>
date Fri, 09 Feb 2018 22:15:07 +0100
parents 0b201ae05cd3
children d11bbd3440b0
files runtime/doc/autocmd.txt runtime/doc/eval.txt runtime/doc/filetype.txt runtime/doc/if_pyth.txt runtime/doc/message.txt runtime/doc/options.txt runtime/doc/pattern.txt runtime/doc/quickref.txt runtime/doc/starting.txt runtime/doc/syntax.txt runtime/doc/tags runtime/doc/todo.txt runtime/ftplugin/chicken.vim runtime/ftplugin/debchangelog.vim runtime/ftplugin/debcontrol.vim runtime/ftplugin/scheme.vim runtime/indent/scheme.vim runtime/plugin/manpager.vim runtime/syntax/chicken.vim runtime/syntax/config.vim runtime/syntax/cuda.vim runtime/syntax/debchangelog.vim runtime/syntax/debcontrol.vim runtime/syntax/debsources.vim runtime/syntax/scheme.vim runtime/tutor/tutor runtime/tutor/tutor.cs runtime/tutor/tutor.cs.cp1250 runtime/tutor/tutor.cs.utf-8 runtime/tutor/tutor.el runtime/tutor/tutor.el.cp737 runtime/tutor/tutor.el.utf-8 runtime/tutor/tutor.sk runtime/tutor/tutor.sk.cp1250 runtime/tutor/tutor.sk.utf-8 runtime/tutor/tutor.tr.iso9 runtime/tutor/tutor.tr.utf-8 runtime/tutor/tutor.utf-8
diffstat 38 files changed, 770 insertions(+), 581 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.0.  Last change: 2018 Jan 31
+*autocmd.txt*   For Vim version 8.0.  Last change: 2018 Feb 09
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -33,7 +33,7 @@ files matching *.c.  You can also use au
 features, such as editing compressed files (see |gzip-example|).  The usual
 place to put autocommands is in your .vimrc or .exrc file.
 
-					*E203* *E204* *E143* *E855* *E937*
+				*E203* *E204* *E143* *E855* *E937* *E952*
 WARNING: Using autocommands is very powerful, and may lead to unexpected side
 effects.  Be careful not to destroy your text.
 - It's a good idea to do some testing on an expendable copy of a file first.
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 8.0.  Last change: 2018 Jan 28
+*eval.txt*	For Vim version 8.0.  Last change: 2018 Feb 09
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -5936,8 +5936,6 @@ matchaddpos({group}, {pos} [, {priority}
 <		Matches added by |matchaddpos()| are returned by
 		|getmatches()| with an entry "pos1", "pos2", etc., with the
 		value a list like the {pos} item.
-		These matches cannot be set via |setmatches()|, however they
-		can still be deleted by |clearmatches()|.
 
 matcharg({nr})							*matcharg()*
 		Selects the {nr} match item, as set with a |:match|,
--- a/runtime/doc/filetype.txt
+++ b/runtime/doc/filetype.txt
@@ -1,4 +1,4 @@
-*filetype.txt*  For Vim version 8.0.  Last change: 2017 Dec 05
+*filetype.txt*  For Vim version 8.0.  Last change: 2018 Feb 04
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -602,51 +602,17 @@ MANPAGER				      *manpager.vim*
 The :Man command allows you to turn Vim into a manpager (that syntax highlights
 manpages and follows linked manpages on hitting CTRL-]).
 
-Tested on:
-
-  - Linux
-  - Mac OS
-  - FreeBSD
-  - OpenBSD
-  - Cygwin
-  - Win 10 under Bash
-
-Untested:
-
-  - Amiga OS
-  - BeOS
-  - OS/2
-
-If man sets the $MAN_PN environment variable, like man-db, the most common
-implementation on Linux, then the "env MAN_PN=1 " part below should NOT be
-set, that is, the "env MAN_PN=1" should be omitted! Otherwise, the Vim 
-manpager does not correctly recognize manpages whose title contains a capital 
-letter. See the discussion on
-
-  https://groups.google.com/forum/#!topic/vim_dev/pWZmt_7GkxI
-
 For bash,zsh,ksh or dash, add to the config file (.bashrc,.zshrc, ...)
 
-	export MANPAGER="env MAN_PN=1 vim -M +MANPAGER -"
+	export MANPAGER="vim -M +MANPAGER -"
 
 For (t)csh, add to the config file
 
-	setenv MANPAGER "env MAN_PN=1 vim -M +MANPAGER -"
+	setenv MANPAGER "vim -M +MANPAGER -"
 
 For fish, add to the config file
 
-	set -x MANPAGER "env MAN_PN=1 vim -M +MANPAGER -"
-
-On OpenBSD:
-
-        export MANPAGER="env MAN_PN=1 vim -M +MANPAGER"
-
-If you experience still issues on manpages whose titles do not contain capital
-letters, then try adding MANPATH=${MANPATH} after MAN_PN=1. If your manpages do
-not show up localized, then try adding, LANGUAGE=${LANG} after MAN_PN=1. See
-
-  https://github.com/vim/vim/issues/1002
-
+	set -x MANPAGER "vim -M +MANPAGER -"
 
 PDF							*ft-pdf-plugin*
 
@@ -669,7 +635,7 @@ By default the following options are set
 	setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8
 
 To disable this behaviour, set the following variable in your vimrc: >
-	
+
 	let g:python_recommended_style = 0
 
 
--- a/runtime/doc/if_pyth.txt
+++ b/runtime/doc/if_pyth.txt
@@ -1,4 +1,4 @@
-*if_pyth.txt*   For Vim version 8.0.  Last change: 2018 Jan 28
+*if_pyth.txt*   For Vim version 8.0.  Last change: 2018 Jan 30
 
 
 		  VIM REFERENCE MANUAL    by Paul Moore
@@ -823,14 +823,14 @@ To avoid loading the dynamic library, on
 python support: >
 	if has('python_compiled')
 	  echo 'compiled with Python 2.x support'
-	  if has('python_dynamic
-	    echo 'Python 2.x dynamically loaded
+	  if has('python_dynamic')
+	    echo 'Python 2.x dynamically loaded'
 	  endif
 	endif
   	if has('python3_compiled')
 	  echo 'compiled with Python 3.x support'
-	  if has('python3_dynamic
-	    echo 'Python 3.x dynamically loaded
+	  if has('python3_dynamic')
+	    echo 'Python 3.x dynamically loaded'
 	  endif
 	endif
 
--- a/runtime/doc/message.txt
+++ b/runtime/doc/message.txt
@@ -1,4 +1,4 @@
-*message.txt*   For Vim version 8.0.  Last change: 2017 Oct 14
+*message.txt*   For Vim version 8.0.  Last change: 2018 Feb 04
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -76,7 +76,7 @@ See `:messages` above.
 LIST OF MESSAGES
 			*E222* *E228* *E232* *E256* *E293* *E298* *E304* *E317*
 			*E318* *E356* *E438* *E439* *E440* *E316* *E320* *E322*
-			*E323* *E341* *E473* *E570* *E685*  >
+			*E323* *E341* *E473* *E570* *E685* *E950*  >
   Add to read buffer
   makemap: Illegal mode
   Cannot create BalloonEval with both message and callback
@@ -97,6 +97,7 @@ LIST OF MESSAGES
   Internal error
   Internal error: {function}
   fatal error in cs_manage_matches
+  Invalid count for del_bytes(): {N}
 
 This is an internal error.  If you can reproduce it, please send in a bug
 report. |bugs|
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 8.0.  Last change: 2017 Dec 21
+*options.txt*	For Vim version 8.0.  Last change: 2018 Feb 03
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1,4 +1,4 @@
-*pattern.txt*   For Vim version 8.0.  Last change: 2017 Jun 05
+*pattern.txt*   For Vim version 8.0.  Last change: 2018 Feb 04
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -905,7 +905,7 @@ An ordinary atom can be:
 	becomes invalid.  Vim doesn't automatically update the matches.
 	Similar to moving the cursor for "\%#" |/\%#|.
 
-						*/\%l* */\%>l* */\%<l*
+						*/\%l* */\%>l* */\%<l* *E951*
 \%23l	Matches in a specific line.
 \%<23l	Matches above a specific line (lower line number).
 \%>23l	Matches below a specific line (higher line number).
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -1,4 +1,4 @@
-*quickref.txt*  For Vim version 8.0.  Last change: 2017 Nov 21
+*quickref.txt*  For Vim version 8.0.  Last change: 2018 Jan 31
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -1,4 +1,4 @@
-*starting.txt*  For Vim version 8.0.  Last change: 2018 Jan 27
+*starting.txt*  For Vim version 8.0.  Last change: 2018 Feb 09
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1010,14 +1010,13 @@ Vi compatible default value ~
 When Vim starts, the 'compatible' option is on.  This will be used when Vim
 starts its initializations.  But as soon as:
 - a user vimrc file is found, or
-- a vimrc file in the current directory, or
+- a vimrc file in the current directoryis found, or
 - the "VIMINIT" environment variable is set, or
 - the "-N" command line argument is given, or
 - the "--clean" command line argument is given, or
-  even when no vimrc file exists.
 - the |defaults.vim| script is loaded, or
-- gvimrc file was found,
-then it will be set to 'nocompatible'.
+- a gvimrc file was found,
+then the option will be set to 'nocompatible'.
 
 Note that this does NOT happen when a system-wide vimrc file was found.
 
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 8.0.  Last change: 2018 Jan 27
+*syntax.txt*	For Vim version 8.0.  Last change: 2018 Jan 31
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2779,13 +2779,10 @@ Ruby syntax will perform spellchecking o
 
 SCHEME						*scheme.vim* *ft-scheme-syntax*
 
-By default only R5RS keywords are highlighted and properly indented.
-
-MzScheme-specific stuff will be used if b:is_mzscheme or g:is_mzscheme
-variables are defined.
-
-Also scheme.vim supports keywords of the Chicken Scheme->C compiler.  Define
-b:is_chicken or g:is_chicken, if you need them.
+By default only R7RS keywords are highlighted and properly indented.
+
+scheme.vim also supports extensions of the CHICKEN Scheme->C compiler.
+Define b:is_chicken or g:is_chicken, if you need them.
 
 
 SDL						*sdl.vim* *ft-sdl-syntax*
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -785,7 +785,9 @@
 'pvh'	options.txt	/*'pvh'*
 'pvw'	options.txt	/*'pvw'*
 'pythondll'	options.txt	/*'pythondll'*
+'pythonhome'	options.txt	/*'pythonhome'*
 'pythonthreedll'	options.txt	/*'pythonthreedll'*
+'pythonthreehome'	options.txt	/*'pythonthreehome'*
 'pyx'	options.txt	/*'pyx'*
 'pyxversion'	options.txt	/*'pyxversion'*
 'qe'	options.txt	/*'qe'*
@@ -3664,6 +3666,7 @@ Cmd-event	autocmd.txt	/*Cmd-event*
 CmdUndefined	autocmd.txt	/*CmdUndefined*
 Cmdline	cmdline.txt	/*Cmdline*
 Cmdline-mode	cmdline.txt	/*Cmdline-mode*
+CmdlineChanged	autocmd.txt	/*CmdlineChanged*
 CmdlineEnter	autocmd.txt	/*CmdlineEnter*
 CmdlineLeave	autocmd.txt	/*CmdlineLeave*
 CmdwinEnter	autocmd.txt	/*CmdwinEnter*
@@ -3688,6 +3691,7 @@ Dictionaries	eval.txt	/*Dictionaries*
 Dictionary	eval.txt	/*Dictionary*
 Dictionary-function	eval.txt	/*Dictionary-function*
 Digraphs	digraph.txt	/*Digraphs*
+DirChanged	autocmd.txt	/*DirChanged*
 E	motion.txt	/*E*
 E10	message.txt	/*E10*
 E100	diff.txt	/*E100*
@@ -4577,6 +4581,9 @@ E947	terminal.txt	/*E947*
 E948	terminal.txt	/*E948*
 E949	editing.txt	/*E949*
 E95	message.txt	/*E95*
+E950	message.txt	/*E950*
+E951	pattern.txt	/*E951*
+E952	autocmd.txt	/*E952*
 E96	diff.txt	/*E96*
 E97	diff.txt	/*E97*
 E98	diff.txt	/*E98*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.0.  Last change: 2018 Jan 28
+*todo.txt*      For Vim version 8.0.  Last change: 2018 Feb 09
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -54,6 +54,8 @@ Terminal emulator window:
   with the expected screenshot.  Set t_Co to 256.
 
 +channel:
+- get_job_options() isn't clear about what causes an error, often just returns
+  "invalid argument".
 - Add a separate timeout for opening a socket.  Currently it's fixed at 50
   msec, which is too small for a remote connection. (tverniquet, #2130)
 - Try out background make plugin: 
@@ -127,6 +129,8 @@ Regexp problems:
   Another one: echom matchstr(" sdfsfsf\n sfdsdfsdf",'[^\n]*')
   (2017 May 15, #1252)
 
+Use vim_clear() in more places, instead of vim_free() and assigning NULL.
+
 Include a few color schemes, based on popularity:
 http://www.vim.org/scripts/script_search_results.php?keywords=&script_type=color+scheme&order_by=rating&direction=descending&search=search
 http://vimawesome.com/?q=tag:color-scheme
@@ -146,77 +150,23 @@ Include solarized color scheme?, it does
 Reproducible:
     invalid memory access in regexp with zero-width.
 	reproduced by Dominique, 2017 Dec 23
-    heap-use-after-free in win_equal_rec (#2467)
-        au* 0 vs¡
-	ar0
-	arga
-	al
-	al
-Patch to fix using freed memory. (Christian Brabandt, 2018 Jan 6, #2467)
-
-Patch for nsis runtime files. (Ken Takata, 2018 Jan 25)
-
-Patch for scheme runtime files (new version) (Evan Hanson, 2018 Jan 26)
-
-Patch to turn tests into new style. (Yegappan, 2017 Dec 29, #2509)
-
-Patch to fix crash in rubyf. (W, #2512) fixes #2511
-
-Updates for Debian runtime files. (James McCoy, 2018 Jan 7)
-
-Crash when calling term_start() with empty command on windows. (Wang Shidong,
-2018 Dec 27, #2501)
-
-Patch to improve DirectX rendering. (Ken Takata, 2018 Jan 18, #2560 fixes
-#2401)
-
-Endless loop invovlving gui_mch_stop_blink(). (zdohnal, 2018 Jan 11)
-
-Patch to add 'pythonhome' and 'pythonthreehome' options. (Kazuki Sakamoto,
-2016 Nov 21, #1266)
 
 "silent! try" doesn't restore emsg_silent when an exception is thrown.
 (Ben Reilly, 2018 Jan 5, #2531)  Possible solution by Christian Brabandt, 2018
 Jan 6.
 
-Patch to fix ex mode buffering output. (Brian M. Carlson, 2018 Jan 8, #2537)
-
-Patch for config.vim syntax file. (James McCoy, 2018 Jan 28, maintainer didn't
-respond).
-
-Patch to add support for clojure script filetype detection. (David Burgin,
-2018 Jan 20, #257)
-
-Patch to implement the DirChanged autocmd event. (Andy Massimino, 2018 Jan 9,
-replaces #888)
-
-Patch to fix not adding a slash after :find completion. (Genki Sky, 2018 Jan
-10)
-
-Patch for man.vim, fix for Mac. (SungHyun Nam, 2018 Jan 8, #2488)
-Update Jan 10.
-
-Patch to fix illegal memory access in del_bytes(). (Christian Brabandt, 2018
-Jan 2, #2466)
-
-Recursive use of alist_add() (Christian Brabandt, 2018 Jan 6, #2472)
-
-patch 1218 breaks etags. (zdohnal, 2018 Jan 5)
+Mode message isn't updated on vertical split. (Alexei Averchenko, 2018 Feb 2,
+#2611)
 
 Errors found with random data:
     heap-buffer-overflow in alist_add (#2472)
-    heap-buffer-overflow in del_bytes (#2466)
 
 Compiler warnings (geeknik, 2017 Oct 26):
 - signed integer overflow in do_sub() (#2249)
 - signed integer overflow in get_address() (#2248)
 - signed integer overflow in getdecchrs() (#2254)
-- signed integer overflow in nfa_regatom() (#2251)
-    patch by Christian Brabandt, 2018 Jan 8
 - undefined left shift in get_string_tv() (#2250)
 
-Patch to fix CursorIM highlighting on Windows. (Ken Takata, 2018 Jan 18)
-
 Cursor in wrong screen line with WinBar. (#2362)
 Fix by Christian Brabandt (2018 Jan 2)
 
@@ -224,9 +174,9 @@ balloon_show() does not work properly in
 20, #2481)
 Also see #2352, want better control over balloon, perhaps set the position.
 
-Patch to make installer faster. (Ken Takata, 2018 Jan 3, #2522)
-
 Patch to support hunspell. (Matej Cepl, Jan 2018, #2500)
+Patch to include hunspell support. (Matej Cepl, 2017 Dec 26, #845)
+Doesn't work on Windows yet.
 
 Cursor in status line after search. (#2530)
 
@@ -237,28 +187,33 @@ Alternative manpager.vim. (Enno, 2018 Ja
 Patch for minimum width of completion popup menu. (Christian Brabandt, 2018
 Jan 3, #2314)
 
+Patch to redraw instead of scroll for terminal window. (Ken Takata, #2010)
+
+Patch to add "user_data" to completion items. (Ben Jackson, 2018 Feb 1, #2608,
+closes #2508)
+
+Patch to add TextChangedP, text changed while popup menu is visible. (Prabir
+Shrestha, 2018 Jan 28, test added by Christian Brabandt)
+
 When using :packadd files under "later" are not used, which is inconsistent
 with packages under "start". (xtal8, #1994)
 
-Patch to make D&D work between 32 bit app and 64 bit Vim. (Ken Takata, #2504)
-
-Patch to fix invalid return value with backwards searchpair. (Daniel Hahler,
-2018 Jan 15, #2552)
-
 Column number is wrong whsn using 'linebreak' and 'wrap'. (Keith Smiley, 2018
 Jan 15, #2555)
 
-Patch to remove redundant "if". (Dominique Pelle, 2018 Jan 14)
+Patch to add getjumplist(). (Yegappan Lakshmanan, 2018 Feb 2, #2609)
 
 Serbian translations. (Peseic, 2018 Jan 17)
 
+Patch for problem with restoring screen on Windows. (Nobuhiro Takasaki, 2015
+Sep 10) Update 2018 Jan 4  #2575
+Alternate change by Ken Takata.
+
 Check argument of systemlist(). (Pavlov)
 
 Patch to parse ":line" in tags file and use it for search. (Daniel Hahler,
 #2546)
 
-Patch to fix illegal memory access. (Christian Brabandt,  2018 Jan 6, #2523)
-
 When 'inchsearch' and 'hlsearch' are set /\v highlights everything.
 Also see #2337
 
@@ -282,10 +237,16 @@ ch_sendraw() with long string does not t
 a deadlock if the reading side is waiting for the write to finish. (Nate
 Bosch, 2018 Jan 13, #2548)
 
+User dictionary ~/.vim/spell/lang.utf-8.add not used for spell checking until a
+word is re-added to it. (Matej Cepl, 2018 Feb 6)
+
 Problem with mouse scroll in tmux. (fcying, #2419)  Might be caused by patch
-8.0.1309.
-
-Des setting 'cursorline' cause syntax highlighting to slow down?  Perhaps is
+8.0.1309.  Removing "held_button = MOUSE_RELEASE;" helps. (2018 Feb 5)
+
+Patch for 24 bit color support in MS-Windows console, using vcon. (Nobuhiro
+Takasaki, Ken Takata, 2017 Oct 1, #2060).
+
+Does setting 'cursorline' cause syntax highlighting to slow down?  Perhaps is
 mess up the cache?  (Mike Lee Williams, 2018 Jan 27, #2539)
 
 Fold at end of the buffer behaves inconsistently. (James McCoy, 2017 Oct 9)
@@ -300,14 +261,11 @@ Using 'wildignore' also applies to liter
 directory (Paulo Marcel Coelho Arabic, 2017 Oct 30, #2266)
 Also see #1689.
 
-Patch for 24 bit color support in MS-Windows console, using vcon. (Nobuhiro
-Takasaki, Ken Takata, 2017 Oct 1, #2060).
-
 ml_get error when using a Python. (Yggdroot, 2017 Jun 1, #1737)
 Lemonboy can reproduce (2017 Jun 5)
 
 When 'virtualedit' is "all" and 'cursorcolumn' is set, the wrong column may be
-highlighted. (van-debugger, 2018 Jan 23, #2576)
+highlighted. (van-de-bugger, 2018 Jan 23, #2576)
 
 Patch to add winlayout() function. (Yegappan Lakshmanan, 2018 Jan 4)
 
@@ -372,6 +330,9 @@ always nested.
 
 matchit hasn't been maintained for a long time.  #955.
 
+Patch to add variable name after "scope add". (Eddie Lebow, 2018 Feb 7, #2620)
+Maybe not needed?
+
 Problem with 'delcombine'. (agguser, 2017 Nov 10, #2313)
 
 MS-Windows: buffer completion doesn't work when using backslash (or slash)
@@ -416,9 +377,6 @@ 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.
 
-Patch to include hunspell support. (Matej Cepl, 2017 Dec 26, #845)
-Doesn't work on Windows yet.
-
 Refactored HTML indent file. (Michael Lee, #1821)
 
 Test_writefile_fails_conversion failure on Solaris because if different iconv
@@ -1072,10 +1030,6 @@ Update Aug 14.
 When using --remote-tab on MS-Windows 'encoding' hasn't been initialized yet,
 the file name ends up encoded wrong. (Raul Coronado, 2015 Dec 21)
 
-Patch for problem with restoring screen on Windows. (Nobuhiro Takasaki, 2015
-Sep 10) Update 2018 Jan 4  #2575
-Alternate change by Ken Takata.
-
 Example in editing.txt uses $HOME with the expectation that it ends in a
 slash.  For me it does, but perhaps not for everybody.  Add a function that
 inserts a slash when needed?  pathconcat(dir, path) (Thilo Six, 2015 Aug 12)
@@ -1122,9 +1076,6 @@ Doesn't work completely (Dominique Orban
 
 Patch to add a "literal" argument to bufnr().  (Olaf Dabrunz, 2015 Aug 4)
 
-Cannot execute the shell when it's in a directory with a space.
-Issue #459.
-
 When a session file is created and there are "nofile" buffers, these are not
 filled.  Need to trigger BufReadCmd autocommands.  Also handle deleting the
 initial empty buffer better. (ZyX, 2015 March 8)
@@ -4623,8 +4574,6 @@ 8   When editing "tt.gz", which is in DO
     Error	    - When an error happens
     NormalEnter	    - Entering Normal mode
     ReplaceEnter    - Entering Replace mode
-    CmdEnter	    - Entering Cmdline mode (with type of cmdline to allow
-			different mapping)
     VisualEnter	    - Entering Visual mode
     *Leave	    - Leaving a mode (in pair with the above *Enter)
     VimLeaveCheck    - Before Vim decides to exit, so that it can be cancelled
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/chicken.vim
@@ -0,0 +1,51 @@
+" CHICKEN-specific Vim customizations
+" Last Change: 2018-01-06
+" Author: Evan Hanson <evhan@foldling.org>
+" Maintainer: Evan Hanson <evhan@foldling.org>
+" URL: https://foldling.org/vim/ftplugin/chicken.vim
+" Notes: These are supplemental settings, to be loaded after the core
+" Scheme ftplugin file (ftplugin/scheme.vim). Enable it by setting
+" b:is_chicken=1 and filetype=scheme.
+
+if !exists('b:did_scheme_ftplugin')
+  finish
+endif
+
+setl keywordprg=chicken-doc
+
+setl lispwords+=and-let*
+setl lispwords+=begin-for-syntax
+setl lispwords+=compiler-typecase
+setl lispwords+=condition-case
+setl lispwords+=define-compiler-syntax
+setl lispwords+=define-constant
+setl lispwords+=define-external
+setl lispwords+=define-for-syntax
+setl lispwords+=define-inline
+setl lispwords+=define-record
+setl lispwords+=define-record-printer
+setl lispwords+=define-specialization
+setl lispwords+=define-syntax-rule
+setl lispwords+=eval-when
+setl lispwords+=fluid-let
+setl lispwords+=handle-exceptions
+setl lispwords+=let-compiler-syntax
+setl lispwords+=let-optionals
+setl lispwords+=let-optionals*
+setl lispwords+=letrec-values
+setl lispwords+=match
+setl lispwords+=match-lambda
+setl lispwords+=match-lambda*
+setl lispwords+=match-let
+setl lispwords+=match-let*
+setl lispwords+=module
+setl lispwords+=receive
+setl lispwords+=select
+setl lispwords+=set!-values
+
+let b:undo_ftplugin = b:undo_ftplugin . ' keywordprg<'
+
+if exists('g:loaded_matchit') && !exists('b:match_words')
+  let b:match_words = '#>:<#'
+  let b:undo_ftplugin = b:undo_ftplugin . ' | unlet! b:match_words'
+endif
--- a/runtime/ftplugin/debchangelog.vim
+++ b/runtime/ftplugin/debchangelog.vim
@@ -1,11 +1,11 @@
 " Vim filetype plugin file (GUI menu, folding and completion)
 " Language:     Debian Changelog
-" Maintainer:   Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
+" Maintainer:   Debian Vim Maintainers
 " Former Maintainers:   Michael Piefel <piefel@informatik.hu-berlin.de>
 "                       Stefano Zacchiroli <zack@debian.org>
-" Last Change:  2014-01-31
+" Last Change:  2018-01-06
 " License:      Vim License
-" URL:          http://hg.debian.org/hg/pkg-vim/vim/file/unstable/runtime/ftplugin/debchangelog.vim
+" URL:          https://salsa.debian.org/vim-team/vim-debian/blob/master/ftplugin/debchangelog.vim
 
 " Bug completion requires apt-listbugs installed for Debian packages or
 " python-launchpadlib installed for Ubuntu packages
--- a/runtime/ftplugin/debcontrol.vim
+++ b/runtime/ftplugin/debcontrol.vim
@@ -1,9 +1,9 @@
 " Vim filetype plugin file (GUI menu and folding)
 " Language:     Debian control files
-" Maintainer:   Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
+" Maintainer:   Debian Vim Maintainers
 " Former Maintainer:    Pierre Habouzit <madcoder@debian.org>
-" Last Change:  2008-03-08
-" URL:          http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/ftplugin/debcontrol.vim
+" Last Change:  2018-01-06
+" URL:          https://salsa.debian.org/vim-team/vim-debian/blob/master/ftplugin/debcontrol.vim
 
 " Do these settings once per buffer
 if exists("b:did_ftplugin")
--- a/runtime/ftplugin/scheme.vim
+++ b/runtime/ftplugin/scheme.vim
@@ -1,45 +1,62 @@
-" Vim filetype plugin
-" Language:      Scheme
-" Maintainer:    Sergey Khorev <sergey.khorev@gmail.com>
-" URL:		 http://sites.google.com/site/khorser/opensource/vim
-" Original author:    Dorai Sitaram <ds26@gte.com>
-" Original URL:		 http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html
-" Last Change:   Oct 23, 2013
+" Vim filetype plugin file
+" Language: Scheme (R7RS)
+" Last Change: 2018-01-20
+" Author: Evan Hanson <evhan@foldling.org>
+" Maintainer: Evan Hanson <evhan@foldling.org>
+" Previous Maintainer: Sergey Khorev <sergey.khorev@gmail.com>
+" URL: https://foldling.org/vim/ftplugin/scheme.vim
 
-" Only do this when not done yet for this buffer
-if exists("b:did_ftplugin")
+if exists('b:did_ftplugin')
   finish
 endif
 
-" Don't load another plugin for this buffer
-let b:did_ftplugin = 1
+let s:cpo = &cpo
+set cpo&vim
 
-" Copy-paste from ftplugin/lisp.vim
-setl comments=:;
-setl define=^\\s*(def\\k*
-setl formatoptions-=t
-setl iskeyword+=+,-,*,/,%,<,=,>,:,$,?,!,@-@,94
 setl lisp
+setl comments=:;;;;,:;;;,:;;,:;,sr:#\|,ex:\|#
 setl commentstring=;%s
+setl define=^\\s*(def\\k*
+setl iskeyword=33,35-39,42-43,45-58,60-90,94,95,97-122,126
 
-setl comments^=:;;;,:;;,sr:#\|,mb:\|,ex:\|#
+let b:undo_ftplugin = 'setl lisp< comments< commentstring< define< iskeyword<'
 
-" Scheme-specific settings
-if exists("b:is_mzscheme") || exists("is_mzscheme")
-    " improve indenting
-    setl iskeyword+=#,%,^
-    setl lispwords+=module,parameterize,let-values,let*-values,letrec-values
-    setl lispwords+=define-values,opt-lambda,case-lambda,syntax-rules,with-syntax,syntax-case
-    setl lispwords+=define-signature,unit,unit/sig,compund-unit/sig,define-values/invoke-unit/sig
+setl lispwords=begin
+setl lispwords+=case
+setl lispwords+=case-lambda
+setl lispwords+=cond
+setl lispwords+=cond-expand
+setl lispwords+=define
+setl lispwords+=define-record-type
+setl lispwords+=define-syntax
+setl lispwords+=define-values
+setl lispwords+=do
+setl lispwords+=guard
+setl lispwords+=import
+setl lispwords+=lambda
+setl lispwords+=let
+setl lispwords+=let*
+setl lispwords+=let*-values
+setl lispwords+=let-syntax
+setl lispwords+=let-values
+setl lispwords+=letrec
+setl lispwords+=letrec*
+setl lispwords+=letrec-syntax
+setl lispwords+=parameterize
+setl lispwords+=set!
+setl lispwords+=syntax-rules
+setl lispwords+=unless
+setl lispwords+=when
+
+let b:undo_ftplugin = b:undo_ftplugin . ' lispwords<'
+
+let b:did_scheme_ftplugin = 1
+
+if exists('b:is_chicken') || exists('g:is_chicken')
+  exe 'ru! ftplugin/chicken.vim'
 endif
 
-if exists("b:is_chicken") || exists("is_chicken")
-    " improve indenting
-    setl iskeyword+=#,%,^
-    setl lispwords+=let-optionals,let-optionals*,declare
-    setl lispwords+=let-values,let*-values,letrec-values
-    setl lispwords+=define-values,opt-lambda,case-lambda,syntax-rules,with-syntax,syntax-case
-    setl lispwords+=cond-expand,and-let*,foreign-lambda,foreign-lambda*
-endif
-
-let b:undo_ftplugin = "setlocal comments< define< formatoptions< iskeyword< lispwords< lisp< commentstring<"
+unlet b:did_scheme_ftplugin
+let b:did_ftplugin = 1
+let &cpo = s:cpo
+unlet s:cpo
--- a/runtime/indent/scheme.vim
+++ b/runtime/indent/scheme.vim
@@ -1,11 +1,14 @@
 " Vim indent file
-" Language:	Scheme
-" Maintainer:	Sergey Khorev <sergey.khorev@gmail.com>
-" Last Change:	2005 Jun 24
+" Language: Scheme
+" Last Change: 2018 Jan 31
+" Maintainer: Evan Hanson <evhan@foldling.org>
+" Previous Maintainer: Sergey Khorev <sergey.khorev@gmail.com>
+" URL: https://foldling.org/vim/indent/scheme.vim
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
   finish
 endif
 
+" Use the Lisp indenting
 runtime! indent/lisp.vim
--- a/runtime/plugin/manpager.vim
+++ b/runtime/plugin/manpager.vim
@@ -1,29 +1,30 @@
 " Vim plugin for using Vim as manpager.
 " Maintainer: Enno Nagel <ennonagel+vim@gmail.com>
-" Last Change: 2017 November 07
+" Last Change: 2018 Feb 04
 
-" $MAN_PN is supposed to be set by MANPAGER, see ":help manpager.vim".
-if empty($MAN_PN)
-  finish
-endif
+command! -nargs=0 MANPAGER call s:ManPager() | delcommand MANPAGER
 
-command! -nargs=0 MANPAGER call s:MANPAGER() | delcommand MANPAGER
-
-function! s:MANPAGER()
-  let page_pattern = '\v\w[-_.:0-9A-Za-z]*'
-  let sec_pattern = '\v\w+%(\+\w+)*'
-  let pagesec_pattern = '\v(' . page_pattern . ')\((' . sec_pattern . ')\)'
+function! s:ManPager()
+  set nocompatible
+  if exists('+viminfofile')
+    set viminfofile=NONE
+  endif
+  set noswapfile 
 
-  if $MAN_PN is '1'
-    let manpage = tolower(matchstr( getline(nextnonblank(1)), '^' . pagesec_pattern ))
-  else
-    let manpage = expand($MAN_PN)
-  endif
+  setlocal ft=man
+  runtime ftplugin/man.vim
+  setlocal buftype=nofile bufhidden=hide iskeyword+=: modifiable
+
+  " Emulate 'col -b'
+  silent keepj keepp %s/\v(.)\b\ze\1?//ge
 
-  let page_sec = matchlist(manpage, '^' . pagesec_pattern  . '$')
-
-  bwipe!
+  " Remove empty lines above the header
+  call cursor(1, 1)
+  let n = search(".*(.*)", "c")
+  if n > 1
+    exe "1," . n-1 . "d"
+  endif
+  setlocal nomodified readonly
 
-  setlocal filetype=man
-  exe 'Man' page_sec[2] page_sec[1]
+  syntax on
 endfunction
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/chicken.vim
@@ -0,0 +1,77 @@
+" Vim syntax file
+" Language: Scheme (CHICKEN)
+" Last Change: 2018 Jan 31
+" Author: Evan Hanson <evhan@foldling.org>
+" Maintainer: Evan Hanson <evhan@foldling.org>
+" URL: https://foldling.org/vim/syntax/chicken.vim
+" Notes: This is supplemental syntax, to be loaded after the core Scheme
+" syntax file (syntax/scheme.vim). Enable it by setting b:is_chicken=1
+" and filetype=scheme.
+
+" Only to be used on top of the Scheme syntax.
+if !exists('b:did_scheme_syntax')
+  finish
+endif
+
+" Lighten parentheses.
+hi def link schemeParentheses Comment
+
+" foo#bar
+syn match schemeExtraSyntax /[^ #'`\t\n()\[\]"|;]\+#[^ '`\t\n()\[\]"|;]\+/
+
+" ##foo#bar
+syn match schemeExtraSyntax /##[^ '`\t\n()\[\]"|;]\+/
+
+" Heredocs.
+syn region schemeString start=/#<[<#]\s*\z(.*\)/ end=/^\z1$/
+
+" Keywords.
+syn match schemeKeyword /#[!:][a-zA-Z0-9!$%&*+-./:<=>?@^_~#]\+/
+syn match schemeKeyword /[a-zA-Z0-9!$%&*+-./:<=>?@^_~#]\+:\>/
+
+" C/C++ syntax.
+let s:c = globpath(&rtp, 'syntax/cpp.vim', 0, 1)
+if len(s:c)
+  exe 'syn include @c ' s:c[0]
+  syn region c matchgroup=schemeComment start=/#>/ end=/<#/ contains=@c
+endif
+
+syn keyword schemeSyntax define-record
+
+syn keyword schemeLibrarySyntax declare
+syn keyword schemeLibrarySyntax module
+syn keyword schemeLibrarySyntax reexport
+syn keyword schemeLibrarySyntax require-library
+
+syn keyword schemeTypeSyntax -->
+syn keyword schemeTypeSyntax ->
+syn keyword schemeTypeSyntax :
+syn keyword schemeTypeSyntax assume
+syn keyword schemeTypeSyntax compiler-typecase
+syn keyword schemeTypeSyntax define-specialization
+syn keyword schemeTypeSyntax define-type
+syn keyword schemeTypeSyntax the
+
+syn keyword schemeExtraSyntax and-let*
+syn keyword schemeExtraSyntax match
+syn keyword schemeExtraSyntax match-lambda
+syn keyword schemeExtraSyntax match-lambda*
+
+syn keyword schemeSpecialSyntax define-compiler-syntax
+syn keyword schemeSpecialSyntax define-constant
+syn keyword schemeSpecialSyntax define-external
+syn keyword schemeSpecialSyntax define-inline
+syn keyword schemeSpecialSyntax foreign-code
+syn keyword schemeSpecialSyntax foreign-declare
+syn keyword schemeSpecialSyntax foreign-lambda
+syn keyword schemeSpecialSyntax foreign-lambda*
+syn keyword schemeSpecialSyntax foreign-primitive
+syn keyword schemeSpecialSyntax foreign-safe-lambda
+syn keyword schemeSpecialSyntax foreign-safe-lambda*
+syn keyword schemeSpecialSyntax foreign-value
+
+syn keyword schemeSyntaxSyntax begin-for-syntax
+syn keyword schemeSyntaxSyntax define-for-syntax
+syn keyword schemeSyntaxSyntax er-macro-transformer
+syn keyword schemeSyntaxSyntax ir-macro-transformer
+syn keyword schemeSyntaxSyntax require-library-for-syntax
--- a/runtime/syntax/config.vim
+++ b/runtime/syntax/config.vim
@@ -1,9 +1,10 @@
 " Vim syntax file
 " Language:		configure.in script: M4 with sh
-" Maintainer:	Christian Hammesr <ch@lathspell.westend.com>
-" Last Change:	2015 Jan 14
+" Former Maintainer:	Christian Hammesr <ch@lathspell.westend.com>
+" Last Change:	2018 Feb 03
 " 				(patch from Yngve Inntjore Levinsen to detect AC_MSG)
 " 				(patch from Khym Chanur to add @Spell)
+" 				(patch from James McCoy to fix paren matching)
 
 " Well, I actually even do not know much about m4. This explains why there
 " is probably very much missing here, yet !
@@ -30,8 +31,8 @@ syn keyword configspecial   cat rm eval
 syn region  configstring    start=+\z(["'`]\)+ skip=+\\\z1+ end=+\z1+ contains=@Spell
 
 " Anything inside AC_MSG_TYPE([...])  and AC_MSG_TYPE(...) is a string.
-syn region  configstring matchgroup=configfunction start="AC_MSG_[A-Z]*\ze(\[" matchgroup=configdelimiter end="\])" contains=configdelimiter,@Spell
-syn region  configstring matchgroup=configfunction start="AC_MSG_[A-Z]*\ze([^[]" matchgroup=configdelimiter end=")" contains=configdelimiter,@Spell
+syn region  configmsg matchgroup=configfunction start="AC_MSG_[A-Z]*\ze(\[" matchgroup=configdelimiter end="\])" contains=configdelimiter,@Spell
+syn region  configmsg matchgroup=configfunction start="AC_MSG_[A-Z]*\ze([^[]" matchgroup=configdelimiter end=")" contains=configdelimiter,@Spell
 
 " Define the default highlighting.
 " Only when an item doesn't have highlighting yet
@@ -45,6 +46,7 @@ hi def link confignumber    Number
 hi def link configkeyword   Keyword
 hi def link configspecial   Special
 hi def link configstring    String
+hi def link configmsg       String
 
 
 let b:current_syntax = "config"
--- a/runtime/syntax/cuda.vim
+++ b/runtime/syntax/cuda.vim
@@ -1,15 +1,15 @@
 " Vim syntax file
 " Language:	CUDA (NVIDIA Compute Unified Device Architecture)
 " Maintainer:	Timothy B. Terriberry <tterribe@users.sourceforge.net>
-" Last Change:	2007 Oct 13
+" Last Change:	2018 Feb 06
 
 " quit when a syntax file was already loaded
 if exists("b:current_syntax")
   finish
 endif
 
-" Read the C syntax to start with
-runtime! syntax/c.vim
+" Read the C++ syntax to start with
+runtime! syntax/cpp.vim
 
 " CUDA extentions
 syn keyword cudaStorageClass	__device__ __global__ __host__
--- a/runtime/syntax/debchangelog.vim
+++ b/runtime/syntax/debchangelog.vim
@@ -1,10 +1,10 @@
 " Vim syntax file
 " Language:    Debian changelog files
-" Maintainer:  Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
+" Maintainer:  Debian Vim Maintainers
 " Former Maintainers: Gerfried Fuchs <alfie@ist.org>
 "                     Wichert Akkerman <wakkerma@debian.org>
-" Last Change: 2017 Apr 23
-" URL: https://anonscm.debian.org/cgit/pkg-vim/vim.git/plain/runtime/syntax/debchangelog.vim
+" Last Change: 2018 Jan 06
+" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim
 
 " Standard syntax initialization
 if exists("b:current_syntax")
@@ -21,7 +21,7 @@ let s:binNMU='binary-only=yes'
 syn match debchangelogName	contained "^[[:alnum:]][[:alnum:].+-]\+ "
 exe 'syn match debchangelogFirstKV	contained "; \('.s:urgency.'\|'.s:binNMU.'\)"'
 exe 'syn match debchangelogOtherKV	contained ", \('.s:urgency.'\|'.s:binNMU.'\)"'
-syn match debchangelogTarget	contained "\v %(frozen|unstable|sid|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|squeeze-%(backports%(-sloppy)=|volatile|lts|security)|%(wheezy|jessie)%(-backports%(-sloppy)=|-security)=|stretch%(-backports|-security)=|%(devel|precise|trusty|vivid|wily|xenial|yakkety|zesty|artful)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
+syn match debchangelogTarget	contained "\v %(frozen|unstable|sid|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|squeeze-%(backports%(-sloppy)=|volatile|lts|security)|%(wheezy|jessie)%(-backports%(-sloppy)=|-security)=|stretch%(-backports|-security)=|%(devel|precise|trusty|vivid|wily|xenial|yakkety|zesty|artful|bionic)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
 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/debcontrol.vim
+++ b/runtime/syntax/debcontrol.vim
@@ -1,10 +1,10 @@
 " Vim syntax file
 " Language:    Debian control files
-" Maintainer:  Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
+" Maintainer:  Debian Vim Maintainers
 " Former Maintainers: Gerfried Fuchs <alfie@ist.org>
 "                     Wichert Akkerman <wakkerma@debian.org>
-" Last Change: 2017 Nov 04
-" URL: https://anonscm.debian.org/cgit/pkg-vim/vim.git/plain/runtime/syntax/debcontrol.vim
+" Last Change: 2018 Jan 06
+" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debcontrol.vim
 
 " Standard syntax initialization
 if exists("b:current_syntax")
@@ -52,7 +52,7 @@ let s:sections = [
       \, 'devel', 'doc', 'editors', 'education', 'electronics', 'embedded'
       \, 'fonts', 'games', 'gnome', 'gnustep', 'gnu-r', 'golang', 'graphics'
       \, 'hamradio', 'haskell', 'httpd', 'interpreters', 'introspection'
-      \, 'java', 'javascript', 'kde', 'kernel', 'libs', 'libdevel', 'lisp'
+      \, 'java\%(script\)\=', 'kde', 'kernel', 'libs', 'libdevel', 'lisp'
       \, 'localization', 'mail', 'math', 'metapackages', 'misc', 'net'
       \, 'news', 'ocaml', 'oldlibs', 'otherosfs', 'perl', 'php', 'python'
       \, 'ruby', 'rust', 'science', 'shells', 'sound', 'text', 'tex'
@@ -87,44 +87,29 @@ syn match debcontrolComment "^#.*$" cont
 
 syn case ignore
 
-" List of all legal keys, in order, from deb-src-control(5)
-" Source fields
-syn match debcontrolKey contained "^\%(Source\|Maintainer\|Uploaders\|Standards-Version\|Description\|Homepage\|Bugs\|Rules-Requires-Root\): *"
-syn match debcontrolKey contained "^\%(XS-\)\=Vcs-\%(Arch\|Bzr\|Cvs\|Darcs\|Git\|Hg\|Mtn\|Svn\|Browser\): *"
-syn match debcontrolKey contained "^\%(Origin\|Section\|Priority\): *"
-syn match debcontrolKey contained "^Build-\%(Depends\|Conflicts\)\%(-Arch\|-Indep\)\=: *"
-
-" Binary fields
-syn match debcontrolKey contained "^\%(Package\%(-Type\)\=\|Architecture\|Build-Profiles\): *"
-syn match debcontrolKey contained "^\%(\%(Build-\)\=Essential\|Multi-Arch\|Tag\): *"
-syn match debcontrolKey contained "^\%(\%(Pre-\)\=Depends\|Recommends\|Suggests\|Breaks\|Enhances\|Replaces\|Conflicts\|Provides\|Built-Using\): *"
-syn match debcontrolKey contained "^\%(Subarchitecture\|Kernel-Version\|Installer-Menu-Item\): *"
-
-" User-defined fields
-syn match debcontrolKey contained "^X[SBC]\{0,3\}\%(-Private\)\=-[-a-zA-Z0-9]\+: *"
-
-syn match debcontrolDeprecatedKey contained "^\%(\%(XS-\)\=DM-Upload-Allowed\): *"
+" Handle all fields from deb-src-control(5)
 
 " Fields for which we do strict syntax checking
-syn region debcontrolStrictField start="^Architecture" end="$" contains=debcontrolKey,debcontrolArchitecture,debcontrolSpace oneline
-syn region debcontrolStrictField start="^Multi-Arch" end="$" contains=debcontrolKey,debcontrolMultiArch oneline
-syn region debcontrolStrictField start="^\%(Package\|Source\)" end="$" contains=debcontrolKey,debcontrolName oneline
-syn region debcontrolStrictField start="^Priority" end="$" contains=debcontrolKey,debcontrolPriority oneline
-syn region debcontrolStrictField start="^Section" end="$" contains=debcontrolKey,debcontrolSection oneline
-syn region debcontrolStrictField start="^\%(XC-\)\=Package-Type" end="$" contains=debcontrolKey,debcontrolPackageType oneline
-syn region debcontrolStrictField start="^Homepage" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
-syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\)" end="$" contains=debcontrolKey,debcontrolHTTPUrl oneline keepend
-syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Svn" end="$" contains=debcontrolKey,debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend
-syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Cvs" end="$" contains=debcontrolKey,debcontrolVcsCvs oneline keepend
-syn region debcontrolStrictField start="^\%(XS-\)\=Vcs-Git" end="$" contains=debcontrolKey,debcontrolVcsGit oneline keepend
-syn region debcontrolStrictField start="^\%(XS-\)\=DM-Upload-Allowed" end="$" contains=debcontrolDeprecatedKey,debcontrolDmUpload oneline
-syn region debcontrolStrictField start="^Rules-Requires-Root" end="$" contains=debcontrolKey,debcontrolR3 oneline
-syn region debcontrolStrictField start="^\%(Build-\)\=Essential" end="$" contains=debcontrolKey,debcontrolYesNo oneline
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^Architecture: *" end="$" contains=debcontrolArchitecture,debcontrolSpace oneline
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^Multi-Arch: *" end="$" contains=debcontrolMultiArch oneline
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(Package\|Source\): *" end="$" contains=debcontrolName oneline
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^Priority: *" end="$" contains=debcontrolPriority oneline
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^Section: *" end="$" contains=debcontrolSection oneline
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(XC-\)\=Package-Type: *" end="$" contains=debcontrolPackageType oneline
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^Homepage: *" end="$" contains=debcontrolHTTPUrl oneline keepend
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(XS-\)\=Vcs-\%(Browser\|Arch\|Bzr\|Darcs\|Hg\): *" end="$" contains=debcontrolHTTPUrl oneline keepend
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(XS-\)\=Vcs-Svn: *" end="$" contains=debcontrolVcsSvn,debcontrolHTTPUrl oneline keepend
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(XS-\)\=Vcs-Cvs: *" end="$" contains=debcontrolVcsCvs oneline keepend
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(XS-\)\=Vcs-Git: *" end="$" contains=debcontrolVcsGit oneline keepend
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^Rules-Requires-Root: *" end="$" contains=debcontrolR3 oneline
+syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(Build-\)\=Essential: *" end="$" contains=debcontrolYesNo oneline
+
+syn region debcontrolStrictField matchgroup=debcontrolDeprecatedKey start="^\%(XS-\)\=DM-Upload-Allowed: *" end="$" contains=debcontrolDmUpload oneline
 
 " Catch-all for the other legal fields
-syn region debcontrolField start="^\%(\%(XSBC-Original-\)\=Maintainer\|Standards-Version\|Bugs\|Origin\|X[SB]-Python-Version\|\%(XS-\)\=Vcs-Mtn\|\%(XS-\)\=Testsuite\|Build-Profiles\|Tag\|Subarchitecture\|Kernel-Version\|Installer-Menu-Item\):" end="$" contains=debcontrolKey,debcontrolVariable,debcontrolEmail oneline
-syn region debcontrolMultiField start="^\%(Build-\%(Conflicts\|Depends\)\%(-Arch\|-Indep\)\=\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Breaks\|Enhances\|Replaces\|Conflicts\|Provides\|Built-Using\|Uploaders\|X[SBC]\{0,3\}\%(Private-\)\=-[-a-zA-Z0-9]\+\):" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable,debcontrolComment
-syn region debcontrolMultiFieldSpell start="^\%(Description\):" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contains=debcontrolKey,debcontrolEmail,debcontrolVariable,debcontrolComment,@Spell
+syn region debcontrolField matchgroup=debcontrolKey start="^\%(\%(XSBC-Original-\)\=Maintainer\|Standards-Version\|Bugs\|Origin\|X[SB]-Python-Version\|\%(XS-\)\=Vcs-Mtn\|\%(XS-\)\=Testsuite\%(-Triggers\)\=\|Build-Profiles\|Tag\|Subarchitecture\|Kernel-Version\|Installer-Menu-Item\): " end="$" contains=debcontrolVariable,debcontrolEmail oneline
+syn region debcontrolMultiField matchgroup=debcontrolKey start="^\%(Build-\%(Conflicts\|Depends\)\%(-Arch\|-Indep\)\=\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Breaks\|Enhances\|Replaces\|Conflicts\|Provides\|Built-Using\|Uploaders\|X[SBC]\{0,3\}\%(Private-\)\=-[-a-zA-Z0-9]\+\): *" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contains=debcontrolEmail,debcontrolVariable,debcontrolComment
+syn region debcontrolMultiFieldSpell matchgroup=debcontrolKey start="^Description: *" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contains=debcontrolEmail,debcontrolVariable,debcontrolComment,@Spell
 
 " Associate our matches and regions with pretty colours
 hi def link debcontrolKey           Keyword
--- a/runtime/syntax/debsources.vim
+++ b/runtime/syntax/debsources.vim
@@ -1,9 +1,9 @@
 " Vim syntax file
 " Language:     Debian sources.list
-" Maintainer:   Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
+" Maintainer:   Debian Vim Maintainers
 " Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
-" Last Change: 2017 Oct 28
-" URL: https://anonscm.debian.org/cgit/pkg-vim/vim.git/plain/runtime/syntax/debsources.vim
+" Last Change: 2018 Jan 06
+" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim
 
 " Standard syntax initialization
 if exists("b:current_syntax")
--- a/runtime/syntax/scheme.vim
+++ b/runtime/syntax/scheme.vim
@@ -1,328 +1,464 @@
 " Vim syntax file
-" Language:	Scheme (R5RS + some R6RS extras)
-" Last Change:	2016 May 23
-" Maintainer:	Sergey Khorev <sergey.khorev@gmail.com>
-" Original author:	Dirk van Deun <dirk@igwe.vub.ac.be>
+" Language: Scheme (R7RS)
+" Last Change: 2018-01-06
+" Author: Evan Hanson <evhan@foldling.org>
+" Maintainer: Evan Hanson <evhan@foldling.org>
+" Previous Author: Dirk van Deun <dirk@igwe.vub.ac.be>
+" Previous Maintainer: Sergey Khorev <sergey.khorev@gmail.com>
+" URL: https://foldling.org/vim/syntax/scheme.vim
 
-" This script incorrectly recognizes some junk input as numerals:
-" parsing the complete system of Scheme numerals using the pattern
-" language is practically impossible: I did a lax approximation.
-
-" MzScheme extensions can be activated with setting is_mzscheme variable
-
-" Suggestions and bug reports are solicited by the author.
-
-" Initializing:
-
-" quit when a syntax file was already loaded
-if exists("b:current_syntax")
+if exists('b:current_syntax')
   finish
 endif
 
-let s:cpo_save = &cpo
+let s:cpo = &cpo
 set cpo&vim
 
-syn case ignore
-
-" Fascist highlighting: everything that doesn't fit the rules is an error...
-
-syn match	schemeError	![^ \t()\[\]";]*!
-syn match	schemeError	")"
-
-" Quoted and backquoted stuff
-
-syn region schemeQuoted matchgroup=Delimiter start="['`]" end=![ \t()\[\]";]!me=e-1 contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
+syn match schemeParentheses "[^ '`\t\n()\[\]";]\+"
+syn match schemeParentheses "[)\]]"
 
-syn region schemeQuoted matchgroup=Delimiter start="['`](" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
-syn region schemeQuoted matchgroup=Delimiter start="['`]#(" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
-
-syn region schemeStrucRestricted matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
-syn region schemeStrucRestricted matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
-
-" Popular Scheme extension:
-" using [] as well as ()
-syn region schemeStrucRestricted matchgroup=Delimiter start="\[" matchgroup=Delimiter end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
-syn region schemeStrucRestricted matchgroup=Delimiter start="#\[" matchgroup=Delimiter end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
+syn match schemeIdentifier /[^ '`\t\n()\[\]"|;][^ '`\t\n()\[\]"|;]*/
 
-syn region schemeUnquote matchgroup=Delimiter start="," end=![ \t\[\]()";]!me=e-1 contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
-syn region schemeUnquote matchgroup=Delimiter start=",@" end=![ \t\[\]()";]!me=e-1 contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
-
-syn region schemeUnquote matchgroup=Delimiter start=",(" end=")" contains=ALL
-syn region schemeUnquote matchgroup=Delimiter start=",@(" end=")" contains=ALL
-
-syn region schemeUnquote matchgroup=Delimiter start=",#(" end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
-syn region schemeUnquote matchgroup=Delimiter start=",@#(" end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
-
-syn region schemeUnquote matchgroup=Delimiter start=",\[" end="\]" contains=ALL
-syn region schemeUnquote matchgroup=Delimiter start=",@\[" end="\]" contains=ALL
-
-syn region schemeUnquote matchgroup=Delimiter start=",#\[" end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
-syn region schemeUnquote matchgroup=Delimiter start=",@#\[" end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
-
-" R5RS Scheme Functions and Syntax:
-
-setlocal iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_
-
-syn keyword schemeSyntax lambda and or if cond case define let let* letrec
-syn keyword schemeSyntax begin do delay set! else =>
-syn keyword schemeSyntax quote quasiquote unquote unquote-splicing
-syn keyword schemeSyntax define-syntax let-syntax letrec-syntax syntax-rules
-" R6RS
-syn keyword schemeSyntax define-record-type fields protocol
+syn region schemeQuote matchgroup=schemeData start=/'[`']*/ end=/[ \t\n()\[\]";]/me=e-1
+syn region schemeQuote matchgroup=schemeData start=/'['`]*"/ skip=/\\[\\"]/ end=/"/
+syn region schemeQuote matchgroup=schemeData start=/'['`]*|/ skip=/\\[\\|]/ end=/|/
+syn region schemeQuote matchgroup=schemeData start=/'['`]*#\?(/ end=/)/ contains=ALLBUT,schemeQuasiquote,schemeQuasiquoteForm,schemeUnquote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster
 
-syn keyword schemeFunc not boolean? eq? eqv? equal? pair? cons car cdr set-car!
-syn keyword schemeFunc set-cdr! caar cadr cdar cddr caaar caadr cadar caddr
-syn keyword schemeFunc cdaar cdadr cddar cdddr caaaar caaadr caadar caaddr
-syn keyword schemeFunc cadaar cadadr caddar cadddr cdaaar cdaadr cdadar cdaddr
-syn keyword schemeFunc cddaar cddadr cdddar cddddr null? list? list length
-syn keyword schemeFunc append reverse list-ref memq memv member assq assv assoc
-syn keyword schemeFunc symbol? symbol->string string->symbol number? complex?
-syn keyword schemeFunc real? rational? integer? exact? inexact? = < > <= >=
-syn keyword schemeFunc zero? positive? negative? odd? even? max min + * - / abs
-syn keyword schemeFunc quotient remainder modulo gcd lcm numerator denominator
-syn keyword schemeFunc floor ceiling truncate round rationalize exp log sin cos
-syn keyword schemeFunc tan asin acos atan sqrt expt make-rectangular make-polar
-syn keyword schemeFunc real-part imag-part magnitude angle exact->inexact
-syn keyword schemeFunc inexact->exact number->string string->number char=?
-syn keyword schemeFunc char-ci=? char<? char-ci<? char>? char-ci>? char<=?
-syn keyword schemeFunc char-ci<=? char>=? char-ci>=? char-alphabetic? char?
-syn keyword schemeFunc char-numeric? char-whitespace? char-upper-case?
-syn keyword schemeFunc char-lower-case?
-syn keyword schemeFunc char->integer integer->char char-upcase char-downcase
-syn keyword schemeFunc string? make-string string string-length string-ref
-syn keyword schemeFunc string-set! string=? string-ci=? string<? string-ci<?
-syn keyword schemeFunc string>? string-ci>? string<=? string-ci<=? string>=?
-syn keyword schemeFunc string-ci>=? substring string-append vector? make-vector
-syn keyword schemeFunc vector vector-length vector-ref vector-set! procedure?
-syn keyword schemeFunc apply map for-each call-with-current-continuation
-syn keyword schemeFunc call-with-input-file call-with-output-file input-port?
-syn keyword schemeFunc output-port? current-input-port current-output-port
-syn keyword schemeFunc open-input-file open-output-file close-input-port
-syn keyword schemeFunc close-output-port eof-object? read read-char peek-char
-syn keyword schemeFunc write display newline write-char call/cc
-syn keyword schemeFunc list-tail string->list list->string string-copy
-syn keyword schemeFunc string-fill! vector->list list->vector vector-fill!
-syn keyword schemeFunc force with-input-from-file with-output-to-file
-syn keyword schemeFunc char-ready? load transcript-on transcript-off eval
-syn keyword schemeFunc dynamic-wind port? values call-with-values
-syn keyword schemeFunc scheme-report-environment null-environment
-syn keyword schemeFunc interaction-environment
-" R6RS
-syn keyword schemeFunc make-eq-hashtable make-eqv-hashtable make-hashtable
-syn keyword schemeFunc hashtable? hashtable-size hashtable-ref hashtable-set!
-syn keyword schemeFunc hashtable-delete! hashtable-contains? hashtable-update!
-syn keyword schemeFunc hashtable-copy hashtable-clear! hashtable-keys
-syn keyword schemeFunc hashtable-entries hashtable-equivalence-function hashtable-hash-function
-syn keyword schemeFunc hashtable-mutable? equal-hash string-hash string-ci-hash symbol-hash
-syn keyword schemeFunc find for-all exists filter partition fold-left fold-right
-syn keyword schemeFunc remp remove remv remq memp assp cons*
+syn region schemeQuasiquote matchgroup=schemeData start=/`['`]*/ end=/[ \t\n()\[\]";]/me=e-1
+syn region schemeQuasiquote matchgroup=schemeData start=/`['`]*#\?(/ end=/)/ contains=ALLBUT,schemeQuote,schemeQuoteForm,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster
 
-" ... so that a single + or -, inside a quoted context, would not be
-" interpreted as a number (outside such contexts, it's a schemeFunc)
-
-syn match	schemeDelimiter	!\.[ \t\[\]()";]!me=e-1
-syn match	schemeDelimiter	!\.$!
-" ... and a single dot is not a number but a delimiter
+syn region schemeUnquote matchgroup=schemeParentheses start=/,/ end=/[ `'\t\n\[\]()";]/me=e-1 contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster
+syn region schemeUnquote matchgroup=schemeParentheses start=/,@/ end=/[ `'\t\n\[\]()";]/me=e-1 contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster
+syn region schemeUnquote matchgroup=schemeParentheses start=/,(/ end=/)/ contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster
+syn region schemeUnquote matchgroup=schemeParentheses start=/,@(/ end=/)/ contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster
 
-" This keeps all other stuff unhighlighted, except *stuff* and <stuff>:
+syn region schemeQuoteForm matchgroup=schemeData start=/(/ end=/)/ contained contains=ALLBUT,schemeQuasiquote,schemeQuasiquoteForm,schemeUnquote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster
+syn region schemeQuasiquoteForm matchgroup=schemeData start=/(/ end=/)/ contained contains=ALLBUT,schemeQuote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster
 
-syn match	schemeOther	,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*,
-syn match	schemeError	,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
-
-syn match	schemeOther	"\.\.\."
-syn match	schemeError	!\.\.\.[^ \t\[\]()";]\+!
-" ... a special identifier
+syn region schemeString start=/\(\\\)\@<!"/ skip=/\\[\\"]/ end=/"/
+syn region schemeSymbol start=/\(\\\)\@<!|/ skip=/\\[\\|]/ end=/|/
 
-syn match	schemeConstant	,\*[-a-z!$%&*/:<=>?^_~0-9+.@]\+\*[ \t\[\]()";],me=e-1
-syn match	schemeConstant	,\*[-a-z!$%&*/:<=>?^_~0-9+.@]\+\*$,
-syn match	schemeError	,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
-
-syn match	schemeConstant	,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t\[\]()";],me=e-1
-syn match	schemeConstant	,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$,
-syn match	schemeError	,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
-
-" Non-quoted lists, and strings:
-
-syn region schemeStruc matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALL
-syn region schemeStruc matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALL
-
-syn region schemeStruc matchgroup=Delimiter start="\[" matchgroup=Delimiter end="\]" contains=ALL
-syn region schemeStruc matchgroup=Delimiter start="#\[" matchgroup=Delimiter end="\]" contains=ALL
-
-" Simple literals:
-syn region schemeString start=+\%(\\\)\@<!"+ skip=+\\[\\"]+ end=+"+ contains=@Spell
-
-" Comments:
-
-syn match	schemeComment	";.*$" contains=@Spell
-
-
-" Writing out the complete description of Scheme numerals without
-" using variables is a day's work for a trained secretary...
+syn match schemeNumber /\(#[dbeio]\)*[+\-]*\([0-9]\+\|inf.0\|nan.0\)\(\/\|\.\)\?[0-9+\-@\ilns]*\>/
+syn match schemeNumber /#x[+\-]*[0-9a-fA-F]\+\>/
 
-syn match	schemeOther	![+-][ \t\[\]()";]!me=e-1
-syn match	schemeOther	![+-]$!
-"
-" This is a useful lax approximation:
-syn match	schemeNumber	"[-#+.]\=[0-9][-#+/0-9a-f@i.boxesfdl]*"
-syn match	schemeError	![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t\[\]()";][^ \t\[\]()";]*!
-
-syn match	schemeBoolean	"#[tf]"
-syn match	schemeError	!#[tf][^ \t\[\]()";]\+!
+syn match schemeBoolean /#t\(rue\)\?/
+syn match schemeBoolean /#f\(alse\)\?/
 
-syn match	schemeCharacter	"#\\"
-syn match	schemeCharacter	"#\\."
-syn match       schemeError	!#\\.[^ \t\[\]()";]\+!
-syn match	schemeCharacter	"#\\space"
-syn match	schemeError	!#\\space[^ \t\[\]()";]\+!
-syn match	schemeCharacter	"#\\newline"
-syn match	schemeError	!#\\newline[^ \t\[\]()";]\+!
-
-" R6RS
-syn match schemeCharacter "#\\x[0-9a-fA-F]\+"
+syn match schemeCharacter /#\\.[^ `'\t\n\[\]()]*/
+syn match schemeCharacter /#\\x[0-9a-fA-F]\+/
 
-
-if exists("b:is_mzscheme") || exists("is_mzscheme")
-    " MzScheme extensions
-    " multiline comment
-    syn region	schemeComment start="#|" end="|#" contains=@Spell
-
-    " #%xxx are the special MzScheme identifiers
-    syn match schemeOther "#%[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
-    " anything limited by |'s is identifier
-    syn match schemeOther "|[^|]\+|"
+syn match schemeComment /;.*$/
 
-    syn match	schemeCharacter	"#\\\%(return\|tab\)"
+syn region schemeMultilineComment start=/#|/ end=/|#/ contains=schemeMultilineComment
 
-    " Modules require stmt
-    syn keyword schemeExtSyntax module require dynamic-require lib prefix all-except prefix-all-except rename
-    " modules provide stmt
-    syn keyword schemeExtSyntax provide struct all-from all-from-except all-defined all-defined-except
-    " Other from MzScheme
-    syn keyword schemeExtSyntax with-handlers when unless instantiate define-struct case-lambda syntax-case
-    syn keyword schemeExtSyntax free-identifier=? bound-identifier=? module-identifier=? syntax-object->datum
-    syn keyword schemeExtSyntax datum->syntax-object
-    syn keyword schemeExtSyntax let-values let*-values letrec-values set!-values fluid-let parameterize begin0
-    syn keyword schemeExtSyntax error raise opt-lambda define-values unit unit/sig define-signature
-    syn keyword schemeExtSyntax invoke-unit/sig define-values/invoke-unit/sig compound-unit/sig import export
-    syn keyword schemeExtSyntax link syntax quasisyntax unsyntax with-syntax
+syn region schemeForm matchgroup=schemeParentheses start="(" end=")" contains=ALLBUT,schemeUnquote,schemeDatumCommentForm,@schemeImportCluster
+syn region schemeForm matchgroup=schemeParentheses start="\[" end="\]" contains=ALLBUT,schemeUnquote,schemeDatumCommentForm,@schemeImportCluster
 
-    syn keyword schemeExtFunc format system-type current-extension-compiler current-extension-linker
-    syn keyword schemeExtFunc use-standard-linker use-standard-compiler
-    syn keyword schemeExtFunc find-executable-path append-object-suffix append-extension-suffix
-    syn keyword schemeExtFunc current-library-collection-paths current-extension-compiler-flags make-parameter
-    syn keyword schemeExtFunc current-directory build-path normalize-path current-extension-linker-flags
-    syn keyword schemeExtFunc file-exists? directory-exists? delete-directory/files delete-directory delete-file
-    syn keyword schemeExtFunc system compile-file system-library-subpath getenv putenv current-standard-link-libraries
-    syn keyword schemeExtFunc remove* file-size find-files fold-files directory-list shell-execute split-path
-    syn keyword schemeExtFunc current-error-port process/ports process printf fprintf open-input-string open-output-string
-    syn keyword schemeExtFunc get-output-string
-    " exceptions
-    syn keyword schemeExtFunc exn exn:application:arity exn:application:continuation exn:application:fprintf:mismatch
-    syn keyword schemeExtFunc exn:application:mismatch exn:application:type exn:application:mismatch exn:break exn:i/o:filesystem exn:i/o:port
-    syn keyword schemeExtFunc exn:i/o:port:closed exn:i/o:tcp exn:i/o:udp exn:misc exn:misc:application exn:misc:unsupported exn:module exn:read
-    syn keyword schemeExtFunc exn:read:non-char exn:special-comment exn:syntax exn:thread exn:user exn:variable exn:application:mismatch
-    syn keyword schemeExtFunc exn? exn:application:arity? exn:application:continuation? exn:application:fprintf:mismatch? exn:application:mismatch?
-    syn keyword schemeExtFunc exn:application:type? exn:application:mismatch? exn:break? exn:i/o:filesystem? exn:i/o:port? exn:i/o:port:closed?
-    syn keyword schemeExtFunc exn:i/o:tcp? exn:i/o:udp? exn:misc? exn:misc:application? exn:misc:unsupported? exn:module? exn:read? exn:read:non-char?
-    syn keyword schemeExtFunc exn:special-comment? exn:syntax? exn:thread? exn:user? exn:variable? exn:application:mismatch?
-    " Command-line parsing
-    syn keyword schemeExtFunc command-line current-command-line-arguments once-any help-labels multi once-each
+syn region schemeVector matchgroup=schemeData start="#(" end=")" contains=ALLBUT,schemeQuasiquote,schemeQuasiquoteForm,schemeUnquote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster
+syn region schemeVector matchgroup=schemeData start="#[fsu]\d\+(" end=")" contains=schemeNumber,schemeComment,schemeDatumComment
 
-    " syntax quoting, unquoting and quasiquotation
-    syn region schemeUnquote matchgroup=Delimiter start="#," end=![ \t\[\]()";]!me=e-1 contains=ALL
-    syn region schemeUnquote matchgroup=Delimiter start="#,@" end=![ \t\[\]()";]!me=e-1 contains=ALL
-    syn region schemeUnquote matchgroup=Delimiter start="#,(" end=")" contains=ALL
-    syn region schemeUnquote matchgroup=Delimiter start="#,@(" end=")" contains=ALL
-    syn region schemeUnquote matchgroup=Delimiter start="#,\[" end="\]" contains=ALL
-    syn region schemeUnquote matchgroup=Delimiter start="#,@\[" end="\]" contains=ALL
-    syn region schemeQuoted matchgroup=Delimiter start="#['`]" end=![ \t()\[\]";]!me=e-1 contains=ALL
-    syn region schemeQuoted matchgroup=Delimiter start="#['`](" matchgroup=Delimiter end=")" contains=ALL
-
-    " Identifiers are very liberal in MzScheme/Racket
-    syn match schemeOther ![^()[\]{}",'`;#|\\ ]\+!
-
-    " Language setting
-    syn match schemeLang "#lang [-+_/A-Za-z0-9]\+\>"
-
-    " Various number forms
-    syn match schemeNumber "[-+]\=[0-9]\+\(\.[0-9]*\)\=\(e[-+]\=[0-9]\+\)\=\>"
-    syn match schemeNumber "[-+]\=\.[0-9]\+\(e[-+]\=[0-9]\+\)\=\>"
-    syn match schemeNumber "[-+]\=[0-9]\+/[0-9]\+\>"
-    syn match schemeNumber "\([-+]\=\([0-9]\+\(\.[0-9]*\)\=\(e[-+]\=[0-9]\+\)\=\|\.[0-9]\+\(e[-+]\=[0-9]\+\)\=\|[0-9]\+/[0-9]\+\)\)\=[-+]\([0-9]\+\(\.[0-9]*\)\=\(e[-+]\=[0-9]\+\)\=\|\.[0-9]\+\(e[-+]\=[0-9]\+\)\=\|[0-9]\+/[0-9]\+\)\=i\>"
+if exists('g:is_chicken') || exists('b:is_chicken')
+  syn region schemeImport matchgroup=schemeImport start="\(([ \t\n]*\)\@<=\(import\|import-syntax\|use\|require-extension\)\(-for-syntax\)\?\>" end=")"me=e-1 contained contains=schemeImportForm,schemeIdentifier,schemeComment,schemeDatumComment
+else
+  syn region schemeImport matchgroup=schemeImport start="\(([ \t\n]*\)\@<=\(import\)\>" end=")"me=e-1 contained contains=schemeImportForm,schemeIdentifier,schemeComment,schemeDatumComment
 endif
 
+syn match   schemeImportKeyword "\(([ \t\n]*\)\@<=\(except\|only\|prefix\|rename\|srfi\)\>"
+syn region  schemeImportForm matchgroup=schemeParentheses start="(" end=")" contained contains=schemeIdentifier,schemeComment,schemeDatumComment,@schemeImportCluster
+syn cluster schemeImportCluster contains=schemeImportForm,schemeImportKeyword
 
-if exists("b:is_chicken") || exists("is_chicken")
-    " multiline comment
-    syntax region schemeMultilineComment start=/#|/ end=/|#/ contains=@Spell,schemeMultilineComment
+syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*/ end=/[ \t\n()\[\]";]/me=e-1
+syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*"/ skip=/\\[\\"]/ end=/"/
+syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*|/ skip=/\\[\\|]/ end=/|/
+syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*\(#\([usf]\d\+\)\?\)\?(/ end=/)/ contains=schemeDatumCommentForm
+syn region schemeDatumCommentForm start="(" end=")" contained contains=schemeDatumCommentForm
+
+syn cluster schemeSyntaxCluster contains=schemeFunction,schemeKeyword,schemeSyntax,schemeExtraSyntax,schemeLibrarySyntax,schemeSyntaxSyntax
 
-    syn match schemeOther "##[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
-    syn match schemeExtSyntax "#:[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
+syn keyword schemeLibrarySyntax define-library
+syn keyword schemeLibrarySyntax export
+syn keyword schemeLibrarySyntax include
+syn keyword schemeLibrarySyntax include-ci
+syn keyword schemeLibrarySyntax include-library-declarations
+syn keyword schemeLibrarySyntax library
+syn keyword schemeLibrarySyntax cond-expand
+
+syn keyword schemeSyntaxSyntax define-syntax
+syn keyword schemeSyntaxSyntax let-syntax
+syn keyword schemeSyntaxSyntax letrec-syntax
+syn keyword schemeSyntaxSyntax syntax-rules
 
-    syn keyword schemeExtSyntax unit uses declare hide foreign-declare foreign-parse foreign-parse/spec
-    syn keyword schemeExtSyntax foreign-lambda foreign-lambda* define-external define-macro load-library
-    syn keyword schemeExtSyntax let-values let*-values letrec-values ->string require-extension
-    syn keyword schemeExtSyntax let-optionals let-optionals* define-foreign-variable define-record
-    syn keyword schemeExtSyntax pointer tag-pointer tagged-pointer? define-foreign-type
-    syn keyword schemeExtSyntax require require-for-syntax cond-expand and-let* receive argc+argv
-    syn keyword schemeExtSyntax fixnum? fx= fx> fx< fx>= fx<= fxmin fxmax
-    syn keyword schemeExtFunc ##core#inline ##sys#error ##sys#update-errno
-
-    " here-string
-    syn region schemeString start=+#<<\s*\z(.*\)+ end=+^\z1$+ contains=@Spell
+syn keyword schemeSyntax =>
+syn keyword schemeSyntax and
+syn keyword schemeSyntax begin
+syn keyword schemeSyntax case
+syn keyword schemeSyntax case-lambda
+syn keyword schemeSyntax cond
+syn keyword schemeSyntax define
+syn keyword schemeSyntax define-record-type
+syn keyword schemeSyntax define-values
+syn keyword schemeSyntax delay
+syn keyword schemeSyntax delay-force
+syn keyword schemeSyntax do
+syn keyword schemeSyntax else
+syn keyword schemeSyntax guard
+syn keyword schemeSyntax if
+syn keyword schemeSyntax lambda
+syn keyword schemeSyntax let
+syn keyword schemeSyntax let*
+syn keyword schemeSyntax let*-values
+syn keyword schemeSyntax let-values
+syn keyword schemeSyntax letrec
+syn keyword schemeSyntax letrec*
+syn keyword schemeSyntax or
+syn keyword schemeSyntax parameterize
+syn keyword schemeSyntax quasiquote
+syn keyword schemeSyntax quote
+syn keyword schemeSyntax set!
+syn keyword schemeSyntax unless
+syn keyword schemeSyntax unquote
+syn keyword schemeSyntax unquote-splicing
+syn keyword schemeSyntax when
 
-    if filereadable(expand("<sfile>:p:h")."/cpp.vim")
-	unlet! b:current_syntax
-	syn include @ChickenC <sfile>:p:h/cpp.vim
-	syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-declare "+ end=+")\@=+ contains=@ChickenC
-	syn region ChickenC matchgroup=schemeComment start=+foreign-declare\s*#<<\z(.*\)$+hs=s+15 end=+^\z1$+ contains=@ChickenC
-	syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-parse "+ end=+")\@=+ contains=@ChickenC
-	syn region ChickenC matchgroup=schemeComment start=+foreign-parse\s*#<<\z(.*\)$+hs=s+13 end=+^\z1$+ contains=@ChickenC
-	syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-parse/spec "+ end=+")\@=+ contains=@ChickenC
-	syn region ChickenC matchgroup=schemeComment start=+foreign-parse/spec\s*#<<\z(.*\)$+hs=s+18 end=+^\z1$+ contains=@ChickenC
-	syn region ChickenC matchgroup=schemeComment start=+#>+ end=+<#+ contains=@ChickenC
-	syn region ChickenC matchgroup=schemeComment start=+#>?+ end=+<#+ contains=@ChickenC
-	syn region ChickenC matchgroup=schemeComment start=+#>!+ end=+<#+ contains=@ChickenC
-	syn region ChickenC matchgroup=schemeComment start=+#>\$+ end=+<#+ contains=@ChickenC
-	syn region ChickenC matchgroup=schemeComment start=+#>%+ end=+<#+ contains=@ChickenC
-    endif
+syn keyword schemeFunction *
+syn keyword schemeFunction +
+syn keyword schemeFunction -
+syn keyword schemeFunction /
+syn keyword schemeFunction <
+syn keyword schemeFunction <=
+syn keyword schemeFunction =
+syn keyword schemeFunction >
+syn keyword schemeFunction >=
+syn keyword schemeFunction abs
+syn keyword schemeFunction acos
+syn keyword schemeFunction acos
+syn keyword schemeFunction angle
+syn keyword schemeFunction append
+syn keyword schemeFunction apply
+syn keyword schemeFunction asin
+syn keyword schemeFunction assoc
+syn keyword schemeFunction assq
+syn keyword schemeFunction assv
+syn keyword schemeFunction atan
+syn keyword schemeFunction binary-port?
+syn keyword schemeFunction boolean=?
+syn keyword schemeFunction boolean?
+syn keyword schemeFunction bytevector
+syn keyword schemeFunction bytevector-append
+syn keyword schemeFunction bytevector-append
+syn keyword schemeFunction bytevector-copy
+syn keyword schemeFunction bytevector-copy!
+syn keyword schemeFunction bytevector-length
+syn keyword schemeFunction bytevector-u8-ref
+syn keyword schemeFunction bytevector-u8-set!
+syn keyword schemeFunction bytevector?
+syn keyword schemeFunction caaaar
+syn keyword schemeFunction caaadr
+syn keyword schemeFunction caaar
+syn keyword schemeFunction caadar
+syn keyword schemeFunction caaddr
+syn keyword schemeFunction caadr
+syn keyword schemeFunction caar
+syn keyword schemeFunction cadaar
+syn keyword schemeFunction cadadr
+syn keyword schemeFunction cadar
+syn keyword schemeFunction caddar
+syn keyword schemeFunction cadddr
+syn keyword schemeFunction caddr
+syn keyword schemeFunction cadr
+syn keyword schemeFunction call-with-current-continuation
+syn keyword schemeFunction call-with-input-file
+syn keyword schemeFunction call-with-output-file
+syn keyword schemeFunction call-with-port
+syn keyword schemeFunction call-with-values
+syn keyword schemeFunction call/cc
+syn keyword schemeFunction car
+syn keyword schemeFunction cdaaar
+syn keyword schemeFunction cdaadr
+syn keyword schemeFunction cdaar
+syn keyword schemeFunction cdadar
+syn keyword schemeFunction cdaddr
+syn keyword schemeFunction cdadr
+syn keyword schemeFunction cdar
+syn keyword schemeFunction cddaar
+syn keyword schemeFunction cddadr
+syn keyword schemeFunction cddar
+syn keyword schemeFunction cdddar
+syn keyword schemeFunction cddddr
+syn keyword schemeFunction cdddr
+syn keyword schemeFunction cddr
+syn keyword schemeFunction cdr
+syn keyword schemeFunction ceiling
+syn keyword schemeFunction char->integer
+syn keyword schemeFunction char-alphabetic?
+syn keyword schemeFunction char-ci<=?
+syn keyword schemeFunction char-ci<?
+syn keyword schemeFunction char-ci=?
+syn keyword schemeFunction char-ci>=?
+syn keyword schemeFunction char-ci>?
+syn keyword schemeFunction char-downcase
+syn keyword schemeFunction char-foldcase
+syn keyword schemeFunction char-lower-case?
+syn keyword schemeFunction char-numeric?
+syn keyword schemeFunction char-ready?
+syn keyword schemeFunction char-upcase
+syn keyword schemeFunction char-upper-case?
+syn keyword schemeFunction char-whitespace?
+syn keyword schemeFunction char<=?
+syn keyword schemeFunction char<?
+syn keyword schemeFunction char=?
+syn keyword schemeFunction char>=?
+syn keyword schemeFunction char>?
+syn keyword schemeFunction char?
+syn keyword schemeFunction close-input-port
+syn keyword schemeFunction close-output-port
+syn keyword schemeFunction close-port
+syn keyword schemeFunction command-line
+syn keyword schemeFunction complex?
+syn keyword schemeFunction cons
+syn keyword schemeFunction cos
+syn keyword schemeFunction current-error-port
+syn keyword schemeFunction current-input-port
+syn keyword schemeFunction current-jiffy
+syn keyword schemeFunction current-output-port
+syn keyword schemeFunction current-second
+syn keyword schemeFunction delete-file
+syn keyword schemeFunction denominator
+syn keyword schemeFunction digit-value
+syn keyword schemeFunction display
+syn keyword schemeFunction dynamic-wind
+syn keyword schemeFunction emergency-exit
+syn keyword schemeFunction environment
+syn keyword schemeFunction eof-object
+syn keyword schemeFunction eof-object?
+syn keyword schemeFunction eq?
+syn keyword schemeFunction equal?
+syn keyword schemeFunction eqv?
+syn keyword schemeFunction error
+syn keyword schemeFunction error-object-irritants
+syn keyword schemeFunction error-object-message
+syn keyword schemeFunction error-object?
+syn keyword schemeFunction eval
+syn keyword schemeFunction even?
+syn keyword schemeFunction exact
+syn keyword schemeFunction exact->inexact
+syn keyword schemeFunction exact-integer-sqrt
+syn keyword schemeFunction exact-integer?
+syn keyword schemeFunction exact?
+syn keyword schemeFunction exit
+syn keyword schemeFunction exp
+syn keyword schemeFunction expt
+syn keyword schemeFunction features
+syn keyword schemeFunction file-error?
+syn keyword schemeFunction file-exists?
+syn keyword schemeFunction finite?
+syn keyword schemeFunction floor
+syn keyword schemeFunction floor-quotient
+syn keyword schemeFunction floor-remainder
+syn keyword schemeFunction floor/
+syn keyword schemeFunction flush-output-port
+syn keyword schemeFunction for-each
+syn keyword schemeFunction force
+syn keyword schemeFunction gcd
+syn keyword schemeFunction get-environment-variable
+syn keyword schemeFunction get-environment-variables
+syn keyword schemeFunction get-output-bytevector
+syn keyword schemeFunction get-output-string
+syn keyword schemeFunction imag-part
+syn keyword schemeFunction inexact
+syn keyword schemeFunction inexact->exact
+syn keyword schemeFunction inexact?
+syn keyword schemeFunction infinite?
+syn keyword schemeFunction input-port-open?
+syn keyword schemeFunction input-port?
+syn keyword schemeFunction integer->char
+syn keyword schemeFunction integer?
+syn keyword schemeFunction interaction-environment
+syn keyword schemeFunction jiffies-per-second
+syn keyword schemeFunction lcm
+syn keyword schemeFunction length
+syn keyword schemeFunction list
+syn keyword schemeFunction list->string
+syn keyword schemeFunction list->vector
+syn keyword schemeFunction list-copy
+syn keyword schemeFunction list-ref
+syn keyword schemeFunction list-set!
+syn keyword schemeFunction list-tail
+syn keyword schemeFunction list?
+syn keyword schemeFunction load
+syn keyword schemeFunction log
+syn keyword schemeFunction magnitude
+syn keyword schemeFunction make-bytevector
+syn keyword schemeFunction make-list
+syn keyword schemeFunction make-parameter
+syn keyword schemeFunction make-polar
+syn keyword schemeFunction make-promise
+syn keyword schemeFunction make-rectangular
+syn keyword schemeFunction make-string
+syn keyword schemeFunction make-vector
+syn keyword schemeFunction map
+syn keyword schemeFunction max
+syn keyword schemeFunction member
+syn keyword schemeFunction memq
+syn keyword schemeFunction memv
+syn keyword schemeFunction min
+syn keyword schemeFunction modulo
+syn keyword schemeFunction nan?
+syn keyword schemeFunction negative?
+syn keyword schemeFunction newline
+syn keyword schemeFunction not
+syn keyword schemeFunction null-environment
+syn keyword schemeFunction null?
+syn keyword schemeFunction number->string
+syn keyword schemeFunction number?
+syn keyword schemeFunction numerator
+syn keyword schemeFunction odd?
+syn keyword schemeFunction open-binary-input-file
+syn keyword schemeFunction open-binary-output-file
+syn keyword schemeFunction open-input-bytevector
+syn keyword schemeFunction open-input-file
+syn keyword schemeFunction open-input-string
+syn keyword schemeFunction open-output-bytevector
+syn keyword schemeFunction open-output-file
+syn keyword schemeFunction open-output-string
+syn keyword schemeFunction output-port-open?
+syn keyword schemeFunction output-port?
+syn keyword schemeFunction pair?
+syn keyword schemeFunction peek-char
+syn keyword schemeFunction peek-u8
+syn keyword schemeFunction port?
+syn keyword schemeFunction positive?
+syn keyword schemeFunction procedure?
+syn keyword schemeFunction promise?
+syn keyword schemeFunction quotient
+syn keyword schemeFunction raise
+syn keyword schemeFunction raise-continuable
+syn keyword schemeFunction rational?
+syn keyword schemeFunction rationalize
+syn keyword schemeFunction read
+syn keyword schemeFunction read-bytevector
+syn keyword schemeFunction read-bytevector!
+syn keyword schemeFunction read-char
+syn keyword schemeFunction read-error?
+syn keyword schemeFunction read-line
+syn keyword schemeFunction read-string
+syn keyword schemeFunction read-u8
+syn keyword schemeFunction real-part
+syn keyword schemeFunction real?
+syn keyword schemeFunction remainder
+syn keyword schemeFunction reverse
+syn keyword schemeFunction round
+syn keyword schemeFunction scheme-report-environment
+syn keyword schemeFunction set-car!
+syn keyword schemeFunction set-cdr!
+syn keyword schemeFunction sin
+syn keyword schemeFunction sqrt
+syn keyword schemeFunction square
+syn keyword schemeFunction string
+syn keyword schemeFunction string->list
+syn keyword schemeFunction string->number
+syn keyword schemeFunction string->symbol
+syn keyword schemeFunction string->utf8
+syn keyword schemeFunction string->vector
+syn keyword schemeFunction string-append
+syn keyword schemeFunction string-ci<=?
+syn keyword schemeFunction string-ci<?
+syn keyword schemeFunction string-ci=?
+syn keyword schemeFunction string-ci>=?
+syn keyword schemeFunction string-ci>?
+syn keyword schemeFunction string-copy
+syn keyword schemeFunction string-copy!
+syn keyword schemeFunction string-downcase
+syn keyword schemeFunction string-fill!
+syn keyword schemeFunction string-foldcase
+syn keyword schemeFunction string-for-each
+syn keyword schemeFunction string-length
+syn keyword schemeFunction string-map
+syn keyword schemeFunction string-ref
+syn keyword schemeFunction string-set!
+syn keyword schemeFunction string-upcase
+syn keyword schemeFunction string<=?
+syn keyword schemeFunction string<?
+syn keyword schemeFunction string=?
+syn keyword schemeFunction string>=?
+syn keyword schemeFunction string>?
+syn keyword schemeFunction string?
+syn keyword schemeFunction substring
+syn keyword schemeFunction symbol->string
+syn keyword schemeFunction symbol=?
+syn keyword schemeFunction symbol?
+syn keyword schemeFunction syntax-error
+syn keyword schemeFunction tan
+syn keyword schemeFunction textual-port?
+syn keyword schemeFunction transcript-off
+syn keyword schemeFunction transcript-on
+syn keyword schemeFunction truncate
+syn keyword schemeFunction truncate-quotient
+syn keyword schemeFunction truncate-remainder
+syn keyword schemeFunction truncate/
+syn keyword schemeFunction u8-ready?
+syn keyword schemeFunction utf8->string
+syn keyword schemeFunction values
+syn keyword schemeFunction vector
+syn keyword schemeFunction vector->list
+syn keyword schemeFunction vector->string
+syn keyword schemeFunction vector-append
+syn keyword schemeFunction vector-copy
+syn keyword schemeFunction vector-copy!
+syn keyword schemeFunction vector-fill!
+syn keyword schemeFunction vector-for-each
+syn keyword schemeFunction vector-length
+syn keyword schemeFunction vector-map
+syn keyword schemeFunction vector-ref
+syn keyword schemeFunction vector-set!
+syn keyword schemeFunction vector?
+syn keyword schemeFunction with-exception-handler
+syn keyword schemeFunction with-input-from-file
+syn keyword schemeFunction with-output-to-file
+syn keyword schemeFunction write
+syn keyword schemeFunction write-bytevector
+syn keyword schemeFunction write-char
+syn keyword schemeFunction write-shared
+syn keyword schemeFunction write-simple
+syn keyword schemeFunction write-string
+syn keyword schemeFunction write-u8
+syn keyword schemeFunction zero?
 
-    " suggested by Alex Queiroz
-    syn match schemeExtSyntax "#![-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
-    syn region schemeString start=+#<#\s*\z(.*\)+ end=+^\z1$+ contains=@Spell
+hi def link schemeBoolean Boolean
+hi def link schemeCharacter Character
+hi def link schemeComment Comment
+hi def link schemeConstant Constant
+hi def link schemeData Delimiter
+hi def link schemeDatumComment Comment
+hi def link schemeDatumCommentForm Comment
+hi def link schemeDelimiter Delimiter
+hi def link schemeError Error
+hi def link schemeExtraSyntax Underlined
+hi def link schemeFunction Function
+hi def link schemeIdentifier Normal
+hi def link schemeImport PreProc
+hi def link schemeImportKeyword PreProc
+hi def link schemeKeyword Type
+hi def link schemeLibrarySyntax PreProc
+hi def link schemeMultilineComment Comment
+hi def link schemeNumber Number
+hi def link schemeParentheses Normal
+hi def link schemeQuasiquote Delimiter
+hi def link schemeQuote Delimiter
+hi def link schemeSpecialSyntax Special
+hi def link schemeString String
+hi def link schemeSymbol Normal
+hi def link schemeSyntax Statement
+hi def link schemeSyntaxSyntax PreProc
+hi def link schemeTypeSyntax Type
+
+let b:did_scheme_syntax = 1
+
+if exists('b:is_chicken') || exists('g:is_chicken')
+  exe 'ru! syntax/chicken.vim'
 endif
 
-" Synchronization and the wrapping up...
-
-syn sync match matchPlace grouphere NONE "^[^ \t]"
-" ... i.e. synchronize on a line that starts at the left margin
-
-" Define the default highlighting.
-" Only when an item doesn't have highlighting yet
-
-hi def link schemeSyntax		Statement
-hi def link schemeFunc		Function
-
-hi def link schemeString		String
-hi def link schemeCharacter	Character
-hi def link schemeNumber		Number
-hi def link schemeBoolean		Boolean
-
-hi def link schemeDelimiter	Delimiter
-hi def link schemeConstant		Constant
-
-hi def link schemeComment		Comment
-hi def link schemeMultilineComment	Comment
-hi def link schemeError		Error
-
-hi def link schemeExtSyntax	Type
-hi def link schemeExtFunc		PreProc
-
-hi def link schemeLang		PreProc
-
-
-let b:current_syntax = "scheme"
-
-let &cpo = s:cpo_save
-unlet s:cpo_save
+unlet b:did_scheme_syntax
+let b:current_syntax = 'scheme'
+let &cpo = s:cpo
+unlet s:cpo
--- a/runtime/tutor/tutor
+++ b/runtime/tutor/tutor
@@ -18,7 +18,7 @@
      use.  That means that you need to execute the commands to learn them
      properly.  If you only read the text, you will forget the commands!
 
-     Now, make sure that your Shift-Lock key is NOT depressed and press
+     Now, make sure that your Caps-Lock key is NOT depressed and press
      the   j   key enough times to move the cursor so that Lesson 1.1
      completely fills the screen.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/runtime/tutor/tutor.cs
+++ b/runtime/tutor/tutor.cs
@@ -17,7 +17,7 @@
      To znamen, e je poteba si pkazy vyzkouet pro jejich sprvn
      nauen. Pokud si jen te text, pkazy zapomene!
 
-     Nyn se pesvdte, e Shift-Lock NEN stlaen a nkolikrt stisknte
+     Nyn se pesvdte, e Caps-Lock NEN stlaen a nkolikrt stisknte
      klvesu  j   aby se kurzor posunul natolik, e lekce 1.1 zapln celou
      obrazovku.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/runtime/tutor/tutor.cs.cp1250
+++ b/runtime/tutor/tutor.cs.cp1250
@@ -17,7 +17,7 @@
      To znamen, e je poteba si pkazy vyzkouet pro jejich sprvn
      nauen. Pokud si jen te text, pkazy zapomene!
 
-     Nyn se pesvdte, e Shift-Lock NEN stlaen a nkolikrt stisknte
+     Nyn se pesvdte, e Caps-Lock NEN stlaen a nkolikrt stisknte
      klvesu  j   aby se kurzor posunul natolik, e lekce 1.1 zapln celou
      obrazovku.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/runtime/tutor/tutor.cs.utf-8
+++ b/runtime/tutor/tutor.cs.utf-8
@@ -17,7 +17,7 @@
      To znamená, že je potřeba si příkazy vyzkoušet pro jejich správné
      naučení. Pokud si jen čteš text, příkazy zapomeneš!
 
-     Nyní se přesvědčte, že Shift-Lock NENÍ stlačený a několikrát stiskněte
+     Nyní se přesvědčte, že Caps-Lock NENÍ stlačený a několikrát stiskněte
      klávesu  j   aby se kurzor posunul natolik, že lekce 1.1 zaplní celou
      obrazovku.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/runtime/tutor/tutor.el
+++ b/runtime/tutor/tutor.el
@@ -20,7 +20,7 @@
             .    
      ,   !
 
-     ,     Shift-Lock    
+     ,     Caps-Lock    
         j        
         1.1     .
 
--- a/runtime/tutor/tutor.el.cp737
+++ b/runtime/tutor/tutor.el.cp737
@@ -20,7 +20,7 @@
      嫜      ៜ ੫.  ᝜ 椦 
      壜,   ᩜ!
 
-     騘, 嫜 櫠  㡫 Shift-Lock  夘 ⤦ 
+     騘, 嫜 櫠  㡫 Caps-Lock  夘 ⤦ 
      㩫  㡫 j     㩜   ⫩
      驫  ៞ 1.1  婜   椞.
 
--- a/runtime/tutor/tutor.el.utf-8
+++ b/runtime/tutor/tutor.el.utf-8
@@ -20,7 +20,7 @@
      εκτελείτε τις εντολές για να τις μάθετε σωστά. Αν διαβάζετε μόνο το
      κείμενο, θα τις ξεχάσετε!
 
-     Τώρα, βεβαιωθείτε ότι το πλήκτρο Shift-Lock ΔΕΝ είναι πατημένο και
+     Τώρα, βεβαιωθείτε ότι το πλήκτρο Caps-Lock ΔΕΝ είναι πατημένο και
      πατήστε το πλήκτρο j αρκετές φορές για να μετακινήσετε τον δρομέα έτσι
      ώστε το Μάθημα 1.1 να γεμίσει πλήρως την οθόνη.
 
--- a/runtime/tutor/tutor.sk
+++ b/runtime/tutor/tutor.sk
@@ -18,7 +18,7 @@
      pouvanm. To znamen, e je potrebn si prkazy vyska, aby bolo
      uenie sprvne. Ak len itas text, prkazy zabudne!
 
-     Presved sa, e Shift-Lock NIEJE stlaen a stlat klvesu
+     Presved sa, e Caps-Lock NIEJE stlaen a stlat klvesu
      j  niekoko krt, aby sa kurzor posunul natoko, e lekcia 1.1
      celkom zapln obrazovku.
 
--- a/runtime/tutor/tutor.sk.cp1250
+++ b/runtime/tutor/tutor.sk.cp1250
@@ -18,7 +18,7 @@
      pouvanm. To znamen, e je potrebn si prkazy vyska, aby bolo
      uenie sprvne. Ak len itas text, prkazy zabudne!
 
-     Presved sa, e Shift-Lock NIEJE stlaen a stlat klvesu
+     Presved sa, e Caps-Lock NIEJE stlaen a stlat klvesu
      j  niekoko krt, aby sa kurzor posunul natoko, e lekcia 1.1
      celkom zapln obrazovku.
 
--- a/runtime/tutor/tutor.sk.utf-8
+++ b/runtime/tutor/tutor.sk.utf-8
@@ -18,7 +18,7 @@
      používaním. To znamená, že je potrebné si príkazy vyskúšať, aby bolo
      učenie správne. Ak len čitas text, príkazy zabudneš!
 
-     Presvedč sa, že Shift-Lock NIEJE stlačený a stlačt klávesu
+     Presvedč sa, že Caps-Lock NIEJE stlačený a stlačt klávesu
      j  niekoľko krát, aby sa kurzor posunul natoľko, že lekcia 1.1
      celkom zaplní obrazovku.
 
--- a/runtime/tutor/tutor.tr.iso9
+++ b/runtime/tutor/tutor.tr.iso9
@@ -18,7 +18,7 @@
      anlama gelir; komutlar renmek iin doru bir ekilde altrmanz gerekir.
      Eer sadece yazlanlar okursanz komutlar unutursunuz.
 
-     imdi Shift-Lock tularnzn basl olmadna emin olun ve Ders 1.1'in
+     imdi Caps-Lock tularnzn basl olmadna emin olun ve Ders 1.1'in
      ekran tamamen doldurmas iin   j   tuuna yeterli miktarda basn.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			Ders 1.1:  MLEC HAREKET ETTRMEK
--- a/runtime/tutor/tutor.tr.utf-8
+++ b/runtime/tutor/tutor.tr.utf-8
@@ -18,7 +18,7 @@
      anlama gelir; komutları öğrenmek için doğru bir şekilde çalıştırmanız gerekir.
      Eğer sadece yazılanları okursanız komutları unutursunuz.
 
-     Şimdi Shift-Lock tuşlarınızın basılı olmadığına emin olun ve Ders 1.1'in
+     Şimdi Caps-Lock tuşlarınızın basılı olmadığına emin olun ve Ders 1.1'in
      ekranı tamamen doldurması için   j   tuşuna yeterli miktarda basın.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			Ders 1.1:  İMLECİ HAREKET ETTİRMEK
--- a/runtime/tutor/tutor.utf-8
+++ b/runtime/tutor/tutor.utf-8
@@ -18,7 +18,7 @@
      use.  That means that you need to execute the commands to learn them
      properly.  If you only read the text, you will forget the commands!
 
-     Now, make sure that your Shift-Lock key is NOT depressed and press
+     Now, make sure that your Caps-Lock key is NOT depressed and press
      the   j   key enough times to move the cursor so that Lesson 1.1
      completely fills the screen.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~