changeset 22171:d4c7b3e9cd17

Update runtime files. Commit: https://github.com/vim/vim/commit/1c6737b20a5cf71751b180461cea22fc76d8870c Author: Bram Moolenaar <Bram@vim.org> Date: Mon Sep 7 22:18:52 2020 +0200 Update runtime files.
author Bram Moolenaar <Bram@vim.org>
date Mon, 07 Sep 2020 22:30:04 +0200
parents ac11f9fee87a
children 1b23391fac7e
files .github/CODEOWNERS runtime/compiler/dart.vim runtime/compiler/dart2js.vim runtime/compiler/dart2native.vim runtime/compiler/dartanalyser.vim runtime/compiler/dartdevc.vim runtime/compiler/dartdoc.vim runtime/compiler/dartfmt.vim runtime/compiler/javac.vim runtime/compiler/rhino.vim runtime/compiler/xmllint.vim runtime/doc/eval.txt runtime/doc/map.txt runtime/doc/message.txt runtime/doc/options.txt runtime/doc/pattern.txt runtime/doc/tags runtime/doc/terminal.txt runtime/doc/testing.txt runtime/doc/todo.txt runtime/doc/usr_03.txt runtime/doc/usr_40.txt runtime/doc/usr_41.txt runtime/doc/version5.txt runtime/doc/vim9.txt runtime/doc/windows.txt runtime/ftplugin/spec.vim runtime/indent/json.vim runtime/keymap/french-azerty.vim runtime/keymap/german-qwertz.vim runtime/keymap/turkish-f.vim runtime/syntax/php.vim runtime/tutor/tutor runtime/tutor/tutor.utf-8 src/po/tr.po
diffstat 35 files changed, 1274 insertions(+), 309 deletions(-) [+]
line wrap: on
line diff
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -18,33 +18,75 @@ runtime/autoload/netrwSettings.vim	@ceca
 runtime/autoload/tar.vim		@cecamp
 runtime/autoload/vimball.vim		@cecamp
 runtime/autoload/zip.vim		@cecamp
+runtime/compiler/checkstyle.vim		@dkearns
+runtime/compiler/dart.vim		@dkearns
+runtime/compiler/dart2js.vim		@dkearns
+runtime/compiler/dart2native.vim	@dkearns
+runtime/compiler/dartanalyser.vim	@dkearns
+runtime/compiler/dartdevc.vim		@dkearns
+runtime/compiler/dartdoc.vim		@dkearns
+runtime/compiler/dartfmt.vim		@dkearns
+runtime/compiler/eruby.vim		@dkearns
+runtime/compiler/gawk.vim		@dkearns
+runtime/compiler/gjs.vim		@dkearns
+runtime/compiler/javac.vim		@dkearns
+runtime/compiler/jest.vim		@dkearns
+runtime/compiler/jjs.vim		@dkearns
+runtime/compiler/jshint.vim		@dkearns
+runtime/compiler/jsonlint.vim		@dkearns
+runtime/compiler/php.vim		@dkearns
+runtime/compiler/rhino.vim		@dkearns
+runtime/compiler/rubocop.vim		@dkearns
+runtime/compiler/rubyunit.vim		@dkearns
+runtime/compiler/se.vim			@dkearns
+runtime/compiler/stylelint.vim		@dkearns
+runtime/compiler/tcl.vim		@dkearns
+runtime/compiler/tidy.vim		@dkearns
+runtime/compiler/ts-node.vim		@dkearns
+runtime/compiler/tsc.vim		@dkearns
+runtime/compiler/typedoc.vim		@dkearns
+runtime/compiler/xmllint.vim		@dkearns
+runtime/compiler/xo.vim			@dkearns
 runtime/doc/pi_getscript.txt		@cecamp
 runtime/doc/pi_logipat.txt		@cecamp
 runtime/doc/pi_netrw.txt		@cecamp
 runtime/doc/pi_tar.txt			@cecamp
 runtime/doc/pi_vimball.txt		@cecamp
 runtime/doc/pi_zip.txt			@cecamp
-runtime/plugin/getscriptPlugin.vim	@cecamp
-runtime/plugin/logiPat.vim		@cecamp
-runtime/plugin/netrwPlugin.vim		@cecamp
-runtime/plugin/tarPlugin.vim		@cecamp
-runtime/plugin/vimballPlugin.vim	@cecamp
-runtime/plugin/zipPlugin.vim		@cecamp
+runtime/ftplugin/css.vim		@dkearns
+runtime/ftplugin/eiffel.vim		@dkearns
+runtime/ftplugin/javascript.vim		@dkearns
+runtime/ftplugin/javascriptreact.vim	@dkearns
+runtime/ftplugin/typescript.vim		@dkearns
+runtime/ftplugin/typescriptreact.vim	@dkearns
 runtime/plugin/amiga.vim		@cecamp
 runtime/plugin/csh.vim			@cecamp
 runtime/plugin/dcl.vim			@cecamp
-runtime/plugin/wlmfilt.vim		@cecamp
 runtime/plugin/exports.vim		@cecamp
+runtime/plugin/getscriptPlugin.vim	@cecamp
 runtime/plugin/lex.vim			@cecamp
 runtime/plugin/lisp.vim			@cecamp
+runtime/plugin/logiPat.vim		@cecamp
 runtime/plugin/maple.vim		@cecamp
 runtime/plugin/netrw.vim		@cecamp
+runtime/plugin/netrwPlugin.vim		@cecamp
 runtime/plugin/rpcgen.vim		@cecamp
 runtime/plugin/sh.vim			@cecamp
 runtime/plugin/sm.vim			@cecamp
 runtime/plugin/tags.vim			@cecamp
+runtime/plugin/tarPlugin.vim		@cecamp
 runtime/plugin/tex.vim			@cecamp
 runtime/plugin/vim.vim			@cecamp
+runtime/plugin/vimballPlugin.vim	@cecamp
+runtime/plugin/wlmfilt.vim		@cecamp
 runtime/plugin/xmath.vim		@cecamp
 runtime/plugin/xxd.vim			@cecamp
 runtime/plugin/yacc.vim			@cecamp
+runtime/plugin/zipPlugin.vim		@cecamp
+runtime/syntax/lynx.vim			@dkearns
+runtime/syntax/mailcap.vim		@dkearns
+runtime/syntax/privoxy.vim		@dkearns
+runtime/syntax/ruby.vim			@dkearns
+runtime/syntax/tidy.vim			@dkearns
+runtime/syntax/wget.vim			@dkearns
+runtime/syntax/xbl.vim			@dkearns
new file mode 100644
--- /dev/null
+++ b/runtime/compiler/dart.vim
@@ -0,0 +1,26 @@
+" Vim compiler file
+" Compiler:	Dart VM
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2019 May 08
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "dart"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=dart
+CompilerSet errorformat=%E%f:%l:%c:\ Error:\ %m,
+		       \%CTry\ %.%#,
+		       \%Z\ %#^%\\+,
+		       \%C%.%#,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/compiler/dart2js.vim
@@ -0,0 +1,28 @@
+" Vim compiler file
+" Compiler:	Dart to JavaScript Compiler
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2019 May 08
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "dart2js"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=dart2js
+CompilerSet errorformat=%E%f:%l:%c:,
+		       \%-GError:\ Compilation\ failed.,
+		       \%CError:\ %m,
+		       \%Z\ %#^%\\+,
+		       \%C%.%#,
+		       \%trror:\ %m,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/compiler/dart2native.vim
@@ -0,0 +1,28 @@
+" Vim compiler file
+" Compiler:	Dart to Native Compiler
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2019 May 08
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "dart2native"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=dart2native
+CompilerSet errorformat=%E%f:%l:%c:\ Error:\ %m,
+		       \%CTry\ %.%#,
+		       \%Z\ %#^%\\+,
+		       \%Z%$,
+		       \%C%.%#,
+		       \%E%f:\ %trror:\ %m,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/compiler/dartanalyser.vim
@@ -0,0 +1,23 @@
+" Vim compiler file
+" Compiler:	Dart Analyzer
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2019 May 08
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "dartanalyzer"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=dartanalyzer\ --format\ machine
+CompilerSet errorformat=%t%\\w%\\+\|%\\w%\\+\|%\\w%\\+\|%f\|%l\|%c\|%\\d%\\+\|%m,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/compiler/dartdevc.vim
@@ -0,0 +1,28 @@
+" Vim compiler file
+" Compiler:	Dart Development Compiler
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2019 May 08
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "dartdevc"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=dartdevc
+CompilerSet errorformat=%E%f:%l:%c:\ Error:\ %m,
+		       \%CTry\ %.%#,
+		       \%Z\ %#^%\\+,
+		       \%Z%$,
+		       \%C%.%#,
+		       \%E%f:\ %trror:\ %m,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/compiler/dartdoc.vim
@@ -0,0 +1,26 @@
+" Vim compiler file
+" Compiler:	Dart Documentation Generator
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2019 May 08
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "dartdoc"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=dartdoc
+CompilerSet errorformat=\ \ %tarning:\ %m,
+		       \\ \ %trror:\ %m,
+		       \%+EGeneration\ failed:\ %m,
+		       \%+ISuccess!\ Docs\ generated\ into\ %f,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/compiler/dartfmt.vim
@@ -0,0 +1,25 @@
+" Vim compiler file
+" Compiler:	Dart Formatter
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2019 May 08
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "dartfmt"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=dartfmt
+CompilerSet errorformat=%Eline\ %l\\,\ column\ %c\ of\ %f:\ %m,
+		       \%Z\ %\\{3}│\ %\\+^%\\+,
+		       \%C%.%#,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/compiler/javac.vim
+++ b/runtime/compiler/javac.vim
@@ -1,7 +1,7 @@
 " Vim compiler file
-" Compiler:	javac
+" Compiler:	Java Development Kit Compiler
 " Maintainer:	Doug Kearns <dougkearns@gmail.com>
-" Last Change:	2004 Nov 27
+" Last Change:	2019 Oct 21
 
 if exists("current_compiler")
   finish
@@ -12,6 +12,15 @@ if exists(":CompilerSet") != 2		" older 
   command -nargs=* CompilerSet setlocal <args>
 endif
 
-CompilerSet makeprg=javac
+let s:cpo_save = &cpo
+set cpo&vim
 
-CompilerSet errorformat=%E%f:%l:\ %m,%-Z%p^,%-C%.%#,%-G%.%#
+CompilerSet makeprg=javac
+CompilerSet errorformat=%E%f:%l:\ error:\ %m,
+		       \%W%f:%l:\ warning:\ %m,
+		       \%-Z%p^,
+		       \%-C%.%#,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
new file mode 100644
--- /dev/null
+++ b/runtime/compiler/rhino.vim
@@ -0,0 +1,30 @@
+" Vim compiler file
+" Compiler:	Rhino Shell (JavaScript in Java)
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2019 Jul 10
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "rhino"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" CompilerSet makeprg=java\ -jar\ lib/rhino-X.X.XX.jar\ -w\ -strict
+
+CompilerSet makeprg=rhino
+CompilerSet errorformat=%-Gjs:\ %.%#Compilation\ produced%.%#,
+		       \%Ejs:\ \"%f\"\\,\ line\ %l:\ %m,
+		       \%Ejs:\ uncaught\ JavaScript\ runtime\ exception:\ %m,
+		       \%Wjs:\ warning:\ \"%f\"\\,\ line\ %l:\ %m,
+		       \%Zjs:\ %p^,
+		       \%Cjs:\ %.%#,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/compiler/xmllint.vim
+++ b/runtime/compiler/xmllint.vim
@@ -1,7 +1,7 @@
 " Vim compiler file
-" Compiler:	xmllint
+" Compiler:	Libxml2 Command-Line Tool
 " Maintainer:	Doug Kearns <dougkearns@gmail.com>
-" Last Change:	2013 Jul 8
+" Last Change:	2020 Jul 30
 
 if exists("current_compiler")
   finish
@@ -13,14 +13,16 @@ if exists(":CompilerSet") != 2		" older 
 endif
 
 let s:cpo_save = &cpo
-set cpo-=C
+set cpo&vim
 
 CompilerSet makeprg=xmllint\ --valid\ --noout
-
-CompilerSet errorformat=%+E%f:%l:\ %.%#\ error\ :\ %m,
-		    \%+W%f:%l:\ %.%#\ warning\ :\ %m,
-		    \%-Z%p^,
-		    \%-G%.%#
+CompilerSet errorformat=%E%f:%l:\ %.%#\ error\ :\ %m,
+		       \%W%f:%l:\ %.%#\ warning\ :\ %m,
+		       \%-Z%p^,
+		       \%C%.%#,
+		       \%terror:\ %m,
+		       \%tarning:\ %m,
+		       \%-G%.%#
 
 let &cpo = s:cpo_save
 unlet s:cpo_save
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 8.2.  Last change: 2020 aug 30
+*eval.txt*	For Vim version 8.2.  Last change: 2020 Sep 06
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -120,8 +120,9 @@ base, use |str2nr()|.
 
 						*TRUE* *FALSE* *Boolean*
 For boolean operators Numbers are used.  Zero is FALSE, non-zero is TRUE.
-You can also use |v:false| and |v:true|.  When TRUE is returned from a
-function it is the Number one, FALSE is the number zero.
+You can also use |v:false| and |v:true|.  In Vim9 script |false| and |true|. 
+When TRUE is returned from a function it is the Number one, FALSE is the
+number zero.
 
 Note that in the command: >
 	:if "foo"
@@ -2360,7 +2361,7 @@ assert_equalfile({fname-one}, {fname-two
 				Number	assert file contents are equal
 assert_exception({error} [, {msg}])
 				Number	assert {error} is in v:exception
-assert_fails({cmd} [, {error} [, {msg} [, {lnum}]]])
+assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
 				Number	assert {cmd} fails
 assert_false({actual} [, {msg}])
 				Number	assert {actual} is false
@@ -3362,7 +3363,7 @@ bufnr([{expr} [, {create}]])
 		above.
 
 		If the buffer doesn't exist, -1 is returned.  Or, if the
-		{create} argument is present and not zero, a new, unlisted,
+		{create} argument is present and TRUE, a new, unlisted,
 		buffer is created and its number is returned.  Example: >
 			let newbuf = bufnr('Scratch001', 1)
 <		Using an empty name uses the current buffer. To create a new
@@ -3513,7 +3514,7 @@ char2nr({expr} [, {utf8}])					*char2nr(
 		Example for "utf-8": >
 			char2nr("á")		returns 225
 			char2nr("á"[0])		returns 195
-<		With {utf8} set to 1, always treat as utf-8 characters.
+<		With {utf8} set to TRUE, always treat as utf-8 characters.
 		A combining character is a separate character.
 		|nr2char()| does the opposite.
 		To turn a string into a list of character numbers: >
@@ -7608,7 +7609,7 @@ perleval({expr})					*perleval()*
 <		{only available when compiled with the |+perl| feature}
 
 
-popup_ functions are documented here: |popup-functions|.
+popup_ functions are documented here: |popup-functions|
 
 
 pow({x}, {y})						*pow()*
@@ -11040,7 +11041,8 @@ win_screenpos({nr})					*win_screenpos()
 		Return the screen position of window {nr} as a list with two
 		numbers: [row, col].  The first window always has position
 		[1, 1], unless there is a tabline, then it is [2, 1].
-		{nr} can be the window number or the |window-ID|.
+		{nr} can be the window number or the |window-ID|.  Use zero
+		for the current window.
 		Return [0, 0] if the window cannot be found in the current
 		tabpage.
 
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 8.2.  Last change: 2020 Aug 30
+*map.txt*       For Vim version 8.2.  Last change: 2020 Sep 06
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -195,7 +195,7 @@ Note that this works when the <nowait> m
 before any partial matches.  This works when:
 - There is only one matching buffer-local mapping, since these are always
   found before global mappings.
-- There is another buffer-local mapping that partly matches, but it is was
+- There is another buffer-local mapping that partly matches, but it is
   defined earlier (last defined mapping is found first).
 
 						*:map-<silent>* *:map-silent*
@@ -289,15 +289,8 @@ Here is an example that inserts a list n
 CTRL-L inserts the next number, CTRL-R resets the count.  CTRL-R returns an
 empty string, so that nothing is inserted.
 
-Note that there are some tricks to make special keys work and escape CSI bytes
-in the text.  The |:map| command also does this, thus you must avoid that it
-is done twice.  This does not work: >
-	:imap <expr> <F3> "<Char-0x611B>"
-Because the <Char- sequence is escaped for being a |:imap| argument and then
-again for using <expr>.  This does work: >
-	:imap <expr> <F3> "\u611B"
-Using 0x80 as a single byte before other text does not work, it will be seen
-as a special key.
+Note that using 0x80 as a single byte before other text does not work, it will
+be seen as a special key.
 
 
 1.3 MAPPING AND MODES					*:map-modes*
@@ -881,35 +874,47 @@ g@{motion}		Call the function set by the
 
 Here is an example that counts the number of spaces with <F4>: >
 
-	nmap <silent> <F4> :set opfunc=CountSpaces<CR>g@
-	vmap <silent> <F4> :<C-U>call CountSpaces(visualmode(), 1)<CR>
+	nnoremap <expr> <F4> CountSpaces()
+	xnoremap <expr> <F4> CountSpaces()
+	" doubling <F4> works on a line
+	nnoremap <expr> <F4><F4> CountSpaces() .. '_'
 
-	function! CountSpaces(type, ...)
+	function CountSpaces(type = '') abort
+	  if a:type == ''
+	    set opfunc=CountSpaces
+	    return 'g@'
+ 	  endif
+
 	  let sel_save = &selection
-	  let &selection = "inclusive"
-	  let reg_save = @@
+	  let reg_save = getreginfo('"')
+	  let cb_save = &clipboard
+	  let visual_marks_save = [getpos("'<"), getpos("'>")]
 
-	  if a:0  " Invoked from Visual mode, use gv command.
-	    silent exe "normal! gvy"
-	  elseif a:type == 'line'
-	    silent exe "normal! '[V']y"
-	  else
-	    silent exe "normal! `[v`]y"
-	  endif
+	  try
+	    set clipboard= selection=inclusive
+	    let commands = #{line: "'[V']y", char: "`[v`]y", block: "`[\<c-v>`]y"}
+	    silent exe 'noautocmd keepjumps normal! ' .. get(commands, a:type, '')
+	    echom getreg('"')->count(' ')
+	  finally
+	    call setreg('"', reg_save)
+	    call setpos("'<", visual_marks_save[0])
+	    call setpos("'>", visual_marks_save[1])
+	    let &clipboard = cb_save
+	    let &selection = sel_save
+	  endtry
+	endfunction
 
-	  echomsg strlen(substitute(@@, '[^ ]', '', 'g'))
-
-	  let &selection = sel_save
-	  let @@ = reg_save
-	endfunction
+An <expr> mapping is used to be able to fetch any prefixed count and register.
+This also avoids using a command line, which would trigger CmdlineEnter and
+CmdlineLeave autocommands.
 
 Note that the 'selection' option is temporarily set to "inclusive" to be able
 to yank exactly the right text by using Visual mode from the '[ to the ']
 mark.
 
-Also note that there is a separate mapping for Visual mode.  It removes the
-"'<,'>" range that ":" inserts in Visual mode and invokes the function with
-visualmode() and an extra argument.
+Also note that the 'clipboard' option is temporarily emptied to avoid
+clobbering the `"*` or `"+` registers, if its value contains the item `unnamed`
+or `unnamedplus`.
 
 ==============================================================================
 2. Abbreviations			*abbreviations* *Abbreviations*
--- a/runtime/doc/message.txt
+++ b/runtime/doc/message.txt
@@ -1,4 +1,4 @@
-*message.txt*   For Vim version 8.2.  Last change: 2020 Aug 20
+*message.txt*   For Vim version 8.2.  Last change: 2020 Sep 07
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -75,7 +75,7 @@ See `:messages` above.
 
 
 LIST OF MESSAGES
-			*E222* *E228* *E232* *E256* *E293* *E298* *E304* *E317*
+			*E222* *E228* *E232* *E293* *E298* *E304* *E317*
 			*E318* *E356* *E438* *E439* *E440* *E316* *E320* *E322*
 			*E323* *E341* *E473* *E570* *E685* *E292*  >
   Add to read buffer
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 8.2.  Last change: 2020 Aug 28
+*options.txt*	For Vim version 8.2.  Last change: 2020 Sep 06
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -701,6 +701,7 @@ A jump table for the options with a shor
 	"double":	Use twice the width of ASCII characters.
 							*E834* *E835*
 	The value "double" cannot be used if 'listchars' or 'fillchars'
+	contains a character that would be double width.
 
 	The values are overruled for characters specified with
 	|setcellwidths()|.
@@ -6563,7 +6564,7 @@ A jump table for the options with a shor
 	For the Amiga the default is ">".  For MS-Windows the default is
 	">%s 2>&1".  The output is directly saved in a file and not echoed to
 	the screen.
-	For Unix the default it "| tee".  The stdout of the compiler is saved
+	For Unix the default is "| tee".  The stdout of the compiler is saved
 	in a file and echoed to the screen.  If the 'shell' option is "csh" or
 	"tcsh" after initializations, the default becomes "|& tee".  If the
 	'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh", "zsh-beta",
@@ -7807,8 +7808,8 @@ A jump table for the options with a shor
 						*'termwinsize'* *'tws'*
 'termwinsize' 'tws'	string	(default "")
 			local to window
-	Size of the |terminal| window.  Format: {rows}x{columns} or
-	{rows}*{columns}.
+	Size used when opening the |terminal| window.  Format:
+		{rows}x{columns} or {rows}*{columns}.
 	- When empty the terminal gets the size from the window.
 	- When set with a "x" (e.g., "24x80") the terminal size is not
 	  adjusted to the window size.  If the window is smaller only the
@@ -7819,6 +7820,8 @@ A jump table for the options with a shor
 	- When rows is zero then use the height of the window.
 	- When columns is zero then use the width of the window.
 	- Using "0x0" or "0*0" is the same as empty.
+	- Can be overruled in the |term_start()| options with "term_rows" and
+	  "term_cols".
 
 	Examples:
 	  "30x0" uses 30 rows and the current window width.
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1,4 +1,4 @@
-*pattern.txt*   For Vim version 8.2.  Last change: 2020 Aug 15
+*pattern.txt*   For Vim version 8.2.  Last change: 2020 Sep 01
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -797,11 +797,12 @@ An ordinary atom can be:
 	^beep(		the start of the C function "beep" (probably).
 
 							*/\^*
-\^	Matches literal '^'.  Can be used at any position in the pattern.
+\^	Matches literal '^'.  Can be used at any position in the pattern, but
+	not inside [].
 
 							*/\_^*
 \_^	Matches start-of-line. |/zero-width|  Can be used at any position in
-	the pattern.
+	the pattern, but not inside [].
 	Example		matches ~
 	\_s*\_^foo	white space and blank lines and then "foo" at
 			start-of-line
@@ -812,12 +813,13 @@ An ordinary atom can be:
 	|/zero-width|
 
 							*/\$*
-\$	Matches literal '$'.  Can be used at any position in the pattern.
+\$	Matches literal '$'.  Can be used at any position in the pattern, but
+	not inside [].
 
 							*/\_$*
 \_$	Matches end-of-line. |/zero-width|  Can be used at any position in the
-	pattern.  Note that "a\_$b" never matches, since "b" cannot match an
-	end-of-line.  Use "a\nb" instead |/\n|.
+	pattern, but not inside [].  Note that "a\_$b" never matches, since
+	"b" cannot match an end-of-line.  Use "a\nb" instead |/\n|.
 	Example		matches ~
 	foo\_$\_s*	"foo" at end-of-line and following white space and
 			blank lines
@@ -840,8 +842,9 @@ An ordinary atom can be:
 	|/zero-width|
 
 							*/\zs*
-\zs	Matches at any position, and sets the start of the match there: The
-	next char is the first char of the whole match. |/zero-width|
+\zs	Matches at any position, but not inside [], and sets the start of the
+	match there: The next char is the first char of the whole match.
+	|/zero-width|
 	Example: >
 		/^\s*\zsif
 <	matches an "if" at the start of a line, ignoring white space.
@@ -852,8 +855,9 @@ An ordinary atom can be:
 	This cannot be followed by a multi. *E888*
 	{not available when compiled without the |+syntax| feature}
 							*/\ze*
-\ze	Matches at any position, and sets the end of the match there: The
-	previous char is the last char of the whole match. |/zero-width|
+\ze	Matches at any position, but not inside [], and sets the end of the
+	match there: The previous char is the last char of the whole match.
+	|/zero-width|
 	Can be used multiple times, the last one encountered in a matching
 	branch is used.
 	Example: "end\ze\(if\|for\)" matches the "end" in "endif" and
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4071,7 +4071,6 @@ E252	options.txt	/*E252*
 E253	mbyte.txt	/*E253*
 E254	message.txt	/*E254*
 E255	sign.txt	/*E255*
-E256	message.txt	/*E256*
 E257	if_cscop.txt	/*E257*
 E258	remote.txt	/*E258*
 E259	if_cscop.txt	/*E259*
@@ -6323,6 +6322,7 @@ extend()	eval.txt	/*extend()*
 extension-removal	cmdline.txt	/*extension-removal*
 extensions-improvements	todo.txt	/*extensions-improvements*
 f	motion.txt	/*f*
+false	vim9.txt	/*false*
 false-variable	eval.txt	/*false-variable*
 faq	intro.txt	/*faq*
 farsi	farsi.txt	/*farsi*
@@ -8485,6 +8485,7 @@ progname-variable	eval.txt	/*progname-va
 progpath-variable	eval.txt	/*progpath-variable*
 progress.vim	syntax.txt	/*progress.vim*
 prompt-buffer	channel.txt	/*prompt-buffer*
+prompt_getprompt()	eval.txt	/*prompt_getprompt()*
 prompt_setcallback()	eval.txt	/*prompt_setcallback()*
 prompt_setinterrupt()	eval.txt	/*prompt_setinterrupt()*
 prompt_setprompt()	eval.txt	/*prompt_setprompt()*
@@ -9644,6 +9645,7 @@ toupper()	eval.txt	/*toupper()*
 tr()	eval.txt	/*tr()*
 trim()	eval.txt	/*trim()*
 trojan-horse	starting.txt	/*trojan-horse*
+true	vim9.txt	/*true*
 true-variable	eval.txt	/*true-variable*
 trunc()	eval.txt	/*trunc()*
 try-conditionals	eval.txt	/*try-conditionals*
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -1,4 +1,4 @@
-*terminal.txt*	For Vim version 8.2.  Last change: 2020 Jun 06
+*terminal.txt*	For Vim version 8.2.  Last change: 2020 Sep 04
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -476,9 +476,11 @@ term_dumpdiff({filename}, {filename} [, 
 		   "term_name"	     name to use for the buffer name, instead
 				     of the first file name.
 		   "term_rows"	     vertical size to use for the terminal,
-				     instead of using 'termwinsize'
+				     instead of using 'termwinsize', but
+				     respecting the minimal size
 		   "term_cols"	     horizontal size to use for the terminal,
-				     instead of using 'termwinsize'
+				     instead of using 'termwinsize', but
+				     respecting the minimal size
 		   "vertical"	     split the window vertically
 		   "curwin"	     use the current window, do not split the
 				     window; fails if the current buffer
--- a/runtime/doc/testing.txt
+++ b/runtime/doc/testing.txt
@@ -1,4 +1,4 @@
-*testing.txt*	For Vim version 8.2.  Last change: 2020 Aug 17
+*testing.txt*	For Vim version 8.2.  Last change: 2020 Sep 06
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.2.  Last change: 2020 Aug 29
+*todo.txt*      For Vim version 8.2.  Last change: 2020 Sep 07
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -41,15 +41,45 @@ browser use: https://github.com/vim/vim/
 Why does Test_invalid_sid() not work in the GUI?
 
 Making everything work:
-- Check :const works the same as in legacy script.
+- Should :const work the same as in legacy script?
+  Or should it work like in Typescript: only the variable is fixed, not the
+  value itself.
+  Then use ":const!" to also fix/lock the value?
+  Typescript uses "as const", which is weird.
+  Alternative:  const var = <const>value
+      looks quite strange quite verbose
+      But can be used in several places:
+	    SomeFunc(<const>[1, 2, 3])
+      In Vim this basically means "lock this value".
+      How about:
+	    SomeFunc(<const>[[1], [2], [3]])  # are sub-lists immutable?
+	    SomeFunc(<const>myList)  # is myList mutable afterwards?
+
 - Run the same tests in :def and Vim9 script, like in Test_expr7_not()
 - :put with a "=" register argument doesn't work, need to find the expression
   and compile it. (#6397)
 - At the Vim9 script level, keep script variables local to the block they are
-  declared in?  Need to remember what variables were declared and delete them
-  when leaving the block.
-- Implement { } block at the script level.
-- Use the line number argument with assert_fails() in many more tests.
+  declared in, like in Javascript (using :let).
+  -> Need to remember what variables were declared and delete them when
+     leaving the block.
+  -> if a function is defined it may need to keep the block-locals
+  Then Implement { } block at the script level.
+- Recognize call to assert_fails() and execute it in the function context?
+  Won't work if the command itself fails, not an expression failure:
+	assert_fails("unknown", "E99:")
+  Use try/catch is complicated:
+    let did_catch = false
+    try
+	unknown
+    catch
+	assert_caught('E99:')
+	did_catch = true
+    endtry
+    assert_true('did_catch')
+  Add a new command, 
+    assertfail
+       unknown
+    endassertfail E99:.*unknown
 - In autocmd: use legacy syntax, not whatever the current script uses?
 - need to check type when a declaration specifies a type: #6507
 	let nr: number = 'asdf'
@@ -181,10 +211,8 @@ Text properties:
 - :goto does not go to the right place when text properties are present.
   (#5930)
 - "cc" does not call inserted_bytes(). (Axel Forsman, #5763)
-- Get E685 with a sequence of commands. (#5674)
 - Combining text property with 'cursorline' does not always work (Billie
   Cleek, #5533)
-- Text properties spanning more than one line.  #5683
 - See remarks at top of src/textprop.c
 
 'incsearch' with :s:
@@ -263,7 +291,8 @@ Terminal emulator window:
 
 Error numbers available: E653
 
-Remove "MacOS X installation"?  $APPDIR is no longer set.
+Patch to implement the vimtutor with a plugin: #6414
+Was originally writtten by Felipe Morales.
 
 Remove SPACE_IN_FILENAME ? It is only used for completion.
 
@@ -372,9 +401,6 @@ When changing the crypt key the buffer s
 Like when changing 'fileformat'.  Save the old key in save_file_ff().
 (Ninu-Ciprian Marginean)
 
-Patch to implement the vimtutor with a plugin: #6414
-Was originally writtten by Felipe Morales.
-
 Strange sequence of BufWipeout and BufNew events while doing omni-complete.
 (Paul Jolly, #5656)
 Get BufDelete without preceding BufNew. (Paul Jolly, #5694)
@@ -397,6 +423,7 @@ Undo puts cursor in wrong line after "cG
 Implement completion for "breakadd".  Should expand the second argument, e.g.
 "func", and then function names after ":breakadd func".  Including
 script-local functions.
+Also for ":profile".
 
 :unmap <c-n> gives error but does remove the mapping. (Antony Scriven, 2019
 Dec 19)
@@ -1222,8 +1249,6 @@ Suggestion to improve pt-br spell checki
 
 Error in test_startup_utf8 on Solaris. (Danek Duvall, 2016 Aug 17)
 
-Completion for :!cmd shows each match twice. #1435
-
 GTK: When adding a timer from 'balloonexpr' it won't fire, because
 g_main_context_iteration() doesn't return.  Need to trigger an event when the
 timer expires.
@@ -1422,9 +1447,6 @@ Undo message is not always properly disp
 3.  Doesn't work properly according to Yukihiro Nakadaira.
 Also see #1635.
 
-When 'keywordprg' starts with ":" the argument is still escaped as a shell
-command argument. (Romain Lafourcade, 2016 Oct 16, #1175)
-
 Idea from Sven: record sequence of keys.  Useful to show others what they are
 doing (look over the shoulder), and also to see what happened.
 Probably list of keystrokes, with some annotations for mode changes.
--- a/runtime/doc/usr_03.txt
+++ b/runtime/doc/usr_03.txt
@@ -1,4 +1,4 @@
-*usr_03.txt*	For Vim version 8.2.  Last change: 2020 Feb 29
+*usr_03.txt*	For Vim version 8.2.  Last change: 2020 Sep 03
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -30,10 +30,11 @@ Table of contents: |usr_toc.txt|
 
 To move the cursor forward one word, use the "w" command.  Like most Vim
 commands, you can use a numeric prefix to move past multiple words.  For
-example, "3w" moves three words.  This figure shows how it works:
+example, "3w" moves three words.  This figure shows how it works (starting at
+the position marked with "x"):
 
 	This is a line with example text ~
-	  --->-->->----------------->
+	  x-->-->->----------------->
 	   w  w  w    3w
 
 Notice that "w" moves to the start of the next word if it already is at the
@@ -41,15 +42,15 @@ start of a word.
    The "b" command moves backward to the start of the previous word:
 
 	This is a line with example text ~
-	<----<--<-<---------<---
+	<----<--<-<---------<--x
 	   b   b b    2b      b
 
 There is also the "e" command that moves to the next end of a word and "ge",
 which moves to the previous end of a word:
 
 	This is a line with example text ~
-	   <-   <--- ----->   ---->
-	   ge    ge     e       e
+	   <----<----x---->------------>
+	   2ge   ge     e       we
 
 If you are at the last word of a line, the "w" command will take you to the
 first word in the next line.  Thus you can use this to move through a
@@ -82,12 +83,12 @@ an <End> key it will do the same thing.
 
 The "^" command moves to the first non-blank character of the line.  The "0"
 command (zero) moves to the very first character of the line, and the <Home>
-key does the same thing.  In a picture:
+key does the same thing.  In a picture ("." indicates a space):
 
 		  ^
-	     <------------
+	     <-----------x
 	.....This is a line with example text ~
-	<-----------------   --------------->
+	<----------------x   x-------------->
 		0		   $
 
 (the "....." indicates blanks here)
--- a/runtime/doc/usr_40.txt
+++ b/runtime/doc/usr_40.txt
@@ -1,4 +1,4 @@
-*usr_40.txt*	For Vim version 8.2.  Last change: 2020 Jul 28
+*usr_40.txt*	For Vim version 8.2.  Last change: 2020 Sep 02
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -453,15 +453,15 @@ matching BufWritePre autocommands and ex
 performs the ":write".
    The general form of the :autocmd command is as follows: >
 
-	:autocmd [group] {events} {file-pattern} [nested] {command}
+	:autocmd [group] {events} {file-pattern} [++nested] {command}
 
 The [group] name is optional.  It is used in managing and calling the commands
 (more on this later).  The {events} parameter is a list of events (comma
 separated) that trigger the command.
    {file-pattern} is a filename, usually with wildcards.  For example, using
 "*.txt" makes the autocommand be used for all files whose name end in ".txt".
-The optional [nested] flag allows for nesting of autocommands (see below), and
-finally, {command} is the command to be executed.
+The optional [++nested] flag allows for nesting of autocommands (see below),
+and finally, {command} is the command to be executed.
 
 
 EVENTS
@@ -578,7 +578,7 @@ trigger any new events.  If you read a f
 event, it will not trigger the autocommands that would set the syntax, for
 example.  To make the events triggered, add the "nested" argument: >
 
-	:autocmd FileChangedShell * nested  edit
+	:autocmd FileChangedShell * ++nested  edit
 
 
 EXECUTING AUTOCOMMANDS
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -327,9 +327,9 @@ Grouping is done with parentheses.  No s
 	:echo (10 + 5) * 2
 <	30 ~
 
-Strings can be concatenated with ".".  Example: >
-
-	:echo "foo" . "bar"
+Strings can be concatenated with ".." (see |expr6|).  Example: >
+
+	:echo "foo" .. "bar"
 <	foobar ~
 
 When the ":echo" command gets multiple arguments, it separates them with a
@@ -496,9 +496,9 @@ So far the commands in the script were e
 very powerful way to build commands and execute them.
    An example is to jump to a tag, which is contained in a variable: >
 
-	:execute "tag " . tag_name
-
-The "." is used to concatenate the string "tag " with the value of variable
+	:execute "tag " .. tag_name
+
+The ".." is used to concatenate the string "tag " with the value of variable
 "tag_name".  Suppose "tag_name" has the value "get_cmd", then the command that
 will be executed is: >
 
@@ -514,7 +514,7 @@ This jumps to the first line and formats
    To make ":normal" work with an expression, combine ":execute" with it.
 Example: >
 
-	:execute "normal " . normal_commands
+	:execute "normal " .. normal_commands
 
 The variable "normal_commands" must contain the Normal mode commands.
    Make sure that the argument for ":normal" is a complete command.  Otherwise
@@ -531,12 +531,12 @@ If you don't want to execute a string bu
 value, you can use the eval() function: >
 
 	:let optname = "path"
-	:let optval = eval('&' . optname)
+	:let optval = eval('&' .. optname)
 
 A "&" character is prepended to "path", thus the argument to eval() is
 "&path".  The result will then be the value of the 'path' option.
    The same thing can be done with: >
-	:exe 'let optval = &' . optname
+	:exe 'let optval = &' .. optname
 
 ==============================================================================
 *41.6*	Using functions
@@ -1288,7 +1288,7 @@ Example: >
 	:    let n = n + len(split(getline(lnum)))
 	:    let lnum = lnum + 1
 	:  endwhile
-	:  echo "found " . n . " words"
+	:  echo "found " .. n .. " words"
 	:endfunction
 
 You can call this function with: >
@@ -1301,7 +1301,7 @@ It will be executed once and echo the nu
 range, with the cursor in that line.  Example: >
 
 	:function  Number()
-	:  echo "line " . line(".") . " contains: " . getline(".")
+	:  echo "line " .. line(".") .. " contains: " .. getline(".")
 	:endfunction
 
 If you call this function with: >
@@ -1325,11 +1325,11 @@ so on.  The variable "a:0" contains the 
 
 	:function Show(start, ...)
 	:  echohl Title
-	:  echo "start is " . a:start
+	:  echo "start is " .. a:start
 	:  echohl None
 	:  let index = 1
 	:  while index <= a:0
-	:    echo "  Arg " . index . " is " . a:{index}
+	:    echo "  Arg " .. index .. " is " .. a:{index}
 	:    let index = index + 1
 	:  endwhile
 	:  echo ""
@@ -1737,10 +1737,10 @@ Another useful mechanism is the ":finall
 
 	:let tmp = tempname()
 	:try
-	:   exe ".,$write " . tmp
-	:   exe "!filter " . tmp
+	:   exe ".,$write " .. tmp
+	:   exe "!filter " .. tmp
 	:   .,$delete
-	:   exe "$read " . tmp
+	:   exe "$read " .. tmp
 	:finally
 	:   call delete(tmp)
 	:endtry
@@ -2091,8 +2091,8 @@ prepending it with "s:".
 We will define a function that adds a new typing correction: >
 
  30	function s:Add(from, correct)
- 31	  let to = input("type the correction for " . a:from . ": ")
- 32	  exe ":iabbrev " . a:from . " " . to
+ 31	  let to = input("type the correction for " .. a:from .. ": ")
+ 32	  exe ":iabbrev " .. a:from .. " " .. to
  ..
  36	endfunction
 
@@ -2197,7 +2197,7 @@ a few lines to count the number of corre
  30	function s:Add(from, correct)
  ..
  34	  let s:count = s:count + 1
- 35	  echo s:count . " corrections now"
+ 35	  echo s:count .. " corrections now"
  36	endfunction
 
 First s:count is initialized to 4 in the script itself.  When later the
@@ -2240,11 +2240,11 @@ Here is the resulting complete example: 
  28	noremap <SID>Add  :call <SID>Add(expand("<cword>"), 1)<CR>
  29
  30	function s:Add(from, correct)
- 31	  let to = input("type the correction for " . a:from . ": ")
- 32	  exe ":iabbrev " . a:from . " " . to
+ 31	  let to = input("type the correction for " .. a:from .. ": ")
+ 32	  exe ":iabbrev " .. a:from .. " " .. to
  33	  if a:correct | exe "normal viws\<C-R>\" \b\e" | endif
  34	  let s:count = s:count + 1
- 35	  echo s:count . " corrections now"
+ 35	  echo s:count .. " corrections now"
  36	endfunction
  37
  38	if !exists(":Correct")
@@ -2492,7 +2492,7 @@ should be undone.  Set the b:undo_ftplug
 undo the settings in your filetype plugin.  Example: >
 
 	let b:undo_ftplugin = "setlocal fo< com< tw< commentstring<"
-		\ . "| unlet b:match_ignorecase b:match_words b:match_skip"
+		\ .. "| unlet b:match_ignorecase b:match_words b:match_skip"
 
 Using ":setlocal" with "<" after the option name resets the option to its
 global value.  That is mostly the best way to reset the option value.
@@ -2613,17 +2613,17 @@ The following example shows how it's don
 		map <F19> :call BufNetWrite('something')<CR>
 
 		let s:did_load = 1
-		exe 'au FuncUndefined BufNet* source ' . expand('<sfile>')
+		exe 'au FuncUndefined BufNet* source ' .. expand('<sfile>')
 		finish
 	endif
 
 	function BufNetRead(...)
-		echo 'BufNetRead(' . string(a:000) . ')'
+		echo 'BufNetRead(' .. string(a:000) .. ')'
 		" read functionality here
 	endfunction
 
 	function BufNetWrite(...)
-		echo 'BufNetWrite(' . string(a:000) . ')'
+		echo 'BufNetWrite(' .. string(a:000) .. ')'
 		" write functionality here
 	endfunction
 
--- a/runtime/doc/version5.txt
+++ b/runtime/doc/version5.txt
@@ -1,4 +1,4 @@
-*version5.txt*  For Vim version 8.2.  Last change: 2020 Aug 15
+*version5.txt*  For Vim version 8.2.  Last change: 2020 Sep 02
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -4417,7 +4417,7 @@ Now map <xF4> to <F4>, so that the user 
 When compiling os_win32.c with MIN_FEAT the apply_autocmds() should not be
 used. (Aaron)
 
-This autocommand looped forever: ":au FileChangedShell * nested e <afile>"
+This autocommand looped forever: ":au FileChangedShell * ++nested e <afile>"
 Now FileChangeShell never nests. (Roemer)
 
 When evaluating an ":elseif" that was not going to matter anyway, ignore
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -1,4 +1,4 @@
-*vim9.txt*	For Vim version 8.2.  Last change: 2020 Aug 27
+*vim9.txt*	For Vim version 8.2.  Last change: 2020 Sep 07
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -114,7 +114,7 @@ There is no "a:" dictionary or "a:000" l
 
 Variable arguments are defined as the last argument, with a name and have a
 list type, similar to TypeScript.  For example, a list of numbers: >
-  	def MyFunc(...itemlist: list<number>)
+	def MyFunc(...itemlist: list<number>)
 	   for item in itemlist
 	     ...
 
@@ -128,8 +128,8 @@ function or variable the "g:" prefix sho
 autoload script the "name#" prefix is sufficient. >
 	def ThisFunction()          # script-local
 	def s:ThisFunction()        # script-local
-	def g:ThatFunction()	    # global
-	def ThatFunction()	    # global if no local ThatFunction()
+	def g:ThatFunction()        # global
+	def ThatFunction()          # global if no local ThatFunction()
 	def scriptname#function()   # autoload
 
 When using `:function` or `:def` to specify a new function inside a function,
@@ -173,7 +173,7 @@ blocks.  Once the block ends the variabl
 	else
 	   let inner = 0
 	endif
-	echo inner  " Error!
+	echo inner  # Error!
 
 The declaration must be done earlier: >
 	let inner: number
@@ -190,7 +190,7 @@ To intentionally avoid a variable being 
 	   let temp = 'temp'
 	   ...
 	}
-	echo temp  " Error!
+	echo temp  # Error!
 
 An existing variable cannot be assigned to with `:let`, since that implies a
 declaration.  Global, window, tab, buffer and Vim variables can only be used
@@ -222,7 +222,7 @@ isn't that easy.
 Omitting :call and :eval ~
 
 Functions can be called without `:call`: >
-  	writefile(lines, 'file')
+	writefile(lines, 'file')
 Using `:call` is still possible, but this is discouraged.
 
 A method call without `eval` is possible, so long as the start is an
@@ -329,26 +329,26 @@ Notes:
   current function.
 - No line break is allowed in the LHS of an assignment.  Specifically when
   unpacking a list |:let-unpack|. This is OK: >
-  	[var1, var2] =
+	[var1, var2] =
 		Func()
 <  This does not work: >
-  	[var1,
+	[var1,
 	    var2] =
 		Func()
 - No line break is allowed in between arguments of an `:echo`, `:execute` and
   similar commands.  This is OK: >
-  	echo [1,
+	echo [1,
 		2] [3,
 			4]
 <  This does not work: >
-  	echo [1, 2]
+	echo [1, 2]
 		[3, 4]
 - No line break is allowed in the arguments of a lambda, between the "{" and
   "->".  This is OK: >
-  	filter(list, {k, v ->
+	filter(list, {k, v ->
 			v > 0})
 <  This does not work: >
-  	filter(list, {k,
+	filter(list, {k,
 			v -> v > 0})
 
 
@@ -372,11 +372,11 @@ The 'ignorecase' option is not used for 
 White space ~
 
 Vim9 script enforces proper use of white space.  This is no longer allowed: >
-	let var=234	" Error!
-	let var= 234	" Error!
-	let var =234	" Error!
+	let var=234	# Error!
+	let var= 234	# Error!
+	let var =234	# Error!
 There must be white space before and after the "=": >
-	let var = 234	" OK
+	let var = 234	# OK
 White space must also be put before the # that starts a comment after a
 command: >
 	let var = 234# Error!
@@ -386,14 +386,14 @@ White space is required around most oper
 
 White space is not allowed:
 - Between a function name and the "(": >
-  	call Func (arg)	   " Error!
-  	call Func
-	     \ (arg)	   " Error!
-  	call Func(arg)	   " OK
-  	call Func(
-	     \ arg)	   " OK
-  	call Func(
-	     \ arg	   " OK
+	call Func (arg)	   # Error!
+	call Func
+	     \ (arg)	   # Error!
+	call Func(arg)	   # OK
+	call Func(
+	     \ arg)	   # OK
+	call Func(
+	     \ arg	   # OK
 	     \ )
 
 
@@ -438,7 +438,7 @@ converted to string. >
 
 Simple types are string, float, special and bool.  For other types |string()|
 can be used.
-
+							*false* *true*
 In Vim9 script one can use "true" for v:true and "false" for v:false.
 
 Indexing a string with [idx] or [idx, idx] uses character indexes instead of
@@ -455,16 +455,16 @@ same time tries to support the legacy Vi
 be made.  Here is a summary of what might be unexpected.
 
 Ex command ranges need to be prefixed with a colon. >
-  	->		" legacy Vim: shifts the previous line to the right
-	->func()	" Vim9: method call in continuation line
-	:->		" Vim9: shifts the previous line to the right
+	->		# legacy Vim: shifts the previous line to the right
+	->func()	# Vim9: method call in continuation line
+	:->		# Vim9: shifts the previous line to the right
 
-	%s/a/b		" legacy Vim: substitute on all lines
+	%s/a/b		# legacy Vim: substitute on all lines
 	x = alongname
-	     % another	" Vim9: line continuation without a backslash
-	:%s/a/b		" Vim9: substitute on all lines
-	'text'->func()	" Vim9: method call
-	:'t		" legacy Vim: jump to mark m
+	     % another	# Vim9: line continuation without a backslash
+	:%s/a/b		# Vim9: substitute on all lines
+	'text'->func()	# Vim9: method call
+	:'t		# legacy Vim: jump to mark m
 
 Some Ex commands can be confused with assignments in Vim9 script: >
 	g:name = value  # assignment
@@ -484,7 +484,7 @@ Vim9 functions are compiled as a whole: 
 	  if !has('feature')
 	    return
 	  endif
-	  use-feature  " May give compilation error
+	  use-feature  # May give compilation error
 	enddef
 For a workaround, split it in two functions: >
 	func Maybe()
@@ -497,7 +497,7 @@ For a workaround, split it in two functi
 	    use-feature
 	  enddef
 	endif
-Of put the unsupported code inside an `if` with a constant expression that
+Or put the unsupported code inside an `if` with a constant expression that
 evaluates to false: >
 	def Maybe()
 	  if has('feature')
@@ -699,8 +699,8 @@ Type inference						*type-inference*
 
 In general: Whenever the type is clear it can be omitted.  For example, when
 declaring a variable and giving it a value: >
-	let var = 0		" infers number type
-	let var = 'hello'	" infers string type
+	let var = 0		# infers number type
+	let var = 'hello'	# infers string type
 
 The type of a list and dictionary comes from the common type of the values.
 If the values all have the same type, that type is used for the list or
@@ -719,8 +719,8 @@ string doesn't start with a number.  Qui
 bugs.
 
 In Vim9 script this has been made stricter.  In most places it works just as
-before, if the expected type was already.  There will sometimes be an error,
-thus breaking backwards compatibility.  For example:
+before, if the value used matches the expected type.  There will sometimes be
+an error, thus breaking backwards compatibility.  For example:
 - Using a number other than 0 or 1 where a boolean is expected.  *E1023*
 - Using a string value when setting a number options.
 - Using a number where a string is expected.   *E1024*
@@ -801,6 +801,9 @@ Then you can use "That.EXPORTED_CONST", 
 to choose the name "That", but it is highly recommended to use the name of the
 script file to avoid confusion.
 
+`:import` can also be used in legacy Vim script.  The imported items still
+become script-local, even when the "s:" prefix is not given.
+
 The script name after `import` can be:
 - A relative path, starting "." or "..".  This finds a file relative to the
   location of the script file itself.  This is useful to split up a large
@@ -846,7 +849,7 @@ 3. Other functionality, possibly shared 
    items and any private items. >
 	vim9script
 	let localVar = 'local'
-   	export def FilterFunc(arg: string): string
+	export def FilterFunc(arg: string): string
 	   ...
 <   This goes in .../import/someother.vim.
 
@@ -934,8 +937,8 @@ the well-known parts of legacy Vim scrip
 
 Since Vim already uses `:let` and `:const` and optional type checking is
 desirable, the JavaScript/TypeScript syntax fits best for variable
-declarations. >
-	const greeting = 'hello'  " string type is inferred
+declarations: >
+	const greeting = 'hello'  # string type is inferred
 	let name: string
 	...
 	name = 'John'
@@ -945,32 +948,40 @@ are doing.  Some details are unexpected 
 || and && operators work.  Legacy Vim script: >
 	let result = 44
 	...
-	return result || 0	" returns 1
+	return result || 0	# returns 1
 
 Vim9 script works like JavaScript/TypeScript, keep the value: >
 	let result = 44
 	...
-	return result || 0	" returns 44
+	return result || 0	# returns 44
 
 On the other hand, overloading "+" to use both for addition and string
 concatenation goes against legacy Vim script and often leads to mistakes.
 For that reason we will keep using ".." for string concatenation.  Lua also
 uses ".." this way.
 
+There is no intention to completely match TypeScript syntax and semantics.  We
+just want to take those parts that we can use for Vim and we expect Vim users
+are happy with.  TypeScript is a complex language with its own advantages and
+disadvantages.  People used to other languages (Java, Python, etc.) will also
+find things in TypeScript that they do not like or do not understand.  We'll
+try to avoid those things.
+
 
 Import and Export ~
 
 A problem of legacy Vim script is that by default all functions and variables
 are global.  It is possible to make them script-local, but then they are not
-available in other scripts.
+available in other scripts.  This defies the concept of a package that only
+exports selected items and keeps the rest local.
 
 In Vim9 script a mechanism very similar to the JavaScript import and export
 mechanism is supported.  It is a variant to the existing `:source` command
 that works like one would expect:
 - Instead of making everything global by default, everything is script-local,
   unless exported.
-- When importing a script the symbols that are imported are listed, avoiding
-  name conflicts and failures if later functionality is added.
+- When importing a script the symbols that are imported are explicitly listed,
+  avoiding name conflicts and failures if functionality is added later.
 - The mechanism allows for writing a big, long script with a very clear API:
   the exported function(s) and class(es).
 - By using relative paths loading can be much faster for an import inside of a
@@ -982,27 +993,28 @@ that works like one would expect:
 When sourcing a Vim9 script from a legacy script, only the items defined
 globally can be used, not the exported items.  Alternatives considered:
 - All the exported items become available as script-local items.  This makes
-  it uncontrollable what items get defined.
+  it uncontrollable what items get defined and likely soon leads to trouble.
 - Use the exported items and make them global.  Disadvantage is that it's then
   not possible to avoid name clashes in the global namespace.
 - Completely disallow sourcing a Vim9 script, require using `:import`.  That
   makes it difficult to use scripts for testing, or sourcing them from the
   command line to try them out.
+Note that you can also use `:import` in legacy Vim script, see above.
 
 
 Classes ~
 
 Vim supports interfaces to Perl, Python, Lua, Tcl and a few others.  But
-these have never become widespread.  When Vim 9 was designed a decision was
-made to phase out these interfaces and concentrate on Vim script, while
-encouraging plugin authors to write code in any language and run it as an
-external tool, using jobs and channels.
+these interfaces have never become widespread.  When Vim 9 was designed a
+decision was made to phase out these interfaces and concentrate on Vim script,
+while encouraging plugin authors to write code in any language and run it as
+an external tool, using jobs and channels.
 
 Still, using an external tool has disadvantages.  An alternative is to convert
 the tool into Vim script.  For that to be possible without too much
 translation, and keeping the code fast at the same time, the constructs of the
 tool need to be supported.  Since most languages support classes the lack of
-class support in Vim is then a problem.
+support for classes in Vim is then a problem.
 
 Previously Vim supported a kind-of object oriented programming by adding
 methods to a dictionary.  With some care this could be made to work, but it
@@ -1010,7 +1022,7 @@ does not look like real classes.  On top
 the use of dictionaries.
 
 The support of classes in Vim9 script is a "minimal common functionality" of
-class support in most languages.  It works mostly like Java, which is the most
+class support in most languages.  It works much like Java, which is the most
 popular programming language.
 
 
--- a/runtime/doc/windows.txt
+++ b/runtime/doc/windows.txt
@@ -1,4 +1,4 @@
-*windows.txt*   For Vim version 8.2.  Last change: 2020 Aug 15
+*windows.txt*   For Vim version 8.2.  Last change: 2020 Sep 02
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -955,12 +955,12 @@ CTRL-W g }						*CTRL-W_g}*
 		cursor.  This is less clever than using |:ptag|, but you don't
 		need a tags file and it will also find matches in system
 		include files.  Example: >
-  :au! CursorHold *.[ch] nested exe "silent! psearch " . expand("<cword>")
+  :au! CursorHold *.[ch] ++nested exe "silent! psearch " . expand("<cword>")
 <		Warning: This can be slow.
 
 Example						*CursorHold-example*  >
 
-  :au! CursorHold *.[ch] nested exe "silent! ptag " . expand("<cword>")
+  :au! CursorHold *.[ch] ++nested exe "silent! ptag " . expand("<cword>")
 
 This will cause a ":ptag" to be executed for the keyword under the cursor,
 when the cursor hasn't moved for the time set with 'updatetime'.  The "nested"
@@ -973,7 +973,7 @@ be found.  Also see |CursorHold|.  To di
 A nice addition is to highlight the found tag, avoid the ":ptag" when there
 is no word under the cursor, and a few other things: >
 
-  :au! CursorHold *.[ch] nested call PreviewWord()
+  :au! CursorHold *.[ch] ++nested call PreviewWord()
   :func PreviewWord()
   :  if &previewwindow			" don't do this in the preview window
   :    return
--- a/runtime/ftplugin/spec.vim
+++ b/runtime/ftplugin/spec.vim
@@ -183,12 +183,10 @@ if !exists("*s:ParseRpmVars")
 		endif
 		let varname = strpart(a:str, start+2, end-(start+2))
 		execute a:strline
-		let definestr = "^[ \t]*%(?:global|define)[ \t]\\+" . varname . "[ \t]\\+\\(.*\\)$"
+		let definestr = "^[ \t]*%\\(define\\|global\\)[ \t]\\+".varname."[ \t]\\+\\(.*\\)$"
 		let linenum = search(definestr, "bW")
-		if (linenum != -1)
-			let ret = ret .  substitute(getline(linenum), definestr, "\\1", "")
-		else
-			let ret = ret . strpart(str, start, end+1-start)
+		if (linenum != 0)
+			let ret = ret .  substitute(getline(linenum), definestr, "\\2", "")
 		endif
 	endwhile
 	return ret
--- a/runtime/indent/json.vim
+++ b/runtime/indent/json.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:		JSON
 " Mantainer:		Eli Parra <eli@elzr.com> https://github.com/elzr/vim-json
-" Last Change:          2017 Jun 13
+" Last Change:          2020 Aug 30
 "   https://github.com/jakar/vim-json/commit/20b650e22aa750c4ab6a66aa646bdd95d7cd548a#diff-e81fc111b2052e306d126bd9989f7b7c
 " Original Author:	Rogerz Zhang <rogerz.zhang at gmail.com> http://github.com/rogerz/vim-json
 " Acknowledgement:      Based off of vim-javascript maintained by Darrick Wiebe 
@@ -19,7 +19,7 @@ let b:did_indent = 1
 setlocal nosmartindent
 
 " Now, set up our indentation expression and keys that trigger it.
-setlocal indentexpr=GetJSONIndent()
+setlocal indentexpr=GetJSONIndent(v:lnum)
 setlocal indentkeys=0{,0},0),0[,0],!^F,o,O,e
 
 " Only define the function once.
@@ -86,26 +86,28 @@ endfunction
 " 3. GetJSONIndent Function {{{1
 " =========================
 
-function GetJSONIndent()
+function GetJSONIndent(...)
   " 3.1. Setup {{{2
   " ----------
+  " For the current line, use the first argument if given, else v:lnum
+  let clnum = a:0 ? a:1 : v:lnum
 
-  " Set up variables for restoring position in file.  Could use v:lnum here.
+  " Set up variables for restoring position in file.  Could use clnum here.
   let vcol = col('.')
 
   " 3.2. Work on the current line {{{2
   " -----------------------------
 
   " Get the current line.
-  let line = getline(v:lnum)
+  let line = getline(clnum)
   let ind = -1
 
   " If we got a closing bracket on an empty line, find its match and indent
   " according to it.
   let col = matchend(line, '^\s*[]}]')
 
-  if col > 0 && !s:IsInString(v:lnum, col)
-    call cursor(v:lnum, col)
+  if col > 0 && !s:IsInString(clnum, col)
+    call cursor(clnum, col)
     let bs = strpart('{}[]', stridx('}]', line[col - 1]) * 2, 2)
 
     let pairstart = escape(bs[0], '[')
@@ -122,14 +124,14 @@ function GetJSONIndent()
   endif
 
   " If we are in a multi-line string, don't do anything to it.
-  if s:IsInString(v:lnum, matchend(line, '^\s*') + 1)
+  if s:IsInString(clnum, matchend(line, '^\s*') + 1)
     return indent('.')
   endif
 
   " 3.3. Work on the previous line. {{{2
   " -------------------------------
 
-  let lnum = prevnonblank(v:lnum - 1)
+  let lnum = prevnonblank(clnum - 1)
 
   if lnum == 0
     return 0
@@ -151,7 +153,7 @@ function GetJSONIndent()
     if counts[0] == '1' || counts[1] == '1' || counts[2] == '1'
       return ind + shiftwidth()
     else
-      call cursor(v:lnum, vcol)
+      call cursor(clnum, vcol)
     end
   endif
 
new file mode 100644
--- /dev/null
+++ b/runtime/keymap/french-azerty.vim
@@ -0,0 +1,81 @@
+" Vim Keymap file for French standard keyboard layout (without AltGr keys as
+" they don't work reliably in all version of vim)
+
+" Maintainer:   Yerlan Sergaziyev <yerlaser@outlook.com>
+" Last Changed: 2020-07-18
+
+scriptencoding utf-8
+
+let b:keymap_name = "fr"
+
+loadkeymap
+1	& ASCII AMPERSAND
+2	é LATIN SMALL LETTER E WITH ACUTE
+3	" ASCII DOUBLE QUOTES
+4	' ASCII SINGLE QUOTE
+5	( ASCII LEFT PARENTHESIS
+6	- ASCII MINUS
+7	è LATIN SMALL LETTER E WITH GRAVE
+8	_ ASCII UNDERSCORE
+9	ç LATIN SMALL LETTER C WITH CEDILLA
+0	à LATIN SMALL LETTER A WITH GRAVE
+-	) ASCII RIGHT PARENTHESIS
+! 1 ASCII DIGIT 1
+@ 2 ASCII DIGIT 2
+# 3 ASCII DIGIT 3
+$ 4 ASCII DIGIT 4
+% 5 ASCII DIGIT 5
+^ 6 ASCII DIGIT 6
+& 7 ASCII DIGIT 7
+* 8 ASCII DIGIT 8
+( 9 ASCII DIGIT 9
+) 0 ASCII DIGIT 0
+_ ° DEGREE SIGN
+q	a LATIN SMALL LETTER A
+a	q LATIN SMALL LETTER Q
+z	w LATIN SMALL LETTER W
+w	z LATIN SMALL LETTER Z
+Q	A LATIN CAPITAL LETTER A
+A	Q LATIN CAPITAL LETTER Q
+Z	W LATIN CAPITAL LETTER W
+W	Z LATIN CAPITAL LETTER Z
+[[ ^ ASCII CIRCUMFLEX
+[q â LATIN SMALL LETTER A WITH CIRCUMFLEX
+[e ê LATIN SMALL LETTER E WITH CIRCUMFLEX
+[u û LATIN SMALL LETTER U WITH CIRCUMFLEX
+[i î LATIN SMALL LETTER I WITH CIRCUMFLEX
+[o ô LATIN SMALL LETTER O WITH CIRCUMFLEX
+[Q Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+[E Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+[U Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+[I Î LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+[O Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+{{ ¨ UMLAUT
+{q ä LATIN SMALL LETTER A WITH UMLAUT
+{e ë LATIN SMALL LETTER E WITH UMLAUT
+{y ÿ LATIN SMALL LETTER Y WITH UMLAUT
+{u ü LATIN SMALL LETTER U WITH UMLAUT
+{i ï LATIN SMALL LETTER I WITH UMLAUT
+{o ö LATIN SMALL LETTER O WITH UMLAUT
+{Q Ä LATIN CAPITAL LETTER A WITH UMLAUT
+{E Ë LATIN CAPITAL LETTER E WITH UMLAUT
+{Y Ÿ LATIN CAPITAL LETTER Y WITH UMLAUT
+{U Ü LATIN CAPITAL LETTER U WITH UMLAUT
+{I Ï LATIN CAPITAL LETTER I WITH UMLAUT
+{O Ö LATIN CAPITAL LETTER O WITH UMLAUT
+] $ ASCII GRAVE
+} £ POUND SIGN
+;	m LATIN SMALL LETTER M
+: M LATIN CAPITAL LETTER M
+'	ù LATIN SMALL LETTER U WITH GRAVE
+\" % ASCII PERCENT
+\\ * ASCII ASTERISK
+| µ GREEK LETTER MU
+m , ASCII COMMA
+M ? ASCII QUESTION MARK
+, ; ASCII SEMICOLON 
+< . ASCII DOT
+. : ASCII COLON 
+> / ASCII SLASH
+/ ! ASCII EXCLAMATION MARK
+? §  SECTION SIGN
new file mode 100644
--- /dev/null
+++ b/runtime/keymap/german-qwertz.vim
@@ -0,0 +1,76 @@
+" Vim Keymap file for German standard keyboard layout (without AltGr keys as
+" they don't work reliably in all version of vim)
+
+" Maintainer:   Yerlan Sergaziyev <yerlaser@outlook.com>
+" Last Changed: 2020-07-18
+
+scriptencoding utf-8
+
+let b:keymap_name = "de"
+
+loadkeymap
+`` ^ ASCII CIRCUMFLEX
+`e ê LATIN SMALL LETTER E WITH CIRCUMFLEX
+`u û LATIN SMALL LETTER U WITH CIRCUMFLEX
+`i î LATIN SMALL LETTER I WITH CIRCUMFLEX
+`o ô LATIN SMALL LETTER O WITH CIRCUMFLEX
+`a â LATIN SMALL LETTER A WITH CIRCUMFLEX
+`E Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+`U Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+`I Î LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+`O Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+`A Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+- ß LATIN SMALL LETTER SZ
+== ´ ASCII ACUTE ACCENT
+=e é LATIN SMALL LETTER E WITH ACUTE
+=u ú LATIN SMALL LETTER U WITH ACUTE
+=i í LATIN SMALL LETTER I WITH ACUTE
+=o ó LATIN SMALL LETTER O WITH ACUTE
+=a á LATIN SMALL LETTER A WITH ACUTE
+=z ý LATIN SMALL LETTER Y WITH ACUTE
+=E É LATIN CAPITAL LETTER E WITH ACUTE
+=U Ú LATIN CAPITAL LETTER U WITH ACUTE
+=I Í LATIN CAPITAL LETTER I WITH ACUTE
+=O Ó LATIN CAPITAL LETTER O WITH ACUTE
+=A Á LATIN CAPITAL LETTER A WITH ACUTE
+=Z Ý LATIN CAPITAL LETTER Y WITH ACUTE
+=S ẞ LATIN CAPITAL LETTER SZ
+++ ` ASCII GRAVE
++e è LATIN SMALL LETTER E WITH GRAVE
++u ù LATIN SMALL LETTER U WITH GRAVE
++i ì LATIN SMALL LETTER I WITH GRAVE
++o ò LATIN SMALL LETTER O WITH GRAVE
++a à LATIN SMALL LETTER A WITH GRAVE
++E È LATIN CAPITAL LETTER E WITH GRAVE
++U Ù LATIN CAPITAL LETTER U WITH GRAVE
++I Ì LATIN CAPITAL LETTER I WITH GRAVE
++O Ò LATIN CAPITAL LETTER O WITH GRAVE
++A À LATIN CAPITAL LETTER A WITH GRAVE
+y z LATIN SMALL LETTER Z
+[ ü LATIN SMALL LETTER U WITH UMLAUT
+] + ASCII PLUS
+\\ # ASCII NUMBER SIGN
+; ö LATIN SMALL LETTER O WITH UMLAUT
+' ä LATIN SMALL LETTER A WITH UMLAUT
+z y LATIN SMALL LETTER Y
+/ - ASCII MINUS
+~ ° DEGREE SIGN
+@ " ASCII DOUBLE QUOTES
+# § SECTION SIGN
+^ & ASCII AMPERSAND
+& / ASCII SLASH
+* ( ASCII LEFT PARENTHESIS
+( ) ASCII RIGHT PARENTHESIS
+) = ASCII EQUAL SIGN
+_ ? ASCII QUESTION MARK
++ ` ASCII GRAVE
+Y Z LATIN CAPITAL LETTER Z
+{ Ü LATIN CAPITAL LETTER U WITH UMLAUT
+} * ASCII ASTERISK
+| ' ASCII SINGLE QUOTE
+: Ö LATIN CAPITAL LETTER O WITH UMLAUT
+\" Ä LATIN CAPITAL LETTER A WITH UMLAUT
+Z Y LATIN CAPITAL LETTER Y
+< ; ASCII SEMICOLON 
+> : ASCII COLON 
+? _ ASCII UNDERSCORE
--- a/runtime/keymap/turkish-f.vim
+++ b/runtime/keymap/turkish-f.vim
@@ -110,3 +110,4 @@ n z LATIN SMALL LETTER Z
 ˙ ₺ TURKISH LIRA SIGN
 ¬ £ POUND SIGN
 … ¥ YEN SIGN
+« ` GRAVE ACCENT
--- a/runtime/syntax/php.vim
+++ b/runtime/syntax/php.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
-" Language: php PHP 3/4/5/7
+" Language: php PHP 3/4/5/7/8
 " Maintainer: Tyson Andre <tysonandre775@hotmail.com>
-" Last Change: May 11, 2020
+" Last Change: Sep 07, 2020
 " URL: https://github.com/TysonAndre/vim-syntax
 " Former Maintainers: 
 "         Jason Woofenden <jason@jasonwoof.com>
@@ -109,7 +109,7 @@ syn keyword phpIntVar GLOBALS PHP_ERRMSG
 syn keyword phpCoreConstant PHP_VERSION PHP_OS DEFAULT_INCLUDE_PATH PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_BINDIR PHP_LIBDIR PHP_DATADIR PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END contained
 
 " Predefined constants
-" Generated by: curl -q http://php.net/manual/en/errorfunc.constants.php | grep -oP 'E_\w+' | sort -u
+" Generated by: curl -q https://www.php.net/manual/en/errorfunc.constants.php | grep -oP 'E_\w+' | sort -u
 syn keyword phpCoreConstant E_ALL E_COMPILE_ERROR E_COMPILE_WARNING E_CORE_ERROR E_CORE_WARNING E_DEPRECATED E_ERROR E_NOTICE E_PARSE E_RECOVERABLE_ERROR E_STRICT E_USER_DEPRECATED E_USER_ERROR E_USER_NOTICE E_USER_WARNING E_WARNING contained
 
 syn case ignore
@@ -117,7 +117,10 @@ syn case ignore
 syn keyword phpConstant __LINE__ __FILE__ __FUNCTION__ __METHOD__ __CLASS__ __DIR__ __NAMESPACE__ __TRAIT__ contained
 
 
-" Function and Methods ripped from php_manual_de.tar.gz Jan 2003
+" Function and Methods ripped from php_manual_de.tar.gz Jan 2003 and amended later with common bundled extensions
+
+syn keyword phpFunctions apc_cache_info apc_clear_cache apc_store apc_fetch apc_enabled apc_delete apc_add apc_sma_info apc_inc apc_dec apc_cas apc_exists contained
+syn keyword phpFunctions apcu_add apcu_cache_info apcu_cas apcu_clear_cache apcu_dec apcu_delete apcu_enabled apcu_entry apcu_exists apcu_fetch apcu_inc apcu_key_info apcu_sma_info apcu_store contained
 syn keyword phpFunctions apache_child_terminate apache_get_modules apache_get_version apache_getenv apache_lookup_uri apache_note apache_request_headers apache_response_headers apache_setenv ascii2ebcdic ebcdic2ascii getallheaders virtual contained
 syn keyword phpFunctions array_change_key_case array_chunk array_column array_combine array_count_values array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_diff array_fill_keys array_fill array_filter array_flip array_intersect_assoc array_intersect_key array_intersect_uassoc array_intersect_ukey array_intersect array_key_exists array_keys array_map array_merge_recursive array_merge array_multisort array_pad array_pop array_product array_push array_rand array_reduce array_replace_recursive array_replace array_reverse array_search array_shift array_slice array_splice array_sum array_udiff_assoc array_udiff_uassoc array_udiff array_uintersect_assoc array_uintersect_uassoc array_uintersect array_unique array_unshift array_values array_walk_recursive array_walk arsort asort count current each end in_array key_exists key krsort ksort natcasesort natsort next pos prev range reset rsort shuffle sizeof sort uasort uksort usort contained
 syn keyword phpFunctions aspell_check aspell_new aspell_suggest contained
@@ -130,10 +133,10 @@ syn keyword phpFunctions com VARIANT com
 syn keyword phpFunctions cpdf_add_annotation cpdf_add_outline cpdf_arc cpdf_begin_text cpdf_circle cpdf_clip cpdf_close cpdf_closepath_fill_stroke cpdf_closepath_stroke cpdf_closepath cpdf_continue_text cpdf_curveto cpdf_end_text cpdf_fill_stroke cpdf_fill cpdf_finalize_page cpdf_finalize cpdf_global_set_document_limits cpdf_import_jpeg cpdf_lineto cpdf_moveto cpdf_newpath cpdf_open cpdf_output_buffer cpdf_page_init cpdf_place_inline_image cpdf_rect cpdf_restore cpdf_rlineto cpdf_rmoveto cpdf_rotate_text cpdf_rotate cpdf_save_to_file cpdf_save cpdf_scale cpdf_set_action_url cpdf_set_char_spacing cpdf_set_creator cpdf_set_current_page cpdf_set_font_directories cpdf_set_font_map_file cpdf_set_font cpdf_set_horiz_scaling cpdf_set_keywords cpdf_set_leading cpdf_set_page_animation cpdf_set_subject cpdf_set_text_matrix cpdf_set_text_pos cpdf_set_text_rendering cpdf_set_text_rise cpdf_set_title cpdf_set_viewer_preferences cpdf_set_word_spacing cpdf_setdash cpdf_setflat cpdf_setgray_fill cpdf_setgray_stroke cpdf_setgray cpdf_setlinecap cpdf_setlinejoin cpdf_setlinewidth cpdf_setmiterlimit cpdf_setrgbcolor_fill cpdf_setrgbcolor_stroke cpdf_setrgbcolor cpdf_show_xy cpdf_show cpdf_stringwidth cpdf_stroke cpdf_text cpdf_translate contained
 syn keyword phpFunctions crack_check crack_closedict crack_getlastmessage crack_opendict contained
 syn keyword phpFunctions ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_graph ctype_lower ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit contained
-syn keyword phpFunctions curl_close curl_errno curl_error curl_exec curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_setopt curl_version contained
+syn keyword phpFunctions curl_close curl_errno curl_error curl_exec curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_setopt curl_version curl_copy_handle curl_escape curl_file_create curl_multi_errno curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_share_close curl_share_errno curl_share_init curl_share_setopt curl_share_strerror curl_strerror curl_unescape contained
 syn keyword phpFunctions cybercash_base64_decode cybercash_base64_encode cybercash_decr cybercash_encr contained
 syn keyword phpFunctions cyrus_authenticate cyrus_bind cyrus_close cyrus_connect cyrus_query cyrus_unbind contained
-syn keyword phpFunctions checkdate date getdate gettimeofday gmdate gmmktime gmstrftime localtime microtime mktime strftime strtotime time contained
+syn keyword phpFunctions checkdate date getdate gettimeofday gmdate gmmktime gmstrftime localtime microtime mktime strftime strtotime time date_add date_create date_create_from_format date_create_immutable date_create_immutable_from_format date_date_set date_default_timezone_get date_default_timezone_set date_diff date_format date_get_last_errors date_interval_create_from_date_string date_interval_format date_isodate_set date_modify date_offset_get date_parse date_parse_from_format date_sub date_sun_info date_sunrise date_sunset date_time_set date_timestamp_get date_timestamp_set date_timezone_get date_timezone_set idate timezone_abbreviations_list timezone_identifiers_list timezone_location_get timezone_name_from_abbr timezone_name_get timezone_offset_get timezone_open timezone_transitions_get timezone_version_get contained
 syn keyword phpFunctions dba_close dba_delete dba_exists dba_fetch dba_firstkey dba_handlers dba_insert dba_key_split dba_list dba_nextkey dba_open dba_optimize dba_popen dba_replace dba_sync contained
 syn keyword phpFunctions dbase_add_record dbase_close dbase_create dbase_delete_record dbase_get_header_info dbase_get_record_with_names dbase_get_record dbase_numfields dbase_numrecords dbase_open dbase_pack dbase_replace_record contained
 syn keyword phpFunctions dblist dbmclose dbmdelete dbmexists dbmfetch dbmfirstkey dbminsert dbmnextkey dbmopen dbmreplace contained
@@ -141,21 +144,25 @@ syn keyword phpFunctions dbplus_add dbpl
 syn keyword phpFunctions dbx_close dbx_compare dbx_connect dbx_error dbx_escape_string dbx_fetch_row dbx_query dbx_sort contained
 syn keyword phpFunctions dio_close dio_fcntl dio_open dio_read dio_seek dio_stat dio_tcsetattr dio_truncate dio_write contained
 syn keyword phpFunctions chdir chroot dir closedir getcwd opendir readdir rewinddir scandir contained
+syn keyword phpFunctions dom_import_simplexml contained
 syn keyword phpFunctions domxml_new_doc domxml_open_file domxml_open_mem domxml_version domxml_xmltree domxml_xslt_stylesheet_doc domxml_xslt_stylesheet_file domxml_xslt_stylesheet xpath_eval_expression xpath_eval xpath_new_context xptr_eval xptr_new_context contained
 syn keyword phpMethods name specified value create_attribute create_cdata_section create_comment create_element_ns create_element create_entity_reference create_processing_instruction create_text_node doctype document_element dump_file dump_mem get_element_by_id get_elements_by_tagname html_dump_mem xinclude entities internal_subset name notations public_id system_id get_attribute_node get_attribute get_elements_by_tagname has_attribute remove_attribute set_attribute tagname add_namespace append_child append_sibling attributes child_nodes clone_node dump_node first_child get_content has_attributes has_child_nodes insert_before is_blank_node last_child next_sibling node_name node_type node_value owner_document parent_node prefix previous_sibling remove_child replace_child replace_node set_content set_name set_namespace unlink_node data target process result_dump_file result_dump_mem contained
 syn keyword phpFunctions dotnet_load contained
 syn keyword phpFunctions debug_backtrace debug_print_backtrace error_log error_reporting restore_error_handler set_error_handler trigger_error user_error contained
+syn keyword phpFunctions enchant_broker_describe enchant_broker_dict_exists enchant_broker_free enchant_broker_free_dict enchant_broker_get_dict_path enchant_broker_get_error enchant_broker_init enchant_broker_list_dicts enchant_broker_request_dict enchant_broker_request_pwl_dict enchant_broker_set_dict_path enchant_broker_set_ordering enchant_dict_add_to_personal enchant_dict_add_to_session enchant_dict_check enchant_dict_describe enchant_dict_get_error enchant_dict_is_in_session enchant_dict_quick_check enchant_dict_store_replacement enchant_dict_suggest contained
 syn keyword phpFunctions escapeshellarg escapeshellcmd exec passthru proc_close proc_get_status proc_nice proc_open proc_terminate shell_exec system contained
 syn keyword phpFunctions fam_cancel_monitor fam_close fam_monitor_collection fam_monitor_directory fam_monitor_file fam_next_event fam_open fam_pending fam_resume_monitor fam_suspend_monitor contained
 syn keyword phpFunctions fbsql_affected_rows fbsql_autocommit fbsql_change_user fbsql_close fbsql_commit fbsql_connect fbsql_create_blob fbsql_create_clob fbsql_create_db fbsql_data_seek fbsql_database_password fbsql_database fbsql_db_query fbsql_db_status fbsql_drop_db fbsql_errno fbsql_error fbsql_fetch_array fbsql_fetch_assoc fbsql_fetch_field fbsql_fetch_lengths fbsql_fetch_object fbsql_fetch_row fbsql_field_flags fbsql_field_len fbsql_field_name fbsql_field_seek fbsql_field_table fbsql_field_type fbsql_free_result fbsql_get_autostart_info fbsql_hostname fbsql_insert_id fbsql_list_dbs fbsql_list_fields fbsql_list_tables fbsql_next_result fbsql_num_fields fbsql_num_rows fbsql_password fbsql_pconnect fbsql_query fbsql_read_blob fbsql_read_clob fbsql_result fbsql_rollback fbsql_select_db fbsql_set_lob_mode fbsql_set_transaction fbsql_start_db fbsql_stop_db fbsql_tablename fbsql_username fbsql_warnings contained
 syn keyword phpFunctions fdf_add_doc_javascript fdf_add_template fdf_close fdf_create fdf_enum_values fdf_errno fdf_error fdf_get_ap fdf_get_attachment fdf_get_encoding fdf_get_file fdf_get_flags fdf_get_opt fdf_get_status fdf_get_value fdf_get_version fdf_header fdf_next_field_name fdf_open_string fdf_open fdf_remove_item fdf_save_string fdf_save fdf_set_ap fdf_set_encoding fdf_set_file fdf_set_flags fdf_set_javascript_action fdf_set_opt fdf_set_status fdf_set_submit_form_action fdf_set_target_frame fdf_set_value fdf_set_version contained
 syn keyword phpFunctions filepro_fieldcount filepro_fieldname filepro_fieldtype filepro_fieldwidth filepro_retrieve filepro_rowcount filepro contained
+syn keyword phpFunctions filter_has_var filter_id filter_input filter_input_array filter_list filter_var filter_var_array contained
 syn keyword phpFunctions basename chgrp chmod chown clearstatcache copy delete dirname disk_free_space disk_total_space diskfreespace fclose feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents file fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype flock fnmatch fopen fpassthru fputs fread fscanf fseek fstat ftell ftruncate fwrite glob is_dir is_executable is_file is_link is_readable is_uploaded_file is_writable is_writeable link linkinfo lstat mkdir move_uploaded_file parse_ini_file pathinfo pclose popen readfile readlink realpath rename rewind rmdir set_file_buffer stat symlink tempnam tmpfile touch umask unlink contained
 syn keyword phpFunctions fribidi_log2vis contained
-syn keyword phpFunctions ftp_alloc ftp_cdup ftp_chdir ftp_chmod ftp_close ftp_connect ftp_delete ftp_exec ftp_fget ftp_fput ftp_get_option ftp_get ftp_login ftp_mdtm ftp_mkdir ftp_nb_continue ftp_nb_fget ftp_nb_fput ftp_nb_get ftp_nb_put ftp_nlist ftp_pasv ftp_put ftp_pwd ftp_quit ftp_raw ftp_rawlist ftp_rename ftp_rmdir ftp_set_option ftp_site ftp_size ftp_ssl_connect ftp_systype contained
+syn keyword phpFunctions ftp_alloc ftp_cdup ftp_chdir ftp_chmod ftp_close ftp_connect ftp_delete ftp_exec ftp_fget ftp_fput ftp_get_option ftp_get ftp_login ftp_mdtm ftp_mkdir ftp_nb_continue ftp_nb_fget ftp_nb_fput ftp_nb_get ftp_nb_put ftp_nlist ftp_pasv ftp_put ftp_pwd ftp_quit ftp_raw ftp_rawlist ftp_rename ftp_rmdir ftp_set_option ftp_site ftp_size ftp_ssl_connect ftp_systype ftp_append ftp_mlsd contained
 syn keyword phpFunctions call_user_func_array call_user_func create_function func_get_arg func_get_args func_num_args function_exists get_defined_functions register_shutdown_function register_tick_function unregister_tick_function contained
-syn keyword phpFunctions bind_textdomain_codeset bindtextdomain dcgettext dcngettext dgettext dngettext gettext ngettext textdomain contained
-syn keyword phpFunctions gmp_abs gmp_add gmp_and gmp_clrbit gmp_cmp gmp_com gmp_div_q gmp_div_qr gmp_div_r gmp_div gmp_divexact gmp_fact gmp_gcd gmp_gcdext gmp_hamdist gmp_init gmp_intval gmp_invert gmp_jacobi gmp_legendre gmp_mod gmp_mul gmp_neg gmp_or gmp_perfect_square gmp_popcount gmp_pow gmp_powm gmp_prob_prime gmp_random gmp_scan0 gmp_scan1 gmp_setbit gmp_sign gmp_sqrt gmp_sqrtrem gmp_sqrtrm gmp_strval gmp_sub gmp_xor contained
+syn keyword phpFunctions bind_textdomain_codeset bindtextdomain dcgettext dcngettext dgettext dngettext gettext ngettext textdomain _ contained
+syn keyword phpFunctions gmp_abs gmp_add gmp_and gmp_clrbit gmp_cmp gmp_com gmp_div_q gmp_div_qr gmp_div_r gmp_div gmp_divexact gmp_fact gmp_gcd gmp_gcdext gmp_hamdist gmp_init gmp_intval gmp_invert gmp_jacobi gmp_legendre gmp_mod gmp_mul gmp_neg gmp_or gmp_perfect_square gmp_popcount gmp_pow gmp_powm gmp_prob_prime gmp_random gmp_scan0 gmp_scan1 gmp_setbit gmp_sign gmp_sqrt gmp_sqrtrem gmp_sqrtrm gmp_strval gmp_sub gmp_xor gmp_binomial gmp_export gmp_import gmp_kronecker gmp_lcm gmp_nextprime gmp_perfect_power gmp_random_bits gmp_random_range gmp_random_seed gmp_root gmp_rootrem gmp_testbit contained
+syn keyword phpFunctions hash hash_algos hash_copy hash_equals hash_file hash_final hash_hkdf hash_hmac hash_hmac_algos hash_hmac_file hash_init hash_pbkdf2 hash_update hash_update_file hash_update_stream contained
 syn keyword phpFunctions header headers_list headers_sent setcookie contained
 syn keyword phpFunctions hw_api_attribute hwapi_hgcsp hw_api_content hw_api_object contained
 syn keyword phpMethods key langdepvalue value values checkin checkout children mimetype read content copy dbstat dcstat dstanchors dstofsrcanchors count reason find ftstat hwstat identify info insert insertanchor insertcollection insertdocument link lock move assign attreditable count insert remove title value object objectbyanchor parents description type remove replace setcommitedversion srcanchors srcsofdst unlock user userlist contained
@@ -163,24 +170,29 @@ syn keyword phpFunctions hw_Array2Objrec
 syn keyword phpFunctions ibase_add_user ibase_affected_rows ibase_blob_add ibase_blob_cancel ibase_blob_close ibase_blob_create ibase_blob_echo ibase_blob_get ibase_blob_import ibase_blob_info ibase_blob_open ibase_close ibase_commit_ret ibase_commit ibase_connect ibase_delete_user ibase_drop_db ibase_errcode ibase_errmsg ibase_execute ibase_fetch_assoc ibase_fetch_object ibase_fetch_row ibase_field_info ibase_free_event_handler ibase_free_query ibase_free_result ibase_gen_id ibase_modify_user ibase_name_result ibase_num_fields ibase_num_params ibase_param_info ibase_pconnect ibase_prepare ibase_query ibase_rollback_ret ibase_rollback ibase_set_event_handler ibase_timefmt ibase_trans ibase_wait_event contained
 syn keyword phpFunctions iconv_get_encoding iconv_mime_decode_headers iconv_mime_decode iconv_mime_encode iconv_set_encoding iconv_strlen iconv_strpos iconv_strrpos iconv_substr iconv ob_iconv_handler contained
 syn keyword phpFunctions ifx_affected_rows ifx_blobinfile_mode ifx_byteasvarchar ifx_close ifx_connect ifx_copy_blob ifx_create_blob ifx_create_char ifx_do ifx_error ifx_errormsg ifx_fetch_row ifx_fieldproperties ifx_fieldtypes ifx_free_blob ifx_free_char ifx_free_result ifx_get_blob ifx_get_char ifx_getsqlca ifx_htmltbl_result ifx_nullformat ifx_num_fields ifx_num_rows ifx_pconnect ifx_prepare ifx_query ifx_textasvarchar ifx_update_blob ifx_update_char ifxus_close_slob ifxus_create_slob ifxus_free_slob ifxus_open_slob ifxus_read_slob ifxus_seek_slob ifxus_tell_slob ifxus_write_slob contained
-syn keyword phpFunctions exif_imagetype exif_read_data exif_thumbnail gd_info getimagesize image_type_to_mime_type image2wbmp imagealphablending imageantialias imagearc imagechar imagecharup imagecolorallocate imagecolorallocatealpha imagecolorat imagecolorclosest imagecolorclosestalpha imagecolorclosesthwb imagecolordeallocate imagecolorexact imagecolorexactalpha imagecolormatch imagecolorresolve imagecolorresolvealpha imagecolorset imagecolorsforindex imagecolorstotal imagecolortransparent imagecopy imagecopymerge imagecopymergegray imagecopyresampled imagecopyresized imagecreate imagecreatefromgd2 imagecreatefromgd2part imagecreatefromgd imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromstring imagecreatefromwbmp imagecreatefromxbm imagecreatefromxpm imagecreatetruecolor imagedashedline imagedestroy imageellipse imagefill imagefilledarc imagefilledellipse imagefilledpolygon imagefilledrectangle imagefilltoborder imagefontheight imagefontwidth imageftbbox imagefttext imagegammacorrect imagegd2 imagegd imagegif imageinterlace imageistruecolor imagejpeg imageline imageloadfont imagepalettecopy imagepng imagepolygon imagepsbbox imagepscopyfont imagepsencodefont imagepsextendfont imagepsfreefont imagepsloadfont imagepsslantfont imagepstext imagerectangle imagerotate imagesavealpha imagesetbrush imagesetpixel imagesetstyle imagesetthickness imagesettile imagestring imagestringup imagesx imagesy imagetruecolortopalette imagettfbbox imagettftext imagetypes imagewbmp iptcembed iptcparse jpeg2wbmp png2wbmp read_exif_data contained
+syn keyword phpFunctions igbinary_serialize igbinary_unserialize contained
+syn keyword phpFunctions exif_imagetype exif_read_data exif_thumbnail gd_info getimagesize image_type_to_mime_type image2wbmp imagealphablending imageantialias imagearc imagechar imagecharup imagecolorallocate imagecolorallocatealpha imagecolorat imagecolorclosest imagecolorclosestalpha imagecolorclosesthwb imagecolordeallocate imagecolorexact imagecolorexactalpha imagecolormatch imagecolorresolve imagecolorresolvealpha imagecolorset imagecolorsforindex imagecolorstotal imagecolortransparent imagecopy imagecopymerge imagecopymergegray imagecopyresampled imagecopyresized imagecreate imagecreatefromgd2 imagecreatefromgd2part imagecreatefromgd imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromstring imagecreatefromwbmp imagecreatefromxbm imagecreatefromxpm imagecreatetruecolor imagedashedline imagedestroy imageellipse imagefill imagefilledarc imagefilledellipse imagefilledpolygon imagefilledrectangle imagefilltoborder imagefontheight imagefontwidth imageftbbox imagefttext imagegammacorrect imagegd2 imagegd imagegif imageinterlace imageistruecolor imagejpeg imageline imageloadfont imagepalettecopy imagepng imagepolygon imagepsbbox imagepscopyfont imagepsencodefont imagepsextendfont imagepsfreefont imagepsloadfont imagepsslantfont imagepstext imagerectangle imagerotate imagesavealpha imagesetbrush imagesetpixel imagesetstyle imagesetthickness imagesettile imagestring imagestringup imagesx imagesy imagetruecolortopalette imagettfbbox imagettftext imagetypes imagewbmp iptcembed iptcparse jpeg2wbmp png2wbmp read_exif_data exif_tagname imageaffine imageaffinematrixconcat imageaffinematrixget imagebmp imageconvolution imagecreatefrombmp imagecreatefromtga imagecrop imagecropauto imagefilter imageflip imagegetclip imagelayereffect imageopenpolygon imagepalettetotruecolor imageresolution imagescale imagesetclip imagesetinterpolation imagexbm contained
 syn keyword phpFunctions imap_8bit imap_alerts imap_append imap_base64 imap_binary imap_body imap_bodystruct imap_check imap_clearflag_full imap_close imap_createmailbox imap_delete imap_deletemailbox imap_errors imap_expunge imap_fetch_overview imap_fetchbody imap_fetchheader imap_fetchstructure imap_get_quota imap_get_quotaroot imap_getacl imap_getmailboxes imap_getsubscribed imap_header imap_headerinfo imap_headers imap_last_error imap_list imap_listmailbox imap_listscan imap_listsubscribed imap_lsub imap_mail_compose imap_mail_copy imap_mail_move imap_mail imap_mailboxmsginfo imap_mime_header_decode imap_msgno imap_num_msg imap_num_recent imap_open imap_ping imap_qprint imap_renamemailbox imap_reopen imap_rfc822_parse_adrlist imap_rfc822_parse_headers imap_rfc822_write_address imap_scanmailbox imap_search imap_set_quota imap_setacl imap_setflag_full imap_sort imap_status imap_subscribe imap_thread imap_timeout imap_uid imap_undelete imap_unsubscribe imap_utf7_decode imap_utf7_encode imap_utf8 contained
 syn keyword phpFunctions assert_options assert dl extension_loaded get_cfg_var get_current_user get_defined_constants get_extension_funcs get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime get_required_files getenv getlastmod getmygid getmyinode getmypid getmyuid getopt getrusage ini_alter ini_get_all ini_get ini_restore ini_set main memory_get_usage php_ini_scanned_files php_logo_guid php_sapi_name php_uname phpcredits phpinfo phpversion putenv restore_include_path set_include_path set_magic_quotes_runtime set_time_limit version_compare zend_logo_guid zend_version contained
 syn keyword phpFunctions ingres_autocommit ingres_close ingres_commit ingres_connect ingres_fetch_array ingres_fetch_object ingres_fetch_row ingres_field_length ingres_field_name ingres_field_nullable ingres_field_precision ingres_field_scale ingres_field_type ingres_num_fields ingres_num_rows ingres_pconnect ingres_query ingres_rollback contained
+syn keyword phpFunctions collator_asort collator_compare collator_create collator_get_attribute collator_get_error_code collator_get_error_message collator_get_locale collator_get_sort_key collator_get_strength collator_set_attribute collator_set_strength collator_sort collator_sort_with_sort_keys datefmt_create datefmt_format datefmt_format_object datefmt_get_calendar datefmt_get_calendar_object datefmt_get_datetype datefmt_get_error_code datefmt_get_error_message datefmt_get_locale datefmt_get_pattern datefmt_get_timetype datefmt_get_timezone datefmt_get_timezone_id datefmt_is_lenient datefmt_localtime datefmt_parse datefmt_set_calendar datefmt_set_lenient datefmt_set_pattern datefmt_set_timezone grapheme_extract grapheme_stripos grapheme_stristr grapheme_strlen grapheme_strpos grapheme_strripos grapheme_strrpos grapheme_strstr grapheme_substr idn_to_ascii idn_to_utf8 intl_error_name intl_get_error_code intl_get_error_message intl_is_failure intlcal_add intlcal_after intlcal_before intlcal_clear intlcal_create_instance intlcal_equals intlcal_field_difference intlcal_from_date_time intlcal_get intlcal_get_actual_maximum intlcal_get_actual_minimum intlcal_get_available_locales intlcal_get_day_of_week_type intlcal_get_error_code intlcal_get_error_message intlcal_get_first_day_of_week intlcal_get_greatest_minimum intlcal_get_keyword_values_for_locale intlcal_get_least_maximum intlcal_get_locale intlcal_get_maximum intlcal_get_minimal_days_in_first_week intlcal_get_minimum intlcal_get_now intlcal_get_repeated_wall_time_option intlcal_get_skipped_wall_time_option intlcal_get_time intlcal_get_time_zone intlcal_get_type intlcal_get_weekend_transition intlcal_in_daylight_time intlcal_is_equivalent_to intlcal_is_lenient intlcal_is_set intlcal_is_weekend intlcal_roll intlcal_set intlcal_set_first_day_of_week intlcal_set_lenient intlcal_set_minimal_days_in_first_week intlcal_set_repeated_wall_time_option intlcal_set_skipped_wall_time_option intlcal_set_time intlcal_set_time_zone intlcal_to_date_time intlgregcal_create_instance intlgregcal_get_gregorian_change intlgregcal_is_leap_year intlgregcal_set_gregorian_change intltz_count_equivalent_ids intltz_create_default intltz_create_enumeration intltz_create_time_zone intltz_create_time_zone_id_enumeration intltz_from_date_time_zone intltz_get_canonical_id intltz_get_display_name intltz_get_dst_savings intltz_get_equivalent_id intltz_get_error_code intltz_get_error_message intltz_get_gmt intltz_get_id intltz_get_offset intltz_get_raw_offset intltz_get_region intltz_get_tz_data_version intltz_get_unknown intltz_has_same_rules intltz_to_date_time_zone intltz_use_daylight_time locale_accept_from_http locale_canonicalize locale_compose locale_filter_matches locale_get_all_variants locale_get_default locale_get_display_language locale_get_display_name locale_get_display_region locale_get_display_script locale_get_display_variant locale_get_keywords locale_get_primary_language locale_get_region locale_get_script locale_lookup locale_parse locale_set_default msgfmt_create msgfmt_format msgfmt_format_message msgfmt_get_error_code msgfmt_get_error_message msgfmt_get_locale msgfmt_get_pattern msgfmt_parse msgfmt_parse_message msgfmt_set_pattern normalizer_is_normalized normalizer_normalize numfmt_create numfmt_format numfmt_format_currency numfmt_get_attribute numfmt_get_error_code numfmt_get_error_message numfmt_get_locale numfmt_get_pattern numfmt_get_symbol numfmt_get_text_attribute numfmt_parse numfmt_parse_currency numfmt_set_attribute numfmt_set_pattern numfmt_set_symbol numfmt_set_text_attribute resourcebundle_count resourcebundle_create resourcebundle_get resourcebundle_get_error_code resourcebundle_get_error_message resourcebundle_locales transliterator_create transliterator_create_from_rules transliterator_create_inverse transliterator_get_error_code transliterator_get_error_message transliterator_list_ids transliterator_transliterate contained
 syn keyword phpFunctions ircg_channel_mode ircg_disconnect ircg_fetch_error_msg ircg_get_username ircg_html_encode ircg_ignore_add ircg_ignore_del ircg_is_conn_alive ircg_join ircg_kick ircg_lookup_format_messages ircg_msg ircg_nick ircg_nickname_escape ircg_nickname_unescape ircg_notice ircg_part ircg_pconnect ircg_register_format_messages ircg_set_current ircg_set_file ircg_set_on_die ircg_topic ircg_whois contained
 syn keyword phpFunctions java_last_exception_clear java_last_exception_get contained
-syn keyword phpFunctions json_decode json_encode json_last_error contained
+syn keyword phpFunctions json_decode json_encode json_last_error json_last_error_msg contained
 syn keyword phpFunctions ldap_8859_to_t61 ldap_add ldap_bind ldap_close ldap_compare ldap_connect ldap_count_entries ldap_delete ldap_dn2ufn ldap_err2str ldap_errno ldap_error ldap_explode_dn ldap_first_attribute ldap_first_entry ldap_first_reference ldap_free_result ldap_get_attributes ldap_get_dn ldap_get_entries ldap_get_option ldap_get_values_len ldap_get_values ldap_list ldap_mod_add ldap_mod_del ldap_mod_replace ldap_modify ldap_next_attribute ldap_next_entry ldap_next_reference ldap_parse_reference ldap_parse_result ldap_read ldap_rename ldap_search ldap_set_option ldap_set_rebind_proc ldap_sort ldap_start_tls ldap_t61_to_8859 ldap_unbind contained
+syn keyword phpFunctions libxml_clear_errors libxml_disable_entity_loader libxml_get_errors libxml_get_last_error libxml_set_external_entity_loader libxml_set_streams_context libxml_use_internal_errors contained
 syn keyword phpFunctions lzf_compress lzf_decompress lzf_optimized_for contained
 syn keyword phpFunctions ezmlm_hash mail contained
 syn keyword phpFunctions mailparse_determine_best_xfer_encoding mailparse_msg_create mailparse_msg_extract_part_file mailparse_msg_extract_part mailparse_msg_free mailparse_msg_get_part_data mailparse_msg_get_part mailparse_msg_get_structure mailparse_msg_parse_file mailparse_msg_parse mailparse_rfc822_parse_addresses mailparse_stream_encode mailparse_uudecode_all contained
 syn keyword phpFunctions abs acos acosh asin asinh atan2 atan atanh base_convert bindec ceil cos cosh decbin dechex decoct deg2rad exp expm1 floor fmod getrandmax hexdec hypot is_finite is_infinite is_nan lcg_value log10 log1p log max min mt_getrandmax mt_rand mt_srand octdec pi pow rad2deg rand round sin sinh sqrt srand tan tanh contained
-syn keyword phpFunctions mb_convert_case mb_convert_encoding mb_convert_kana mb_convert_variables mb_decode_mimeheader mb_decode_numericentity mb_detect_encoding mb_detect_order mb_encode_mimeheader mb_encode_numericentity mb_ereg_match mb_ereg_replace mb_ereg_search_getpos mb_ereg_search_getregs mb_ereg_search_init mb_ereg_search_pos mb_ereg_search_regs mb_ereg_search_setpos mb_ereg_search mb_ereg mb_eregi_replace mb_eregi mb_get_info mb_http_input mb_http_output mb_internal_encoding mb_language mb_output_handler mb_parse_str mb_preferred_mime_name mb_regex_encoding mb_regex_set_options mb_send_mail mb_split mb_strcut mb_strimwidth mb_strlen mb_strpos mb_strrpos mb_strtolower mb_strtoupper mb_strwidth mb_substitute_character mb_substr_count mb_substr contained
+syn keyword phpFunctions array_key_first array_key_last boolval cli_get_process_title cli_set_process_title convert_uudecode convert_uuencode debug_zval_dump error_clear_last error_get_last forward_static_call forward_static_call_array fputcsv get_headers gethostname getimagesizefromstring header_register_callback header_remove hex2bin hrtime htmlspecialchars_decode http_response_code image_type_to_extension inet_ntop inet_pton intdiv is_countable is_iterable lcfirst lchgrp lchown memory_get_peak_usage net_get_interfaces parse_ini_string password_algos password_get_info password_hash password_needs_rehash password_verify php_ini_loaded_file php_strip_whitespace quoted_printable_encode random_bytes random_int realpath_cache_get realpath_cache_size setrawcookie str_getcsv stream_bucket_append stream_bucket_make_writeable stream_bucket_new stream_bucket_prepend stream_context_get_default stream_context_get_params stream_context_set_default stream_filter_remove stream_is_local stream_isatty stream_resolve_include_path stream_set_chunk_size stream_set_read_buffer stream_socket_enable_crypto stream_socket_pair stream_socket_shutdown stream_supports_lock stream_wrapper_restore stream_wrapper_unregister strpbrk strptime sys_get_temp_dir sys_getloadavg time_nanosleep time_sleep_until vfprintf contained
+ 
+syn keyword phpFunctions mb_convert_case mb_convert_encoding mb_convert_kana mb_convert_variables mb_decode_mimeheader mb_decode_numericentity mb_detect_encoding mb_detect_order mb_encode_mimeheader mb_encode_numericentity mb_ereg_match mb_ereg_replace mb_ereg_search_getpos mb_ereg_search_getregs mb_ereg_search_init mb_ereg_search_pos mb_ereg_search_regs mb_ereg_search_setpos mb_ereg_search mb_ereg mb_eregi_replace mb_eregi mb_get_info mb_http_input mb_http_output mb_internal_encoding mb_language mb_output_handler mb_parse_str mb_preferred_mime_name mb_regex_encoding mb_regex_set_options mb_send_mail mb_split mb_strcut mb_strimwidth mb_strlen mb_strpos mb_strrpos mb_strtolower mb_strtoupper mb_strwidth mb_substitute_character mb_substr_count mb_substr mb_check_encoding mb_chr mb_encoding_aliases mb_ereg_replace_callback mb_list_encodings mb_ord mb_scrub mb_str_split mb_stripos mb_stristr mb_strrchr mb_strrichr mb_strripos mb_strstr mbereg mbereg_match mbereg_replace mbereg_search mbereg_search_getpos mbereg_search_getregs mbereg_search_init mbereg_search_pos mbereg_search_regs mbereg_search_setpos mberegi mberegi_replace mbregex_encoding mbsplit contained
 syn keyword phpFunctions mcal_append_event mcal_close mcal_create_calendar mcal_date_compare mcal_date_valid mcal_day_of_week mcal_day_of_year mcal_days_in_month mcal_delete_calendar mcal_delete_event mcal_event_add_attribute mcal_event_init mcal_event_set_alarm mcal_event_set_category mcal_event_set_class mcal_event_set_description mcal_event_set_end mcal_event_set_recur_daily mcal_event_set_recur_monthly_mday mcal_event_set_recur_monthly_wday mcal_event_set_recur_none mcal_event_set_recur_weekly mcal_event_set_recur_yearly mcal_event_set_start mcal_event_set_title mcal_expunge mcal_fetch_current_stream_event mcal_fetch_event mcal_is_leap_year mcal_list_alarms mcal_list_events mcal_next_recurrence mcal_open mcal_popen mcal_rename_calendar mcal_reopen mcal_snooze mcal_store_event mcal_time_valid mcal_week_of_year contained
 syn keyword phpFunctions mcrypt_cbc mcrypt_cfb mcrypt_create_iv mcrypt_decrypt mcrypt_ecb mcrypt_enc_get_algorithms_name mcrypt_enc_get_block_size mcrypt_enc_get_iv_size mcrypt_enc_get_key_size mcrypt_enc_get_modes_name mcrypt_enc_get_supported_key_sizes mcrypt_enc_is_block_algorithm_mode mcrypt_enc_is_block_algorithm mcrypt_enc_is_block_mode mcrypt_enc_self_test mcrypt_encrypt mcrypt_generic_deinit mcrypt_generic_end mcrypt_generic_init mcrypt_generic mcrypt_get_block_size mcrypt_get_cipher_name mcrypt_get_iv_size mcrypt_get_key_size mcrypt_list_algorithms mcrypt_list_modes mcrypt_module_close mcrypt_module_get_algo_block_size mcrypt_module_get_algo_key_size mcrypt_module_get_supported_key_sizes mcrypt_module_is_block_algorithm_mode mcrypt_module_is_block_algorithm mcrypt_module_is_block_mode mcrypt_module_open mcrypt_module_self_test mcrypt_ofb mdecrypt_generic contained
 syn keyword phpFunctions mcve_adduser mcve_adduserarg mcve_bt mcve_checkstatus mcve_chkpwd mcve_chngpwd mcve_completeauthorizations mcve_connect mcve_connectionerror mcve_deleteresponse mcve_deletetrans mcve_deleteusersetup mcve_deluser mcve_destroyconn mcve_destroyengine mcve_disableuser mcve_edituser mcve_enableuser mcve_force mcve_getcell mcve_getcellbynum mcve_getcommadelimited mcve_getheader mcve_getuserarg mcve_getuserparam mcve_gft mcve_gl mcve_gut mcve_initconn mcve_initengine mcve_initusersetup mcve_iscommadelimited mcve_liststats mcve_listusers mcve_maxconntimeout mcve_monitor mcve_numcolumns mcve_numrows mcve_override mcve_parsecommadelimited mcve_ping mcve_preauth mcve_preauthcompletion mcve_qc mcve_responseparam mcve_return mcve_returncode mcve_returnstatus mcve_sale mcve_setblocking mcve_setdropfile mcve_setip mcve_setssl_files mcve_setssl mcve_settimeout mcve_settle mcve_text_avs mcve_text_code mcve_text_cv mcve_transactionauth mcve_transactionavs mcve_transactionbatch mcve_transactioncv mcve_transactionid mcve_transactionitem mcve_transactionssent mcve_transactiontext mcve_transinqueue mcve_transnew mcve_transparam mcve_transsend mcve_ub mcve_uwait mcve_verifyconnection mcve_verifysslcert mcve_void contained
 syn keyword phpFunctions mhash_count mhash_get_block_size mhash_get_hash_name mhash_keygen_s2k mhash contained
-syn keyword phpFunctions mime_content_type contained
+syn keyword phpFunctions mime_content_type finfo_buffer finfo_close finfo_file finfo_open finfo_set_flags contained
 syn keyword phpFunctions ming_setcubicthreshold ming_setscale ming_useswfversion SWFAction SWFBitmap swfbutton_keypress SWFbutton SWFDisplayItem SWFFill SWFFont SWFGradient SWFMorph SWFMovie SWFShape SWFSprite SWFText SWFTextField contained
 syn keyword phpMethods getHeight getWidth addAction addShape setAction setdown setHit setOver setUp addColor move moveTo multColor remove Rotate rotateTo scale scaleTo setDepth setName setRatio skewX skewXTo skewY skewYTo moveTo rotateTo scaleTo skewXTo skewYTo getwidth addEntry getshape1 getshape2 add nextframe output remove save setbackground setdimension setframes setrate streammp3 addFill drawCurve drawCurveTo drawLine drawLineTo movePen movePenTo setLeftFill setLine setRightFill add nextframe remove setframes addString getWidth moveTo setColor setFont setHeight setSpacing addstring align setbounds setcolor setFont setHeight setindentation setLeftMargin setLineSpacing setMargins setname setrightMargin contained
 syn keyword phpFunctions connection_aborted connection_status connection_timeout constant define defined die eval exit get_browser highlight_file highlight_string ignore_user_abort pack show_source sleep uniqid unpack usleep contained
@@ -190,7 +202,7 @@ syn keyword phpFunctions msql_affected_r
 syn keyword phpFunctions mssql_bind mssql_close mssql_connect mssql_data_seek mssql_execute mssql_fetch_array mssql_fetch_assoc mssql_fetch_batch mssql_fetch_field mssql_fetch_object mssql_fetch_row mssql_field_length mssql_field_name mssql_field_seek mssql_field_type mssql_free_result mssql_free_statement mssql_get_last_message mssql_guid_string mssql_init mssql_min_error_severity mssql_min_message_severity mssql_next_result mssql_num_fields mssql_num_rows mssql_pconnect mssql_query mssql_result mssql_rows_affected mssql_select_db contained
 syn keyword phpFunctions muscat_close muscat_get muscat_give muscat_setup_net muscat_setup contained
 syn keyword phpFunctions mysql_affected_rows mysql_change_user mysql_client_encoding mysql_close mysql_connect mysql_create_db mysql_data_seek mysql_db_name mysql_db_query mysql_drop_db mysql_errno mysql_error mysql_escape_string mysql_fetch_array mysql_fetch_assoc mysql_fetch_field mysql_fetch_lengths mysql_fetch_object mysql_fetch_row mysql_field_flags mysql_field_len mysql_field_name mysql_field_seek mysql_field_table mysql_field_type mysql_free_result mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql_insert_id mysql_list_dbs mysql_list_fields mysql_list_processes mysql_list_tables mysql_num_fields mysql_num_rows mysql_pconnect mysql_ping mysql_query mysql_real_escape_string mysql_result mysql_select_db mysql_stat mysql_tablename mysql_thread_id mysql_unbuffered_query contained
-syn keyword phpFunctions mysqli_affected_rows mysqli_autocommit mysqli_bind_param mysqli_bind_result mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect mysqli_data_seek mysqli_debug mysqli_disable_reads_from_master mysqli_disable_rpl_parse mysqli_dump_debug_info mysqli_enable_reads_from_master mysqli_enable_rpl_parse mysqli_errno mysqli_error mysqli_execute mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_fetch mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_client_info mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_master_query mysqli_num_fields mysqli_num_rows mysqli_options mysqli_param_count mysqli_ping mysqli_prepare_result mysqli_prepare mysqli_profiler mysqli_query mysqli_read_query_result mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reload mysqli_rollback mysqli_rpl_parse_enabled mysqli_rpl_probe mysqli_rpl_query_type mysqli_select_db mysqli_send_long_data mysqli_send_query mysqli_slave_query mysqli_ssl_set mysqli_stat mysqli_stmt_affected_rows mysqli_stmt_close mysqli_stmt_errno mysqli_stmt_error mysqli_stmt_store_result mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count contained
+syn keyword phpFunctions mysqli_affected_rows mysqli_autocommit mysqli_bind_param mysqli_bind_result mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect mysqli_data_seek mysqli_debug mysqli_disable_reads_from_master mysqli_disable_rpl_parse mysqli_dump_debug_info mysqli_enable_reads_from_master mysqli_enable_rpl_parse mysqli_errno mysqli_error mysqli_execute mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_fetch mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_client_info mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_master_query mysqli_num_fields mysqli_num_rows mysqli_options mysqli_param_count mysqli_ping mysqli_prepare_result mysqli_prepare mysqli_profiler mysqli_query mysqli_read_query_result mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reload mysqli_rollback mysqli_rpl_parse_enabled mysqli_rpl_probe mysqli_rpl_query_type mysqli_select_db mysqli_send_long_data mysqli_send_query mysqli_slave_query mysqli_ssl_set mysqli_stat mysqli_stmt_affected_rows mysqli_stmt_close mysqli_stmt_errno mysqli_stmt_error mysqli_stmt_store_result mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count mysqli_begin_transaction mysqli_connect_errno mysqli_connect_error mysqli_error_list mysqli_escape_string mysqli_fetch_all mysqli_get_charset mysqli_get_client_stats mysqli_get_client_version mysqli_get_connection_stats mysqli_get_links_stats mysqli_get_warnings mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_poll mysqli_reap_async_query mysqli_refresh mysqli_release_savepoint mysqli_report mysqli_savepoint mysqli_set_charset mysqli_set_opt mysqli_sqlstate mysqli_stmt_attr_get mysqli_stmt_attr_set mysqli_stmt_bind_param mysqli_stmt_bind_result mysqli_stmt_data_seek mysqli_stmt_error_list mysqli_stmt_execute mysqli_stmt_fetch mysqli_stmt_field_count mysqli_stmt_free_result mysqli_stmt_get_result mysqli_stmt_get_warnings mysqli_stmt_init mysqli_stmt_insert_id mysqli_stmt_more_results mysqli_stmt_next_result mysqli_stmt_num_rows mysqli_stmt_param_count mysqli_stmt_prepare mysqli_stmt_reset mysqli_stmt_result_metadata mysqli_stmt_send_long_data mysqli_stmt_sqlstate contained
 syn keyword phpFunctions ncurses_addch ncurses_addchnstr ncurses_addchstr ncurses_addnstr ncurses_addstr ncurses_assume_default_colors ncurses_attroff ncurses_attron ncurses_attrset ncurses_baudrate ncurses_beep ncurses_bkgd ncurses_bkgdset ncurses_border ncurses_bottom_panel ncurses_can_change_color ncurses_cbreak ncurses_clear ncurses_clrtobot ncurses_clrtoeol ncurses_color_content ncurses_color_set ncurses_curs_set ncurses_def_prog_mode ncurses_def_shell_mode ncurses_define_key ncurses_del_panel ncurses_delay_output ncurses_delch ncurses_deleteln ncurses_delwin ncurses_doupdate ncurses_echo ncurses_echochar ncurses_end ncurses_erase ncurses_erasechar ncurses_filter ncurses_flash ncurses_flushinp ncurses_getch ncurses_getmaxyx ncurses_getmouse ncurses_getyx ncurses_halfdelay ncurses_has_colors ncurses_has_ic ncurses_has_il ncurses_has_key ncurses_hide_panel ncurses_hline ncurses_inch ncurses_init_color ncurses_init_pair ncurses_init ncurses_insch ncurses_insdelln ncurses_insertln ncurses_insstr ncurses_instr ncurses_isendwin ncurses_keyok ncurses_keypad ncurses_killchar ncurses_longname ncurses_meta ncurses_mouse_trafo ncurses_mouseinterval ncurses_mousemask ncurses_move_panel ncurses_move ncurses_mvaddch ncurses_mvaddchnstr ncurses_mvaddchstr ncurses_mvaddnstr ncurses_mvaddstr ncurses_mvcur ncurses_mvdelch ncurses_mvgetch ncurses_mvhline ncurses_mvinch ncurses_mvvline ncurses_mvwaddstr ncurses_napms ncurses_new_panel ncurses_newpad ncurses_newwin ncurses_nl ncurses_nocbreak ncurses_noecho ncurses_nonl ncurses_noqiflush ncurses_noraw ncurses_pair_content ncurses_panel_above ncurses_panel_below ncurses_panel_window ncurses_pnoutrefresh ncurses_prefresh ncurses_putp ncurses_qiflush ncurses_raw ncurses_refresh ncurses_replace_panel ncurses_reset_prog_mode ncurses_reset_shell_mode ncurses_resetty ncurses_savetty ncurses_scr_dump ncurses_scr_init ncurses_scr_restore ncurses_scr_set ncurses_scrl ncurses_show_panel ncurses_slk_attr ncurses_slk_attroff ncurses_slk_attron ncurses_slk_attrset ncurses_slk_clear ncurses_slk_color ncurses_slk_init ncurses_slk_noutrefresh ncurses_slk_refresh ncurses_slk_restore ncurses_slk_set ncurses_slk_touch ncurses_standend ncurses_standout ncurses_start_color ncurses_termattrs ncurses_termname ncurses_timeout ncurses_top_panel ncurses_typeahead ncurses_ungetch ncurses_ungetmouse ncurses_update_panels ncurses_use_default_colors ncurses_use_env ncurses_use_extended_names ncurses_vidattr ncurses_vline ncurses_waddch ncurses_waddstr ncurses_wattroff ncurses_wattron ncurses_wattrset ncurses_wborder ncurses_wclear ncurses_wcolor_set ncurses_werase ncurses_wgetch ncurses_whline ncurses_wmouse_trafo ncurses_wmove ncurses_wnoutrefresh ncurses_wrefresh ncurses_wstandend ncurses_wstandout ncurses_wvline contained
 syn keyword phpFunctions checkdnsrr closelog debugger_off debugger_on define_syslog_variables dns_check_record dns_get_mx dns_get_record fsockopen gethostbyaddr gethostbyname gethostbynamel getmxrr getprotobyname getprotobynumber getservbyname getservbyport ip2long long2ip openlog pfsockopen socket_get_status socket_set_blocking socket_set_timeout syslog contained
 syn keyword phpFunctions yp_all yp_cat yp_err_string yp_errno yp_first yp_get_default_domain yp_master yp_match yp_next yp_order contained
@@ -199,48 +211,55 @@ syn keyword phpFunctions nsapi_request_h
 syn keyword phpFunctions aggregate_info aggregate_methods_by_list aggregate_methods_by_regexp aggregate_methods aggregate_properties_by_list aggregate_properties_by_regexp aggregate_properties aggregate aggregation_info deaggregate contained
 syn keyword phpFunctions ocibindbyname ocicancel ocicloselob ocicollappend ocicollassign ocicollassignelem ocicollgetelem ocicollmax ocicollsize ocicolltrim ocicolumnisnull ocicolumnname ocicolumnprecision ocicolumnscale ocicolumnsize ocicolumntype ocicolumntyperaw ocicommit ocidefinebyname ocierror ociexecute ocifetch ocifetchinto ocifetchstatement ocifreecollection ocifreecursor ocifreedesc ocifreestatement ociinternaldebug ociloadlob ocilogoff ocilogon ocinewcollection ocinewcursor ocinewdescriptor ocinlogon ocinumcols ociparse ociplogon ociresult ocirollback ocirowcount ocisavelob ocisavelobfile ociserverversion ocisetprefetch ocistatementtype ociwritelobtofile ociwritetemporarylob contained
 syn keyword phpFunctions odbc_autocommit odbc_binmode odbc_close_all odbc_close odbc_columnprivileges odbc_columns odbc_commit odbc_connect odbc_cursor odbc_data_source odbc_do odbc_error odbc_errormsg odbc_exec odbc_execute odbc_fetch_array odbc_fetch_into odbc_fetch_object odbc_fetch_row odbc_field_len odbc_field_name odbc_field_num odbc_field_precision odbc_field_scale odbc_field_type odbc_foreignkeys odbc_free_result odbc_gettypeinfo odbc_longreadlen odbc_next_result odbc_num_fields odbc_num_rows odbc_pconnect odbc_prepare odbc_primarykeys odbc_procedurecolumns odbc_procedures odbc_result_all odbc_result odbc_rollback odbc_setoption odbc_specialcolumns odbc_statistics odbc_tableprivileges odbc_tables contained
-syn keyword phpFunctions openssl_cipher_iv_length openssl_csr_export_to_file openssl_csr_export openssl_csr_get_public_key openssl_csr_get_subject openssl_csr_new openssl_csr_sign openssl_decrypt openssl_dh_compute_key openssl_digest openssl_encrypt openssl_error_string openssl_free_key openssl_get_cert_locations openssl_get_cipher_methods openssl_get_md_methods openssl_get_privatekey openssl_get_publickey openssl_open openssl_pbkdf2 openssl_pkcs12_export_to_file openssl_pkcs12_export openssl_pkcs12_read openssl_pkcs7_decrypt openssl_pkcs7_encrypt openssl_pkcs7_sign openssl_pkcs7_verify openssl_pkey_export_to_file openssl_pkey_export openssl_pkey_free openssl_pkey_get_details openssl_pkey_get_private openssl_pkey_get_public openssl_pkey_new openssl_private_decrypt openssl_private_encrypt openssl_public_decrypt openssl_public_encrypt openssl_random_pseudo_bytes openssl_seal openssl_sign openssl_spki_export_challenge openssl_spki_export openssl_spki_new openssl_spki_verify openssl_verify openssl_x509_check_private_key openssl_x509_checkpurpose openssl_x509_export_to_file openssl_x509_export openssl_x509_fingerprint openssl_x509_free openssl_x509_parse openssl_x509_read contained
+syn keyword phpFunctions opcache_reset opcache_invalidate opcache_compile_file opcache_is_script_cached opcache_get_configuration opcache_get_status contained
+syn keyword phpFunctions openssl_cipher_iv_length openssl_csr_export_to_file openssl_csr_export openssl_csr_get_public_key openssl_csr_get_subject openssl_csr_new openssl_csr_sign openssl_decrypt openssl_dh_compute_key openssl_digest openssl_encrypt openssl_error_string openssl_free_key openssl_get_cert_locations openssl_get_cipher_methods openssl_get_md_methods openssl_get_privatekey openssl_get_publickey openssl_open openssl_pbkdf2 openssl_pkcs12_export_to_file openssl_pkcs12_export openssl_pkcs12_read openssl_pkcs7_decrypt openssl_pkcs7_encrypt openssl_pkcs7_sign openssl_pkcs7_verify openssl_pkey_export_to_file openssl_pkey_export openssl_pkey_free openssl_pkey_get_details openssl_pkey_get_private openssl_pkey_get_public openssl_pkey_new openssl_private_decrypt openssl_private_encrypt openssl_public_decrypt openssl_public_encrypt openssl_random_pseudo_bytes openssl_seal openssl_sign openssl_spki_export_challenge openssl_spki_export openssl_spki_new openssl_spki_verify openssl_verify openssl_x509_check_private_key openssl_x509_checkpurpose openssl_x509_export_to_file openssl_x509_export openssl_x509_fingerprint openssl_x509_free openssl_x509_parse openssl_x509_read openssl_get_curve_names openssl_pkcs7_read openssl_pkey_derive openssl_x509_verify contained
 syn keyword phpFunctions ora_bind ora_close ora_columnname ora_columnsize ora_columntype ora_commit ora_commitoff ora_commiton ora_do ora_error ora_errorcode ora_exec ora_fetch_into ora_fetch ora_getcolumn ora_logoff ora_logon ora_numcols ora_numrows ora_open ora_parse ora_plogon ora_rollback contained
 syn keyword phpFunctions flush ob_clean ob_end_clean ob_end_flush ob_flush ob_get_clean ob_get_contents ob_get_flush ob_get_length ob_get_level ob_get_status ob_gzhandler ob_implicit_flush ob_list_handlers ob_start output_add_rewrite_var output_reset_rewrite_vars contained
 syn keyword phpFunctions overload contained
 syn keyword phpFunctions ovrimos_close ovrimos_commit ovrimos_connect ovrimos_cursor ovrimos_exec ovrimos_execute ovrimos_fetch_into ovrimos_fetch_row ovrimos_field_len ovrimos_field_name ovrimos_field_num ovrimos_field_type ovrimos_free_result ovrimos_longreadlen ovrimos_num_fields ovrimos_num_rows ovrimos_prepare ovrimos_result_all ovrimos_result ovrimos_rollback contained
-syn keyword phpFunctions pcntl_exec pcntl_fork pcntl_signal pcntl_waitpid pcntl_wexitstatus pcntl_wifexited pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig contained
-syn keyword phpFunctions preg_grep preg_match_all preg_match preg_quote preg_replace_callback preg_replace preg_split contained
+syn keyword phpFunctions pcntl_exec pcntl_fork pcntl_signal pcntl_waitpid pcntl_wexitstatus pcntl_wifexited pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig pcntl_alarm pcntl_async_signals pcntl_errno pcntl_get_last_error pcntl_getpriority pcntl_setpriority pcntl_signal_dispatch pcntl_signal_get_handler pcntl_sigprocmask pcntl_sigtimedwait pcntl_sigwaitinfo pcntl_strerror pcntl_unshare pcntl_wait pcntl_wifcontinued contained
+syn keyword phpFunctions preg_filter preg_grep preg_last_error preg_match_all preg_match preg_quote preg_replace_callback preg_replace_callback_array preg_replace preg_split contained
+syn keyword phpFunctions pdo_drivers contained
 syn keyword phpFunctions pdf_add_annotation pdf_add_bookmark pdf_add_launchlink pdf_add_locallink pdf_add_note pdf_add_outline pdf_add_pdflink pdf_add_thumbnail pdf_add_weblink pdf_arc pdf_arcn pdf_attach_file pdf_begin_page pdf_begin_pattern pdf_begin_template pdf_circle pdf_clip pdf_close_image pdf_close_pdi_page pdf_close_pdi pdf_close pdf_closepath_fill_stroke pdf_closepath_stroke pdf_closepath pdf_concat pdf_continue_text pdf_curveto pdf_delete pdf_end_page pdf_end_pattern pdf_end_template pdf_endpath pdf_fill_stroke pdf_fill pdf_findfont pdf_get_buffer pdf_get_font pdf_get_fontname pdf_get_fontsize pdf_get_image_height pdf_get_image_width pdf_get_majorversion pdf_get_minorversion pdf_get_parameter pdf_get_pdi_parameter pdf_get_pdi_value pdf_get_value pdf_initgraphics pdf_lineto pdf_makespotcolor pdf_moveto pdf_new pdf_open_CCITT pdf_open_file pdf_open_gif pdf_open_image_file pdf_open_image pdf_open_jpeg pdf_open_memory_image pdf_open_pdi_page pdf_open_pdi pdf_open_png pdf_open_tiff pdf_open pdf_place_image pdf_place_pdi_page pdf_rect pdf_restore pdf_rotate pdf_save pdf_scale pdf_set_border_color pdf_set_border_dash pdf_set_border_style pdf_set_char_spacing pdf_set_duration pdf_set_font pdf_set_horiz_scaling pdf_set_info_author pdf_set_info_creator pdf_set_info_keywords pdf_set_info_subject pdf_set_info_title pdf_set_info pdf_set_leading pdf_set_parameter pdf_set_text_matrix pdf_set_text_pos pdf_set_text_rendering pdf_set_text_rise pdf_set_value pdf_set_word_spacing pdf_setcolor pdf_setdash pdf_setflat pdf_setfont pdf_setgray_fill pdf_setgray_stroke pdf_setgray pdf_setlinecap pdf_setlinejoin pdf_setlinewidth pdf_setmatrix pdf_setmiterlimit pdf_setpolydash pdf_setrgbcolor_fill pdf_setrgbcolor_stroke pdf_setrgbcolor pdf_show_boxed pdf_show_xy pdf_show pdf_skew pdf_stringwidth pdf_stroke pdf_translate contained
 syn keyword phpFunctions pfpro_cleanup pfpro_init pfpro_process_raw pfpro_process pfpro_version contained
-syn keyword phpFunctions pg_affected_rows pg_cancel_query pg_client_encoding pg_close pg_connect pg_connection_busy pg_connection_reset pg_connection_status pg_convert pg_copy_from pg_copy_to pg_dbname pg_delete pg_end_copy pg_escape_bytea pg_escape_string pg_fetch_all pg_fetch_array pg_fetch_assoc pg_fetch_object pg_fetch_result pg_fetch_row pg_field_is_null pg_field_name pg_field_num pg_field_prtlen pg_field_size pg_field_type pg_free_result pg_get_notify pg_get_pid pg_get_result pg_host pg_insert pg_last_error pg_last_notice pg_last_oid pg_lo_close pg_lo_create pg_lo_export pg_lo_import pg_lo_open pg_lo_read_all pg_lo_read pg_lo_seek pg_lo_tell pg_lo_unlink pg_lo_write pg_meta_data pg_num_fields pg_num_rows pg_options pg_pconnect pg_ping pg_port pg_put_line pg_query pg_result_error pg_result_seek pg_result_status pg_select pg_send_query pg_set_client_encoding pg_trace pg_tty pg_unescape_bytea pg_untrace pg_update contained
-syn keyword phpFunctions posix_ctermid posix_get_last_error posix_getcwd posix_getegid posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid posix_isatty posix_kill posix_mkfifo posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setsid posix_setuid posix_strerror posix_times posix_ttyname posix_uname contained
+syn keyword phpFunctions pg_affected_rows pg_cancel_query pg_client_encoding pg_close pg_connect pg_connection_busy pg_connection_reset pg_connection_status pg_convert pg_copy_from pg_copy_to pg_dbname pg_delete pg_end_copy pg_escape_bytea pg_escape_string pg_fetch_all pg_fetch_array pg_fetch_assoc pg_fetch_object pg_fetch_result pg_fetch_row pg_field_is_null pg_field_name pg_field_num pg_field_prtlen pg_field_size pg_field_type pg_free_result pg_get_notify pg_get_pid pg_get_result pg_host pg_insert pg_last_error pg_last_notice pg_last_oid pg_lo_close pg_lo_create pg_lo_export pg_lo_import pg_lo_open pg_lo_read_all pg_lo_read pg_lo_seek pg_lo_tell pg_lo_unlink pg_lo_write pg_meta_data pg_num_fields pg_num_rows pg_options pg_pconnect pg_ping pg_port pg_put_line pg_query pg_result_error pg_result_seek pg_result_status pg_select pg_send_query pg_set_client_encoding pg_trace pg_tty pg_unescape_bytea pg_untrace pg_update pg_clientencoding pg_cmdtuples pg_connect_poll pg_consume_input pg_errormessage pg_escape_identifier pg_escape_literal pg_exec pg_execute pg_fetch_all_columns pg_field_table pg_field_type_oid pg_fieldisnull pg_fieldname pg_fieldnum pg_fieldprtlen pg_fieldsize pg_fieldtype pg_flush pg_freeresult pg_getlastoid pg_lo_truncate pg_loclose pg_locreate pg_loexport pg_loimport pg_loopen pg_loread pg_loreadall pg_lounlink pg_lowrite pg_numfields pg_numrows pg_parameter_status pg_prepare pg_query_params pg_result pg_result_error_field pg_send_execute pg_send_prepare pg_send_query_params pg_set_error_verbosity pg_setclientencoding pg_socket pg_transaction_status pg_version contained
+syn keyword phpFunctions posix_ctermid posix_get_last_error posix_getcwd posix_getegid posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid posix_isatty posix_kill posix_mkfifo posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setsid posix_setuid posix_strerror posix_times posix_ttyname posix_uname posix_access posix_errno posix_initgroups posix_mknod posix_setrlimit contained
 syn keyword phpFunctions printer_abort printer_close printer_create_brush printer_create_dc printer_create_font printer_create_pen printer_delete_brush printer_delete_dc printer_delete_font printer_delete_pen printer_draw_bmp printer_draw_chord printer_draw_elipse printer_draw_line printer_draw_pie printer_draw_rectangle printer_draw_roundrect printer_draw_text printer_end_doc printer_end_page printer_get_option printer_list printer_logical_fontheight printer_open printer_select_brush printer_select_font printer_select_pen printer_set_option printer_start_doc printer_start_page printer_write contained
-syn keyword phpFunctions pspell_add_to_personal pspell_add_to_session pspell_check pspell_clear_session pspell_config_create pspell_config_ignore pspell_config_mode pspell_config_personal pspell_config_repl pspell_config_runtogether pspell_config_save_repl pspell_new_config pspell_new_personal pspell_new pspell_save_wordlist pspell_store_replacement pspell_suggest contained
+syn keyword phpFunctions pspell_add_to_personal pspell_add_to_session pspell_check pspell_clear_session pspell_config_create pspell_config_ignore pspell_config_mode pspell_config_personal pspell_config_repl pspell_config_runtogether pspell_config_save_repl pspell_new_config pspell_new_personal pspell_new pspell_save_wordlist pspell_store_replacement pspell_suggest pspell_config_data_dir pspell_config_dict_dir contained
 syn keyword phpFunctions qdom_error qdom_tree contained
-syn keyword phpFunctions readline_add_history readline_clear_history readline_completion_function readline_info readline_list_history readline_read_history readline_write_history readline contained
+syn keyword phpFunctions readline_add_history readline_clear_history readline_completion_function readline_info readline_list_history readline_read_history readline_write_history readline readline_callback_handler_install readline_callback_handler_remove readline_callback_read_char readline_on_new_line readline_redisplay contained
 syn keyword phpFunctions recode_file recode_string recode contained
 syn keyword phpFunctions ereg_replace ereg eregi_replace eregi split spliti sql_regcase contained
-syn keyword phpFunctions ftok msg_get_queue msg_receive msg_remove_queue msg_send msg_set_queue msg_stat_queue sem_acquire sem_get sem_release sem_remove shm_attach shm_detach shm_get_var shm_put_var shm_remove_var shm_remove contained
+syn keyword phpFunctions ftok msg_get_queue msg_queue_exists msg_receive msg_remove_queue msg_send msg_set_queue msg_stat_queue sem_acquire sem_get sem_release sem_remove shm_attach shm_detach shm_get_var shm_has_var shm_put_var shm_remove_var shm_remove contained
 syn keyword phpFunctions sesam_affected_rows sesam_commit sesam_connect sesam_diagnostic sesam_disconnect sesam_errormsg sesam_execimm sesam_fetch_array sesam_fetch_result sesam_fetch_row sesam_field_array sesam_field_name sesam_free_result sesam_num_fields sesam_query sesam_rollback sesam_seek_row sesam_settransaction contained
-syn keyword phpFunctions session_cache_expire session_cache_limiter session_decode session_destroy session_encode session_get_cookie_params session_id session_is_registered session_module_name session_name session_regenerate_id session_register session_save_path session_set_cookie_params session_set_save_handler session_start session_unregister session_unset session_write_close contained
+syn keyword phpFunctions session_cache_expire session_cache_limiter session_decode session_destroy session_encode session_get_cookie_params session_id session_is_registered session_module_name session_name session_regenerate_id session_register session_save_path session_set_cookie_params session_set_save_handler session_start session_unregister session_unset session_write_close session_abort session_commit session_create_id session_gc session_register_shutdown session_reset session_status contained
+syn keyword phpFunctions simplexml_import_dom simplexml_load_file simplexml_load_string contained
 syn keyword phpFunctions shmop_close shmop_delete shmop_open shmop_read shmop_size shmop_write contained
 syn keyword phpFunctions snmp_get_quick_print snmp_set_quick_print snmpget snmprealwalk snmpset snmpwalk snmpwalkoid contained
-syn keyword phpFunctions socket_accept socket_bind socket_clear_error socket_close socket_connect socket_create_listen socket_create_pair socket_create socket_get_option socket_getpeername socket_getsockname socket_iovec_add socket_iovec_alloc socket_iovec_delete socket_iovec_fetch socket_iovec_free socket_iovec_set socket_last_error socket_listen socket_read socket_readv socket_recv socket_recvfrom socket_recvmsg socket_select socket_send socket_sendmsg socket_sendto socket_set_block socket_set_nonblock socket_set_option socket_shutdown socket_strerror socket_write socket_writev contained
+syn keyword phpFunctions is_soap_fault use_soap_error_handler contained
+syn keyword phpFunctions socket_accept socket_bind socket_clear_error socket_close socket_connect socket_create_listen socket_create_pair socket_create socket_get_option socket_getpeername socket_getsockname socket_iovec_add socket_iovec_alloc socket_iovec_delete socket_iovec_fetch socket_iovec_free socket_iovec_set socket_last_error socket_listen socket_read socket_readv socket_recv socket_recvfrom socket_recvmsg socket_select socket_send socket_sendmsg socket_sendto socket_set_block socket_set_nonblock socket_set_option socket_shutdown socket_strerror socket_write socket_writev socket_addrinfo_bind socket_addrinfo_connect socket_addrinfo_explain socket_addrinfo_lookup socket_cmsg_space socket_export_stream socket_getopt socket_import_stream socket_setopt contained
+syn keyword phpFunctions class_implements class_parents class_uses iterator_apply iterator_count iterator_to_array spl_autoload spl_autoload_call spl_autoload_extensions spl_autoload_functions spl_autoload_register spl_autoload_unregister spl_classes spl_object_hash spl_object_id contained
 syn keyword phpFunctions sqlite_array_query sqlite_busy_timeout sqlite_changes sqlite_close sqlite_column sqlite_create_aggregate sqlite_create_function sqlite_current sqlite_error_string sqlite_escape_string sqlite_fetch_array sqlite_fetch_single sqlite_fetch_string sqlite_field_name sqlite_has_more sqlite_last_error sqlite_last_insert_rowid sqlite_libencoding sqlite_libversion sqlite_next sqlite_num_fields sqlite_num_rows sqlite_open sqlite_popen sqlite_query sqlite_rewind sqlite_seek sqlite_udf_decode_binary sqlite_udf_encode_binary sqlite_unbuffered_query contained
 syn keyword phpFunctions stream_context_create stream_context_get_options stream_context_set_option stream_context_set_params stream_copy_to_stream stream_filter_append stream_filter_prepend stream_filter_register stream_get_contents stream_get_filters stream_get_line stream_get_meta_data stream_get_transports stream_get_wrappers stream_register_wrapper stream_select stream_set_blocking stream_set_timeout stream_set_write_buffer stream_socket_accept stream_socket_client stream_socket_get_name stream_socket_recvfrom stream_socket_sendto stream_socket_server stream_wrapper_register contained
 syn keyword phpFunctions addcslashes addslashes bin2hex chop chr chunk_split convert_cyr_string count_chars crc32 crypt explode fprintf get_html_translation_table hebrev hebrevc html_entity_decode htmlentities htmlspecialchars implode join levenshtein localeconv ltrim md5_file md5 metaphone money_format nl_langinfo nl2br number_format ord parse_str print printf quoted_printable_decode quotemeta rtrim setlocale sha1_file sha1 similar_text soundex sprintf sscanf str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count strcasecmp strchr strcmp strcoll strcspn strip_tags stripcslashes stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpos strrchr strrev strripos strrpos strspn strstr strtok strtolower strtoupper strtr substr_compare substr_count substr_replace substr trim ucfirst ucwords vprintf vsprintf wordwrap contained
 syn keyword phpFunctions swf_actiongeturl swf_actiongotoframe swf_actiongotolabel swf_actionnextframe swf_actionplay swf_actionprevframe swf_actionsettarget swf_actionstop swf_actiontogglequality swf_actionwaitforframe swf_addbuttonrecord swf_addcolor swf_closefile swf_definebitmap swf_definefont swf_defineline swf_definepoly swf_definerect swf_definetext swf_endbutton swf_enddoaction swf_endshape swf_endsymbol swf_fontsize swf_fontslant swf_fonttracking swf_getbitmapinfo swf_getfontinfo swf_getframe swf_labelframe swf_lookat swf_modifyobject swf_mulcolor swf_nextid swf_oncondition swf_openfile swf_ortho2 swf_ortho swf_perspective swf_placeobject swf_polarview swf_popmatrix swf_posround swf_pushmatrix swf_removeobject swf_rotate swf_scale swf_setfont swf_setframe swf_shapearc swf_shapecurveto3 swf_shapecurveto swf_shapefillbitmapclip swf_shapefillbitmaptile swf_shapefilloff swf_shapefillsolid swf_shapelinesolid swf_shapelineto swf_shapemoveto swf_showframe swf_startbutton swf_startdoaction swf_startshape swf_startsymbol swf_textwidth swf_translate swf_viewport contained
 syn keyword phpFunctions sybase_affected_rows sybase_close sybase_connect sybase_data_seek sybase_deadlock_retry_count sybase_fetch_array sybase_fetch_assoc sybase_fetch_field sybase_fetch_object sybase_fetch_row sybase_field_seek sybase_free_result sybase_get_last_message sybase_min_client_severity sybase_min_error_severity sybase_min_message_severity sybase_min_server_severity sybase_num_fields sybase_num_rows sybase_pconnect sybase_query sybase_result sybase_select_db sybase_set_message_handler sybase_unbuffered_query contained
-syn keyword phpFunctions tidy_access_count tidy_clean_repair tidy_config_count tidy_diagnose tidy_error_count tidy_get_body tidy_get_config tidy_get_error_buffer tidy_get_head tidy_get_html_ver tidy_get_html tidy_get_output tidy_get_release tidy_get_root tidy_get_status tidy_getopt tidy_is_xhtml tidy_load_config tidy_parse_file tidy_parse_string tidy_repair_file tidy_repair_string tidy_reset_config tidy_save_config tidy_set_encoding tidy_setopt tidy_warning_count contained
+syn keyword phpFunctions tidy_access_count tidy_clean_repair tidy_config_count tidy_diagnose tidy_error_count tidy_get_body tidy_get_config tidy_get_error_buffer tidy_get_head tidy_get_html_ver tidy_get_html tidy_get_output tidy_get_release tidy_get_root tidy_get_status tidy_getopt tidy_is_xhtml tidy_load_config tidy_parse_file tidy_parse_string tidy_repair_file tidy_repair_string tidy_reset_config tidy_save_config tidy_set_encoding tidy_setopt tidy_warning_count tidy_is_xml tidy_get_opt_doc contained
 syn keyword phpMethods attributes children get_attr get_nodes has_children has_siblings is_asp is_comment is_html is_jsp is_jste is_text is_xhtml is_xml next prev tidy_node contained
 syn keyword phpFunctions token_get_all token_name contained
 syn keyword phpFunctions base64_decode base64_encode get_meta_tags http_build_query parse_url rawurldecode rawurlencode urldecode urlencode contained
 syn keyword phpFunctions doubleval empty floatval get_defined_vars get_resource_type gettype import_request_variables intval is_array is_bool is_callable is_double is_float is_int is_integer is_long is_null is_numeric is_object is_real is_resource is_scalar is_string isset print_r serialize settype strval unserialize unset var_dump var_export contained
+syn keyword phpFunctions get_called_class property_exists interface_exists trait_exists class_alias get_mangled_object_vars set_exception_handler restore_exception_handler get_declared_traits get_declared_interfaces get_resources gc_mem_caches gc_collect_cycles gc_enabled gc_enable gc_disable gc_status contained
 syn keyword phpFunctions vpopmail_add_alias_domain_ex vpopmail_add_alias_domain vpopmail_add_domain_ex vpopmail_add_domain vpopmail_add_user vpopmail_alias_add vpopmail_alias_del_domain vpopmail_alias_del vpopmail_alias_get_all vpopmail_alias_get vpopmail_auth_user vpopmail_del_domain_ex vpopmail_del_domain vpopmail_del_user vpopmail_error vpopmail_passwd vpopmail_set_user_quota contained
 syn keyword phpFunctions w32api_deftype w32api_init_dtype w32api_invoke_function w32api_register_function w32api_set_call_method contained
 syn keyword phpFunctions wddx_add_vars wddx_deserialize wddx_packet_end wddx_packet_start wddx_serialize_value wddx_serialize_vars contained
 syn keyword phpFunctions utf8_decode utf8_encode xml_error_string xml_get_current_byte_index xml_get_current_column_number xml_get_current_line_number xml_get_error_code xml_parse_into_struct xml_parse xml_parser_create_ns xml_parser_create xml_parser_free xml_parser_get_option xml_parser_set_option xml_set_character_data_handler xml_set_default_handler xml_set_element_handler xml_set_end_namespace_decl_handler xml_set_external_entity_ref_handler xml_set_notation_decl_handler xml_set_object xml_set_processing_instruction_handler xml_set_start_namespace_decl_handler xml_set_unparsed_entity_decl_handler contained
-syn keyword phpFunctions xmlrpc_decode_request xmlrpc_decode xmlrpc_encode_request xmlrpc_encode xmlrpc_get_type xmlrpc_parse_method_descriptions xmlrpc_server_add_introspection_data xmlrpc_server_call_method xmlrpc_server_create xmlrpc_server_destroy xmlrpc_server_register_introspection_callback xmlrpc_server_register_method xmlrpc_set_type contained
+syn keyword phpFunctions xmlrpc_decode_request xmlrpc_decode xmlrpc_encode_request xmlrpc_encode xmlrpc_get_type xmlrpc_parse_method_descriptions xmlrpc_server_add_introspection_data xmlrpc_server_call_method xmlrpc_server_create xmlrpc_server_destroy xmlrpc_server_register_introspection_callback xmlrpc_server_register_method xmlrpc_set_type xmlrpc_is_fault contained
+syn keyword phpFunctions xmlwriter_end_attribute xmlwriter_end_cdata xmlwriter_end_comment xmlwriter_end_document xmlwriter_end_dtd xmlwriter_end_dtd_attlist xmlwriter_end_dtd_element xmlwriter_end_dtd_entity xmlwriter_end_element xmlwriter_end_pi xmlwriter_flush xmlwriter_full_end_element xmlwriter_open_memory xmlwriter_open_uri xmlwriter_output_memory xmlwriter_set_indent xmlwriter_set_indent_string xmlwriter_start_attribute xmlwriter_start_attribute_ns xmlwriter_start_cdata xmlwriter_start_comment xmlwriter_start_document xmlwriter_start_dtd xmlwriter_start_dtd_attlist xmlwriter_start_dtd_element xmlwriter_start_dtd_entity xmlwriter_start_element xmlwriter_start_element_ns xmlwriter_start_pi xmlwriter_text xmlwriter_write_attribute xmlwriter_write_attribute_ns xmlwriter_write_cdata xmlwriter_write_comment xmlwriter_write_dtd xmlwriter_write_dtd_attlist xmlwriter_write_dtd_element xmlwriter_write_dtd_entity xmlwriter_write_element xmlwriter_write_element_ns xmlwriter_write_pi xmlwriter_write_raw contained
 syn keyword phpFunctions xslt_create xslt_errno xslt_error xslt_free xslt_output_process xslt_set_base xslt_set_encoding xslt_set_error_handler xslt_set_log xslt_set_sax_handler xslt_set_sax_handlers xslt_set_scheme_handler xslt_set_scheme_handlers contained
 syn keyword phpFunctions yaz_addinfo yaz_ccl_conf yaz_ccl_parse yaz_close yaz_connect yaz_database yaz_element yaz_errno yaz_error yaz_es_result yaz_get_option yaz_hits yaz_itemorder yaz_present yaz_range yaz_record yaz_scan_result yaz_scan yaz_schema yaz_search yaz_set_option yaz_sort yaz_syntax yaz_wait contained
 syn keyword phpFunctions zip_close zip_entry_close zip_entry_compressedsize zip_entry_compressionmethod zip_entry_filesize zip_entry_name zip_entry_open zip_entry_read zip_open zip_read contained
-syn keyword phpFunctions gzclose gzcompress gzdeflate gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell gzuncompress gzwrite readgzfile zlib_get_coding_type contained
+syn keyword phpFunctions gzclose gzcompress gzdeflate gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell gzuncompress gzwrite readgzfile zlib_get_coding_type gzdecode zlib_encode zlib_decode deflate_init deflate_add inflate_init inflate_add inflate_get_status inflate_get_read_len contained
 
 if exists( "php_baselib" )
   syn keyword phpMethods query next_record num_rows affected_rows nf f p np num_fields haltmsg seek link_id query_id metadata table_names nextid connect halt free register unregister is_registered delete url purl self_url pself_url hidden_session add_query padd_query reimport_get_vars reimport_post_vars reimport_cookie_vars set_container set_tokenname release_token put_headers get_id get_id put_id freeze thaw gc reimport_any_vars start url purl login_if is_authenticated auth_preauth auth_loginform auth_validatelogin auth_refreshlogin auth_registerform auth_doregister start check have_perm permsum perm_invalid contained
@@ -248,12 +267,12 @@ if exists( "php_baselib" )
 endif
 
 " Conditional
-syn keyword phpConditional declare else enddeclare endswitch elseif endif if switch contained
+syn keyword phpConditional declare else enddeclare endswitch elseif endif if switch match contained
 
 " Repeat
 syn keyword phpRepeat as do endfor endforeach endwhile for foreach while contained
 
-" Repeat
+" Label
 syn keyword phpLabel case default switch contained
 
 " Statement
@@ -277,7 +296,8 @@ syn match phpOperator "&&\|\<and\>" cont
 syn match phpOperator "||\|\<x\=or\>" contained display
 syn match phpRelation "[!=<>]=" contained display
 syn match phpRelation "[<>]" contained display
-syn match phpMemberSelector "->" contained display
+" PHP 8.0 adds the nullsafe operator ?-> for property access and method calls.
+syn match phpMemberSelector "?\?->" contained display
 syn match phpVarSelector "\$" contained display
 
 " Identifier
@@ -290,25 +310,25 @@ syn region phpIdentifierComplexP matchgr
   syn match phpBrackets "[][}{]" contained display
   " errors
     syn match phpInterpSimpleError "\[[^]]*\]" contained display " fallback (if nothing else matches)
-    syn match phpInterpSimpleError "->[^a-zA-Z_]" contained display
+    syn match phpInterpSimpleError "?\?->[^a-zA-Z_]" contained display
     " make sure these stay above the correct DollarCurlies so they don't take priority
     syn match phpInterpBogusDollarCurley "${[^}]*}" contained display " fallback (if nothing else matches)
   syn match phpinterpSimpleBracketsInner "\w\+" contained
   syn match phpInterpSimpleBrackets "\[\h\w*]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
   syn match phpInterpSimpleBrackets "\[\d\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
   syn match phpInterpSimpleBrackets "\[0[xX]\x\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
-  syn match phpInterpSimple "\$\h\w*\(\[[^]]*\]\|->\h\w*\)\?" contained contains=phpInterpSimpleBrackets,phpIdentifier,phpInterpSimpleError,phpMethods,phpMemberSelector display
+  syn match phpInterpSimple "\$\h\w*\(\[[^]]*\]\|?\?->\h\w*\)\?" contained contains=phpInterpSimpleBrackets,phpIdentifier,phpInterpSimpleError,phpMethods,phpMemberSelector display
   syn match phpInterpVarname "\h\w*" contained
   syn match phpInterpMethodName "\h\w*" contained " default color
   syn match phpInterpSimpleCurly "\${\h\w*}" contains=phpInterpVarname contained extend
   syn region phpInterpDollarCurley1Helper matchgroup=phpParent start="{" end="\[" contains=phpInterpVarname contained
   syn region phpInterpDollarCurly1 matchgroup=phpParent start="\${\h\w*\["rs=s+1 end="]}" contains=phpInterpDollarCurley1Helper,@phpClConst contained extend
 
-  syn match phpInterpDollarCurley2Helper "{\h\w*->" contains=phpBrackets,phpInterpVarname,phpMemberSelector contained
+  syn match phpInterpDollarCurley2Helper "{\h\w*?\?->" contains=phpBrackets,phpInterpVarname,phpMemberSelector contained
 
-  syn region phpInterpDollarCurly2 matchgroup=phpParent start="\${\h\w*->"rs=s+1 end="}" contains=phpInterpDollarCurley2Helper,phpInterpMethodName contained
+  syn region phpInterpDollarCurly2 matchgroup=phpParent start="\${\h\w*?\?->"rs=s+1 end="}" contains=phpInterpDollarCurley2Helper,phpInterpMethodName contained
 
-  syn match phpInterpBogusDollarCurley "${\h\w*->}" contained display
+  syn match phpInterpBogusDollarCurley "${\h\w*?\?->}" contained display
   syn match phpInterpBogusDollarCurley "${\h\w*\[]}" contained display
 
   syn region phpInterpComplex matchgroup=phpParent start="{\$"rs=e-1 end="}" contains=phpIdentifier,phpMemberSelector,phpVarSelector,phpIdentifierComplexP contained extend
@@ -317,7 +337,7 @@ syn region phpIdentifierComplexP matchgr
   syn cluster phpInterpDouble contains=phpInterpSimple,phpInterpSimpleCurly,phpInterpDollarCurly1,phpInterpDollarCurly2,phpInterpBogusDollarCurley,phpInterpComplex
 
 " Methods
-syn match phpMethodsVar "->\h\w*" contained contains=phpMethods,phpMemberSelector display
+syn match phpMethodsVar "?\?->\h\w*" contained contains=phpMethods,phpMemberSelector display
 
 " Include
 syn keyword phpInclude include require include_once require_once use contained
@@ -403,12 +423,13 @@ syn case ignore
 if exists("php_parent_error_close") || exists("php_parent_error_open")
   syn match phpParent "[{}]" contained
   syn region phpParent matchgroup=Delimiter start="(" end=")" contained contains=@phpClInside transparent
-  syn region phpParent matchgroup=Delimiter start="\[" end="\]" contained contains=@phpClInside transparent
+  syn region phpParent matchgroup=Delimiter start="#\?\[" end="\]" contained contains=@phpClInside transparent
   if !exists("php_parent_error_close")
     syn match phpParent "[\])]" contained
   endif
 else
   syn match phpParent "[({[\]})]" contained
+  syn match phpParent "#\[" contained
 endif
 
 syn cluster phpClConst contains=phpFunctions,phpIdentifier,phpConditional,phpRepeat,phpStatement,phpOperator,phpRelation,phpStringSingle,phpStringDouble,phpBacktick,phpNumber,phpFloat,phpKeyword,phpType,phpBoolean,phpStructure,phpMethodsVar,phpConstant,phpCoreConstant,phpException
@@ -496,16 +517,22 @@ hi def link phpSpecialFunction phpOperat
 " Highlighting for PHP5's built-in classes
 " - built-in classes harvested from get_declared_classes() in 5.1.4
 syntax keyword phpClasses containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar
-  \ stdClass __PHP_Incomplete_Class php_user_filter Directory ArrayObject
+  \ stdClass __PHP_Incomplete_Class php_user_filter AssertionError Directory ArrayObject
   \ Exception ErrorException LogicException BadFunctionCallException BadMethodCallException DomainException
+  \ ArgumentCountError ArithmeticError ClosedGeneratorException Closure CompileError DivisionByZeroError Generator ParseError TypeError WeakReference
   \ RecursiveIteratorIterator IteratorIterator FilterIterator RecursiveFilterIterator ParentIterator LimitIterator
   \ CachingIterator RecursiveCachingIterator NoRewindIterator AppendIterator InfiniteIterator EmptyIterator
   \ ArrayIterator RecursiveArrayIterator DirectoryIterator RecursiveDirectoryIterator
+  \ CallbackFilterIterator FilesystemIterator GlobIterator MultipleIterator RecursiveCallbackFilterIterator 
+  \ RecursiveRegexIterator RecursiveTreeIterator RegexIterator SplDoublyLinkedList 
+  \ SplFixedArray SplHeap SplMaxHeap SplMinHeap SplPriorityQueue SplQueue SplStack
   \ InvalidArgumentException LengthException OutOfRangeException RuntimeException OutOfBoundsException
   \ OverflowException RangeException UnderflowException UnexpectedValueException
   \ PDO PDOException PDOStatement PDORow
   \ Reflection ReflectionFunction ReflectionParameter ReflectionMethod ReflectionClass
   \ ReflectionObject ReflectionProperty ReflectionExtension ReflectionException
+  \ ReflectionClassConstant ReflectionFunctionAbstract ReflectionGenerator ReflectionNamedType 
+  \ ReflectionReference ReflectionType ReflectionZendExtension
   \ SplFileInfo SplFileObject SplTempFileObject SplObjectStorage
   \ XMLWriter LibXMLError XMLReader SimpleXMLElement SimpleXMLIterator
   \ DOMException DOMStringList DOMNameList DOMDomError DOMErrorHandler
@@ -514,13 +541,33 @@ syntax keyword phpClasses containedin=AL
   \ DOMCharacterData DOMAttr DOMElement DOMText DOMComment DOMTypeinfo DOMUserDataHandler
   \ DOMLocator DOMConfiguration DOMCdataSection DOMDocumentType DOMNotation DOMEntity
   \ DOMEntityReference DOMProcessingInstruction DOMStringExtend DOMXPath
+  \ APCIterator APCuIterator
+  \ CURLFile
+  \ DateInterval DatePeriod DateTime DateTimeImmutable DateTimeZone
+  \ finfo
+  \ GMP
+  \ Collator IntlBreakIterator IntlCalendar IntlChar IntlCodePointBreakIterator IntlDateFormatter IntlException IntlGregorianCalendar IntlIterator IntlPartsIterator IntlRuleBasedBreakIterator IntlTimeZone Locale MessageFormatter Normalizer NumberFormatter ResourceBundle Spoofchecker Transliterator UConverter
+  \ FFI CData CType ParserException
+  \ HashContext
+  \ JsonException
+  \ Memcached MemcachedException
+  \ mysqli mysqli_driver mysqli_result mysqli_sql_exception mysqli_stmt mysqli_warning
+  \ SessionHandler
+  \ SoapClient SoapFault SoapHeader SoapParam SoapServer SoapVar
+  \ SQLite3 SQLite3Result SQLite3Stmt
+  \ tidy tidyNode
+  \ XSLTProcessor ZipArchive
+  \ Phar PharData PharException PharFileInfo
+
 hi def link phpClasses phpFunctions
 
-" Highlighting for PHP5's built-in interfaces
-" - built-in classes harvested from get_declared_interfaces() in 5.1.4
+" Highlighting for PHP's built-in interfaces
 syntax keyword phpInterfaces containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar
   \ Iterator IteratorAggregate RecursiveIterator OuterIterator SeekableIterator
   \ Traversable ArrayAccess Serializable Countable SplObserver SplSubject Reflector
+  \ Throwable DateTimeInterface JsonSerializable SessionHandlerInterface SessionIdInterface SessionUpdateTimestampHandlerInterface
+  \
+
 hi def link phpInterfaces phpConstant
 
 " option defaults:
@@ -542,6 +589,7 @@ if php_special_functions
   " - eval() is the token 'make_your_code_twice_as_complex()' function for PHP.
   " - user_error()/trigger_error() can be overloaded by set_error_handler and also
   "   have the capacity to terminate your script when type is E_USER_ERROR.
+  " - match(){} is not a function
   syntax keyword phpSpecialFunction containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle
   \ user_error trigger_error isset unset eval extract compact empty
 endif
--- a/runtime/tutor/tutor
+++ b/runtime/tutor/tutor
@@ -319,6 +319,7 @@ NOTE:  Pressing just the motion while in
 --->  6)  Sugar is sweet
 --->  7)  And so are you.
 
+Doubling to operate on a line also works for operators mentioned below
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			 Lesson 2.7: THE UNDO COMMAND
@@ -432,7 +433,7 @@ NOTE: Remember that you should be learni
 ---> This line has a few words that need changing using the change operator.
 
 Notice that  ce  deletes the word and places you in Insert mode.
-
+             cc  does the same for the whole line
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -802,7 +803,8 @@ NOTE:  Replace mode is like Insert mode,
 --->  a) this is the first item.
       b)
 
-  NOTE: You can also use  y  as an operator;  yw  yanks one word.
+  NOTE: You can also use  y  as an operator:  yw  yanks one word,
+        yy  yanks the whole line, then  p  puts that line
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			    Lesson 6.5: SET OPTION
 
--- a/runtime/tutor/tutor.utf-8
+++ b/runtime/tutor/tutor.utf-8
@@ -319,6 +319,7 @@ NOTE:  Pressing just the motion while in
 --->  6)  Sugar is sweet
 --->  7)  And so are you.
 
+Doubling to operate on a line also works for operators mentioned below
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			 Lesson 2.7: THE UNDO COMMAND
@@ -432,7 +433,7 @@ NOTE: Remember that you should be learni
 ---> This line has a few words that need changing using the change operator.
 
 Notice that  ce  deletes the word and places you in Insert mode.
-
+             cc  does the same for the whole line
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -802,7 +803,8 @@ NOTE:  Replace mode is like Insert mode,
 --->  a) this is the first item.
       b)
 
-  NOTE: You can also use  y  as an operator;  yw  yanks one word.
+  NOTE: You can also use  y  as an operator:  yw  yanks one word,
+        yy  yanks the whole line, then  p  puts that line
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 			    Lesson 6.5: SET OPTION
 
--- a/src/po/tr.po
+++ b/src/po/tr.po
@@ -7,9 +7,9 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: Vim Turkish Localization Project\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-22 22:11+0300\n"
-"PO-Revision-Date: 2020-08-22 22:50+0300\n"
+"Report-Msgid-Bugs-To: Emir SARI <bitigchi@me.com>\n"
+"POT-Creation-Date: 2020-09-04 18:43+0300\n"
+"PO-Revision-Date: 2020-09-04 21:30+0300\n"
 "Last-Translator: Emir SARI <bitigchi@me.com>\n"
 "Language-Team: Turkish <https://github.com/bitigchi/vim>\n"
 "Language: tr\n"
@@ -176,14 +176,15 @@ msgstr "E88: İlk arabellekten öncesine gidilemez"
 #, c-format
 msgid "E89: No write since last change for buffer %d (add ! to override)"
 msgstr ""
-"E89: %d numaralı arabellek son değişiklikten sonra yazılmadı (geçersiz kılmak "
-"için ! ekleyin)"
+"E89: %d numaralı arabellek son değişiklikten sonra yazılmadı (geçersiz "
+"kılmak için ! ekleyin)"
 
 msgid "E948: Job still running (add ! to end the job)"
 msgstr "E948: İş hâlâ sürüyor (bitirmek için ! ekleyin)"
 
 msgid "E37: No write since last change (add ! to override)"
-msgstr "E37: Son değişiklikten sonra yazılmadı (geçersiz kılmak için ! ekleyin)"
+msgstr ""
+"E37: Son değişiklikten sonra yazılmadı (geçersiz kılmak için ! ekleyin)"
 
 msgid "E948: Job still running"
 msgstr "E948: İş hâlâ sürüyor"
@@ -1127,15 +1128,15 @@ msgstr "Geriye dönük erim verildi, takas edilebilir"
 msgid "E494: Use w or w>>"
 msgstr "E494: w veya w>> kullanın"
 
+msgid "E943: Command table needs to be updated, run 'make cmdidxs'"
+msgstr ""
+"E943: Komut tablosunun güncellenmesi gerekiyor, 'make cmdidxs' çalıştırın"
+
 msgid ""
 "INTERNAL: Cannot use EX_DFLALL with ADDR_NONE, ADDR_UNSIGNED or ADDR_QUICKFIX"
 msgstr ""
 "DAHİLİ: EX_DFLALL; ADDR_NONE, ADDR_UNSIGNED veya ADDR_QUICKFIX ile birlikte "
-"kullanılamıyor"
-
-msgid "E943: Command table needs to be updated, run 'make cmdidxs'"
-msgstr ""
-"E943: Komut tablosunun güncellenmesi gerekiyor, 'make cmdidxs' çalıştırın"
+"kullanılamaz"
 
 msgid "E319: Sorry, the command is not available in this version"
 msgstr "E319: Üzgünüm, komut bu sürümde mevcut değil"
@@ -1186,8 +1187,8 @@ msgstr "Dosya iliştir"
 
 msgid "E747: Cannot change directory, buffer is modified (add ! to override)"
 msgstr ""
-"E747: Dizin değiştirilemiyor, arabellek değiştirilmiş (geçersiz kılmak için ! "
-"ekleyin)"
+"E747: Dizin değiştirilemiyor, arabellek değiştirilmiş (geçersiz kılmak "
+"için ! ekleyin)"
 
 msgid "E186: No previous directory"
 msgstr "E186: Öncesinde dizin yok"
@@ -1533,10 +1534,10 @@ msgid "E321: Could not reload \"%s\""
 msgstr "E321: \"%s\" yeniden yüklenemedi"
 
 msgid "E219: Missing {."
-msgstr "E219: Eksik {."
+msgstr "E219: { eksik."
 
 msgid "E220: Missing }."
-msgstr "E220: Eksik }."
+msgstr "E220: } eksik."
 
 msgid "<empty>"
 msgstr "<boş>"
@@ -1823,7 +1824,7 @@ msgid "E243: Argument not supported: \"-
 msgstr "E243: \"-%s\" değişkeni desteklenmiyor; OLE sürümünü kullanın."
 
 msgid "E988: GUI cannot be used. Cannot execute gvim.exe."
-msgstr "E988: Grafik arabirim kullanılamıyor. gvim.exe çalıştırılamadı."
+msgstr "E988: Grafik arabirim kullanılamaz. gvim.exe çalıştırılamadı."
 
 msgid "E672: Unable to open window inside MDI application"
 msgstr "E672: MDI uygulaması içinde pencere açılamıyor"
@@ -1917,7 +1918,7 @@ msgid "Size:"
 msgstr "Büyüklük:"
 
 msgid "E550: Missing colon"
-msgstr "E550: Eksik iki nokta"
+msgstr "E550: İki nokta eksik"
 
 msgid "E551: Illegal component"
 msgstr "E551: Geçersiz bileşen"
@@ -2606,7 +2607,7 @@ msgstr "flatten() değişkeni"
 
 #, c-format
 msgid "E696: Missing comma in List: %s"
-msgstr "E696: Listede eksik virgül: %s"
+msgstr "E696: Listede virgül eksik: %s"
 
 msgid "sort() argument"
 msgstr "sort() değişkeni"
@@ -2672,7 +2673,7 @@ msgid "netbeans is not supported with th
 msgstr "NetBeans bu grafik arabirimde desteklenmiyor\n"
 
 msgid "'-nb' cannot be used: not enabled at compile time\n"
-msgstr "'-nb' kullanılamıyor: derleme sırasında etkinleştirilmemiş\n"
+msgstr "'-nb' kullanılamaz: Derleme sırasında etkinleştirilmemiş\n"
 
 msgid "This Vim was not compiled with the diff feature."
 msgstr "Bu Vim karşılaştırma özelliği ile derlenmemiş"
@@ -3773,7 +3774,7 @@ msgid "Calling shell to execute: \"%s\""
 msgstr "Çalıştırmak için çağrılan kabuk: \"%s\""
 
 msgid "E545: Missing colon"
-msgstr "E545: Eksik iki nokta"
+msgstr "E545: İki nokta eksik"
 
 msgid "E546: Illegal mode"
 msgstr "E546: İzin verilmeyen kip"
@@ -4021,17 +4022,17 @@ msgid "E950: Cannot convert between %s a
 msgstr "E950: %s ve %s arasında dönüştürme yapılamıyor"
 
 msgid "E524: Missing colon"
-msgstr "E524: Eksik iki nokta"
+msgstr "E524: İki nokta eksik"
 
 msgid "E525: Zero length string"
 msgstr "E525: Sıfır uzunlukta dizi"
 
 #, c-format
 msgid "E526: Missing number after <%s>"
-msgstr "E526: <%s> sonrasında eksik sayı"
+msgstr "E526: <%s> sonrasında sayı eksik"
 
 msgid "E527: Missing comma"
-msgstr "E527: Eksik virgül"
+msgstr "E527: Virgül eksik"
 
 msgid "E528: Must specify a ' value"
 msgstr "E528: Bir ' değeri belirtmeli"
@@ -4328,7 +4329,7 @@ msgid "E373: Unexpected %%%c in format s
 msgstr "E373: Biçimlendirme dizisinde beklenmeyen %%%c"
 
 msgid "E374: Missing ] in format string"
-msgstr "E374: Biçimlendirme dizisinde eksik ]"
+msgstr "E374: Biçimlendirme dizisinde ] eksik"
 
 #, c-format
 msgid "E375: Unsupported %%%c in format string"
@@ -4403,7 +4404,7 @@ msgstr "E369: %s%%[] içinde geçersiz öge"
 
 #, c-format
 msgid "E769: Missing ] after %s["
-msgstr "E769: %s[ sonrasında eksik ]"
+msgstr "E769: %s[ sonrasında ] eksik"
 
 msgid "E944: Reverse range in character class"
 msgstr "E944: Karakter sınıfında geriye dönük erim"
@@ -4431,14 +4432,14 @@ msgstr "E67: \\z1 - \\z9'a burada izin v
 
 #, c-format
 msgid "E69: Missing ] after %s%%["
-msgstr "E69: %s%%[ sonrasında eksik ]"
+msgstr "E69: %s%%[ sonrasında ] eksik"
 
 #, c-format
 msgid "E70: Empty %s%%[]"
 msgstr "E70: Boş %s%%[]"
 
 msgid "E956: Cannot use pattern recursively"
-msgstr "E956: Dizgi özyineli olarak kullanılamıyor"
+msgstr "E956: Dizgi özyineli olarak kullanılamaz"
 
 #, c-format
 msgid "E654: missing delimiter after search pattern: %s"
@@ -4848,7 +4849,7 @@ msgid "E885: Not possible to change sign
 msgstr "E885: %s işaretini değiştirmek olanaklı değil"
 
 msgid "E159: Missing sign number"
-msgstr "E159: Eksik işaret numarası"
+msgstr "E159: İşaret numarası eksik"
 
 #, c-format
 msgid "E157: Invalid sign ID: %d"
@@ -4862,7 +4863,7 @@ msgid "E160: Unknown sign command: %s"
 msgstr "E160: Bilinmeyen işaret komutu: %s"
 
 msgid "E156: Missing sign name"
-msgstr "E156: Eksik işaret adı"
+msgstr "E156: İşaret adı eksik"
 
 msgid " (NOT FOUND)"
 msgstr " (BULUNAMADI)"
@@ -5047,7 +5048,7 @@ msgstr "%s içinde %d. satırda yinelenen veya tanınmayan öge: %s"
 
 #, c-format
 msgid "Missing FOL/LOW/UPP line in %s"
-msgstr "%s içinde eksik FOL/LOW/UPP satırı"
+msgstr "%s içinde FOL/LOW/UPP satırı eksik"
 
 msgid "COMPOUNDSYLMAX used without SYLLABLE"
 msgstr "COMPOUNDSYLMAX, SYLLABLE olmadan kullanılmış"
@@ -5063,7 +5064,7 @@ msgstr "Çok fazla ertelenen önek ve/veya bileşik bayrak"
 
 #, c-format
 msgid "Missing SOFO%s line in %s"
-msgstr "%s içinde eksik SOFO%s satırı"
+msgstr "%s içinde SOFO%s satırı eksik"
 
 #, c-format
 msgid "Both SAL and SOFO lines in %s"
@@ -5155,7 +5156,7 @@ msgstr "E845: Yetersiz bellek, sözcük listesi tam olmayacak"
 
 #, c-format
 msgid "Compressed %s: %ld of %ld nodes; %ld (%ld%%) remaining"
-msgstr "%s sıkıştırılıyor: %ld/%ld uç sıkıştırıldı; %ld (%ld%%) kalan"
+msgstr "%s sıkıştırılıyor: %ld/%ld uç sıkıştırıldı; %ld (%%%ld) kalan"
 
 msgid "Reading back spell file..."
 msgstr "Yazım dosyası yeniden okunuyor..."
@@ -5350,7 +5351,7 @@ msgstr "E847: Çok fazla sözdizim kuralı"
 
 #, c-format
 msgid "E789: Missing ']': %s"
-msgstr "E789: Eksik ']': %s"
+msgstr "E789: ']' eksik: %s"
 
 #, c-format
 msgid "E890: trailing char after ']': %s]%s"
@@ -5358,7 +5359,7 @@ msgstr "E890: ']' sonrası fazladan karakter: %s]%s"
 
 #, c-format
 msgid "E398: Missing '=': %s"
-msgstr "E398: Eksik '=': %s"
+msgstr "E398: '=' eksik: %s"
 
 #, c-format
 msgid "E399: Not enough arguments: syntax region %s"
@@ -5387,7 +5388,7 @@ msgstr "E404: İzin verilmeyen değişkenler: %s"
 
 #, c-format
 msgid "E405: Missing equal sign: %s"
-msgstr "E405: Eksik eşittir imi: %s"
+msgstr "E405: Eşittir imi eksik: %s"
 
 #, c-format
 msgid "E406: Empty argument: %s"
@@ -5724,11 +5725,11 @@ msgstr ""
 
 #, c-format
 msgid "E114: Missing quote: %s"
-msgstr "E114: Eksik alıntı: %s"
+msgstr "E114: Tırnak imi eksik: %s"
 
 #, c-format
 msgid "E115: Missing quote: %s"
-msgstr "E115: Eksik alıntı: %s"
+msgstr "E115: Tırnak imi eksik: %s"
 
 msgid "new shell started\n"
 msgstr "yeni kabuk başlatıldı\n"
@@ -5805,7 +5806,7 @@ msgid "E824: Incompatible undo file: %s"
 msgstr "E824: Uyumsuz geri al dosyası: %s"
 
 msgid "File contents changed, cannot use undo info"
-msgstr "Dosya içeriği değişmiş, geri alma bilgisi kullanılamıyor"
+msgstr "Dosya içeriği değişmiş, geri alma bilgisi kullanılamaz"
 
 #, c-format
 msgid "Finished reading undo file %s"
@@ -5987,7 +5988,7 @@ msgstr "E699: Çok fazla değişken"
 
 #, c-format
 msgid "E276: Cannot use function as a method: %s"
-msgstr "E276: İşlev bir yöntem olarak kullanılamıyor: %s"
+msgstr "E276: İşlev bir yöntem olarak kullanılamaz: %s"
 
 #, c-format
 msgid "E120: Using <SID> not in a script context: %s"
@@ -6468,7 +6469,7 @@ msgstr ""
 "# Atlama listesi (önce en yeniler):\n"
 
 msgid "Missing '>'"
-msgstr "Eksik '>'"
+msgstr "'>' eksik"
 
 msgid "Illegal starting char"
 msgstr "İzin verilmeyen başlangıç karakteri"
@@ -6599,6 +6600,412 @@ msgstr "gvimext.dll hatası"
 msgid "Path length too long!"
 msgstr "Yol çok uzun!"
 
+#, c-format
+msgid "E121: Undefined variable: %s"
+msgstr "E121: Tanımlanmamış değişken: %s"
+
+#, c-format
+msgid "E121: Undefined variable: %c:%s"
+msgstr "E121: Tanımlanmamış değişken: %c:%s"
+
+msgid "E476: Invalid command"
+msgstr "E476: Geçersiz komut"
+
+#, c-format
+msgid "E476: Invalid command: %s"
+msgstr "E476: Geçersiz komut: %s"
+
+msgid "E719: cannot slice a Dictionary"
+msgstr "E719: Bir Sözlük dilimlenemiyor"
+
+msgid "E909: Cannot index a special variable"
+msgstr "E909: Özel bir değişken dizinlenemiyor"
+
+#, c-format
+msgid "E1100: Missing :let: %s"
+msgstr "E1100: :let eksik: %s"
+
+#, c-format
+msgid "E1001: variable not found: %s"
+msgstr "E1001: Değişken bulunamadı: %s"
+
+#, c-format
+msgid "E1002: Syntax error at %s"
+msgstr "E1002: %s konumunda sözdizim hatası"
+
+msgid "E1003: Missing return value"
+msgstr "E1003: Dönüş değeri eksik"
+
+#, c-format
+msgid "E1004: white space required before and after '%s'"
+msgstr "E1004: '%s' öncesinde ve sonrasında boşluk gerekiyor"
+
+msgid "E1005: Too many argument types"
+msgstr "E1005: Çok fazla değişken türü"
+
+#, c-format
+msgid "E1006: %s is used as an argument"
+msgstr "E1006: %s bir değişken olarak kullanılıyor"
+
+msgid "E1007: mandatory argument after optional argument"
+msgstr "E1007: İsteğe bağlı değişken sonrasında zorunlu değişken"
+
+msgid "E1008: Missing <type>"
+msgstr "E1008: <tür> eksik"
+
+msgid "E1009: Missing > after type"
+msgstr "E1009: Tür sonrasında > eksik"
+
+#, c-format
+msgid "E1010: Type not recognized: %s"
+msgstr "E1010: Tür tanımlanamadı: %s"
+
+#, c-format
+msgid "E1011: name too long: %s"
+msgstr "E1011: Ad çok uzun: %s"
+
+#, c-format
+msgid "E1012: type mismatch, expected %s but got %s"
+msgstr "E1012: Tür uyumsuzluğu, %s bekleniyordu, ancak %s alındı"
+
+#, c-format
+msgid "E1013: argument %d: type mismatch, expected %s but got %s"
+msgstr "E1013: %d değişkeni: Tür uyumsuzluğu, %s bekleniyordu, ancak %s alındı"
+
+#, c-format
+msgid "E1014: Invalid key: %s"
+msgstr "E1014: Geçersiz anahtar: %s"
+
+#, c-format
+msgid "E1015: Name expected: %s"
+msgstr "E1015: Ad bekleniyordu: %s"
+
+#, c-format
+msgid "E1016: Cannot declare a %s variable: %s"
+msgstr "E1016: Bir %s değişkeni tanımlanamıyor: %s"
+
+#, c-format
+msgid "E1016: Cannot declare an environment variable: %s"
+msgstr "E1016: Bir ortam değişkeni tanımlanamıyor: %s"
+
+#, c-format
+msgid "E1017: Variable already declared: %s"
+msgstr "E1017: Değişken halihazırda tanımlanmış: %s"
+
+#, c-format
+msgid "E1018: Cannot assign to a constant: %s"
+msgstr "E1018: Bir sabite atanamıyor: %s"
+
+msgid "E1019: Can only concatenate to string"
+msgstr "E1019: Yalnızca bir diziye birleştirilebilir"
+
+#, c-format
+msgid "E1020: cannot use an operator on a new variable: %s"
+msgstr "E1020: Yeni bir değişken üzerinde bir işleç kullanılamaz: %s"
+
+msgid "E1021: const requires a value"
+msgstr "E1021: Sabit, bir değer gerektiriyor"
+
+msgid "E1022: type or initialization required"
+msgstr "E1022: Tür veya ilklendirme gerekiyor"
+
+#, c-format
+msgid "E1023: Using a Number as a Bool: %d"
+msgstr "E1023: Bir Sayı, bir Bool yerine kullanılıyor: %d"
+
+msgid "E1024: Using a Number as a String"
+msgstr "E1024: Bir Sayı, bir Dizi yerine kullanılıyor"
+
+msgid "E1025: using } outside of a block scope"
+msgstr "E1025: } bir blok kapsamı dışında kullanılıyor"
+
+msgid "E1026: Missing }"
+msgstr "E1026: } eksik"
+
+msgid "E1027: Missing return statement"
+msgstr "E1027: Dönüş ifadesi eksik"
+
+msgid "E1028: compile_def_function failed"
+msgstr "E1028: compile_def_function başarısız"
+
+#, c-format
+msgid "E1029: Expected %s but got %s"
+msgstr "E1029: %s bekleniyordu ancak %s alındı"
+
+msgid "E1030: Using a String as a Number"
+msgstr "E1030: Bir Dizi, bir Sayı yerine kullanılıyor"
+
+msgid "E1031: Cannot use void value"
+msgstr "E1031: Boş değer kullanılamaz"
+
+msgid "E1032: missing :catch or :finally"
+msgstr "E1032: :catch veya :finally eksik"
+
+msgid "E1033: catch unreachable after catch-all"
+msgstr "E1033: catch-all sonrası catch ulaşılamıyor"
+
+#, c-format
+msgid "E1034: Cannot use reserved name %s"
+msgstr "E1034: Ayrılmış ad %s kullanılamaz"
+
+msgid "E1035: % requires number arguments"
+msgstr "E1035: %, sayı değişkenler gerektiriyor"
+
+#, c-format
+msgid "E1036: %c requires number or float arguments"
+msgstr "E1036: %c, sayı veya kayan noktalı değer değişkenler gerektiriyor"
+
+#, c-format
+msgid "E1037: Cannot use \"%s\" with %s"
+msgstr "E1037: \"%s\", %s ile birlikte kullanılamaz"
+
+msgid "E1038: vim9script can only be used in a script"
+msgstr "E1038: vim9script yalnızca bir betikte kullanılabilir"
+
+msgid "E1039: vim9script must be the first command in a script"
+msgstr "E1039: vim9script bir betikteki ilk komut olmalıdır"
+
+msgid "E1040: Cannot use :scriptversion after :vim9script"
+msgstr "E1040: :vim9script sonrası :scriptversion kullanılamaz"
+
+#, c-format
+msgid "E1041: Redefining script item %s"
+msgstr "E1041: Betik ögesi %s yeniden tanımlanıyor"
+
+msgid "E1042: export can only be used in vim9script"
+msgstr "E1042: Dışa aktarma yalnızca vim9script içinde kullanılabilir"
+
+msgid "E1043: Invalid command after :export"
+msgstr "E1043: :export sonrası geçersiz komut"
+
+msgid "E1044: export with invalid argument"
+msgstr "E1044: Geçersiz değişkenle dışa aktarım"
+
+msgid "E1045: Missing \"as\" after *"
+msgstr "E1045: * sonrası \"as\" eksik"
+
+msgid "E1046: Missing comma in import"
+msgstr "E1046: İçe aktarımda virgül eksik"
+
+msgid "E1047: syntax error in import"
+msgstr "E1047: İçe aktarımda sözdizim hatası"
+
+#, c-format
+msgid "E1048: Item not found in script: %s"
+msgstr "E1048: Betikte öge bulunamadı: %s"
+
+#, c-format
+msgid "E1049: Item not exported in script: %s"
+msgstr "E1049: Betikte öge dışa aktarılmadı: %s"
+
+msgid "E1050: Colon required before a range"
+msgstr "E1050: Bir erim öncesi iki nokta gerekiyor"
+
+msgid "E1051: wrong argument type for +"
+msgstr "E1051: + için hatalı değişken türü"
+
+#, c-format
+msgid "E1052: Cannot declare an option: %s"
+msgstr "E1052: Bir seçenek tanımlanamıyor: %s"
+
+#, c-format
+msgid "E1053: Could not import \"%s\""
+msgstr "E1053: \"%s\" içe aktarılamadı"
+
+#, c-format
+msgid "E1054: Variable already declared in the script: %s"
+msgstr "E1054: Betikte değişken halihazırda tanımlanmış: %s"
+
+msgid "E1055: Missing name after ..."
+msgstr "E1055: ... sonraki ad eksik"
+
+#, c-format
+msgid "E1056: expected a type: %s"
+msgstr "E1056: Bir tür bekleniyordu: %s"
+
+msgid "E1057: Missing :enddef"
+msgstr "E1057: :enddef eksik"
+
+msgid "E1058: function nesting too deep"
+msgstr "E1058: İşlev çok iç içe geçmiş"
+
+#, c-format
+msgid "E1059: No white space allowed before colon: %s"
+msgstr "E1059: İki nokta öncesinde boşluğa izin verilmiyor: %s"
+
+#, c-format
+msgid "E1060: expected dot after name: %s"
+msgstr "E1060: Ad sonrası nokta bekleniyordu: %s"
+
+#, c-format
+msgid "E1061: Cannot find function %s"
+msgstr "E1061: %s işlevi bulunamıyor"
+
+msgid "E1062: Cannot index a Number"
+msgstr "E1062: Bir Sayı dizinlenemiyor"
+
+msgid "E1063: type mismatch for v: variable"
+msgstr "E1063: v: değişkeni için tür uyumsuzluğu"
+
+#, c-format
+msgid "E1066: Cannot declare a register: %s"
+msgstr "E1066: Bir yazmaç tanımlanamıyor: %s"
+
+#, c-format
+msgid "E1067: Separator mismatch: %s"
+msgstr "E1067: Ayırıcı uyumsuzluğu: %s"
+
+#, c-format
+msgid "E1068: No white space allowed before '%s'"
+msgstr "E1068: '%s' önce boşluğa izin verilmiyor"
+
+#, c-format
+msgid "E1069: white space required after '%s'"
+msgstr "E1069: '%s' sonrası boşluğa izin verilmiyor"
+
+msgid "E1070: Missing \"from\""
+msgstr "E1070: \"from\" eksik"
+
+msgid "E1071: Invalid string after \"from\""
+msgstr "E1071: \"from\" sonrası geçersiz dizi"
+
+#, c-format
+msgid "E1072: Cannot compare %s with %s"
+msgstr "E1072: %s, %s ile karşılaştırılamıyor"
+
+#, c-format
+msgid "E1073: name already defined: %s"
+msgstr "E1073: Ad halihazırda tanımlanmış: %s"
+
+msgid "E1074: no white space allowed after dot"
+msgstr "E1074: Nokta sonrası boşluğa izin verilmiyor"
+
+#, c-format
+msgid "E1075: Namespace not supported: %s"
+msgstr "E1075: Ad alanı desteklenmiyor: %s"
+
+msgid "E1076: This Vim is not compiled with float support"
+msgstr "E1076: Bu Vim kayan noktalı değer desteği ile derlenmemiş"
+
+#, c-format
+msgid "E1077: Missing argument type for %s"
+msgstr "E1077: %s için değişken türü eksik"
+
+#, c-format
+msgid "E1081: Cannot unlet %s"
+msgstr "E1081: %s sabitten değişkene çevrilemiyor"
+
+#, c-format
+msgid "E1082: Cannot use a namespaced variable: %s"
+msgstr "E1082: Ad alanına alınmış bir değişken kullanılamaz: %s"
+
+msgid "E1083: missing backtick"
+msgstr "E1083: Ters eğik kesme imi eksik"
+
+#, c-format
+msgid "E1084: Cannot delete Vim9 script function %s"
+msgstr "E1084: Vim9 betik işlevi %s silinemiyor"
+
+#, c-format
+msgid "E1085: Not a callable type: %s"
+msgstr "E1085: Çağrılabilir bir tür değil: %s"
+
+msgid "E1086: Cannot use :function inside :def"
+msgstr "E1086: :def içinde :function kullanılamaz"
+
+msgid "E1087: cannot use an index when declaring a variable"
+msgstr "E1087: Bir değişken tanımlarken bir indeks kullanılamaz"
+
+#, c-format
+msgid "E1089: unknown variable: %s"
+msgstr "E1089: Bilinmeyen değişken: %s"
+
+#, c-format
+msgid "E1090: Cannot assign to argument %s"
+msgstr "E1090: %s değişkenine atanamıyor"
+
+#, c-format
+msgid "E1091: Function is not compiled: %s"
+msgstr "E1091: İşlev derlenmemiş: %s"
+
+msgid "E1092: Cannot use a list for a declaration"
+msgstr "E1092: Tanımlama için bir liste kullanılamaz"
+
+#, c-format
+msgid "E1093: Expected %d items but got %d"
+msgstr "E1093: %d öge bekleniyordu, ancak %d alındı"
+
+msgid "E1094: import can only be used in a script"
+msgstr "E1094: İçe aktarım yalnızca bir betikte kullanılabilir"
+
+msgid "E1095: Unreachable code after :return"
+msgstr "E1095: :return sonrası ulaşılamayan kod"
+
+msgid "E1096: Returning a value in a function without a return type"
+msgstr "E1096: Dönüş türü olmayan bir işlevde bir değer döndürülüyor"
+
+msgid "E1097: line incomplete"
+msgstr "E1097: Satır tamamlanmamış"
+
+#, c-format
+msgid "E1099: Unknown error while executing %s"
+msgstr "E1099: %s çalıştırılırken bilinmeyen hata"
+
+#, c-format
+msgid "E1101: Cannot declare a script variable in a function: %s"
+msgstr "E1101: Bir işlevde bir betik değişkeni tanımlanamıyor: %s"
+
+#, c-format
+msgid "E1102: lambda function not found: %s"
+msgstr "E1102: Lambda işlevi bulunamadı: %s"
+
+msgid "E1103: Dictionary not set"
+msgstr "E1103: Sözlük ayarlanmamış"
+
+msgid "E1104: Missing >"
+msgstr "E1104: > eksik"
+
+#, c-format
+msgid "E1105: Cannot convert %s to string"
+msgstr "E1105: %s bir diziye dönüştürülemiyor"
+
+msgid "E1106: one argument too many"
+msgstr "E1106: Bir değişken fazladan"
+
+#, c-format
+msgid "E1106: %d arguments too many"
+msgstr "E1106: %d değişken fazladan"
+
+msgid "E1107: String, List, Dict or Blob required"
+msgstr "E1107: Dizi, Liste, Sözlük veya İkili Nesne gerekiyor"
+
+#, c-format
+msgid "E1108: Item not found: %s"
+msgstr "E1108: Öge bulunamadı: %s"
+
+#, c-format
+msgid "E1109: List item %d is not a List"
+msgstr "E1109: Liste ögesi %d bir Liste değil"
+
+#, c-format
+msgid "E1110: List item %d does not contain 3 numbers"
+msgstr "E1110: Liste ögesi %d 3 sayı içermiyor"
+
+#, c-format
+msgid "E1111: List item %d range invalid"
+msgstr "E1111: Liste ögesi %d erimi geçersiz"
+
+#, c-format
+msgid "E1112: List item %d cell width invalid"
+msgstr "E1112: Liste ögesi %d hücre genişliği geçersiz"
+
+#, c-format
+msgid "E1113: Overlapping ranges for 0x%lx"
+msgstr "E1113: 0x%lx için üst üste binen erimler"
+
+msgid "E1114: Only values of 0x100 and higher supported"
+msgstr "E1114: Yalnızca 0x100 ve daha yüksek değerler destekleniyor"
+
 msgid "--No lines in buffer--"
 msgstr "--Arabellek içinde satır yok--"
 
@@ -6620,7 +7027,7 @@ msgstr ""
 "verilmiyor"
 
 msgid "E171: Missing :endif"
-msgstr "E171: Eksik :endif"
+msgstr "E171: :endif eksik"
 
 msgid "E603: :catch without :try"
 msgstr "E603: :try olmadan :catch"
@@ -6632,16 +7039,16 @@ msgid "E607: multiple :finally"
 msgstr "E607: Birden fazla :finally"
 
 msgid "E600: Missing :endtry"
-msgstr "E600: Eksik :endtry"
+msgstr "E600: :endtry eksik"
 
 msgid "E602: :endtry without :try"
 msgstr "E602: :try olmadan :endtry"
 
 msgid "E170: Missing :endwhile"
-msgstr "E170: Eksik :endwhile"
+msgstr "E170: :endwhile eksik"
 
 msgid "E170: Missing :endfor"
-msgstr "E170: Eksik :endfor"
+msgstr "E170: :endfor eksik"
 
 msgid "E588: :endwhile without :while"
 msgstr "E588: :while olmadan :endwhile"
@@ -6743,16 +7150,16 @@ msgid "E477: No ! allowed"
 msgstr "E477: ! imine izin verilmiyor"
 
 msgid "E25: GUI cannot be used: Not enabled at compile time"
-msgstr "E25: Grafik arabirim kullanılamıyor: Derlenirken etkinleştirilmemiş"
+msgstr "E25: Grafik arabirim kullanılamaz: Derlenirken etkinleştirilmemiş"
 
 msgid "E26: Hebrew cannot be used: Not enabled at compile time\n"
-msgstr "E26: İbranca kullanılamıyor: Derlenirken etkinleştirilmemiş\n"
+msgstr "E26: İbranca kullanılamaz: Derlenirken etkinleştirilmemiş\n"
 
 msgid "E27: Farsi support has been removed\n"
 msgstr "E27: Farsça desteği kaldırıldı\n"
 
 msgid "E800: Arabic cannot be used: Not enabled at compile time\n"
-msgstr "E800: Arapça kullanılamıyor: Derlenirken etkinleştirilmemiş\n"
+msgstr "E800: Arapça kullanılamaz: Derlenirken etkinleştirilmemiş\n"
 
 #, c-format
 msgid "E28: No such highlight group name: %s"
@@ -6878,7 +7285,7 @@ msgid "E928: String required"
 msgstr "E928: Dizi gerekiyor"
 
 msgid "E713: Cannot use empty key for Dictionary"
-msgstr "E713: Sözlük için boş anahtar kullanılamıyor"
+msgstr "E713: Sözlük için boş anahtar kullanılamaz"
 
 msgid "E715: Dictionary required"
 msgstr "E715: Sözlük gerekiyor"
@@ -7027,14 +7434,14 @@ msgstr "E81: <SID> bir betik bağlamında kullanılmıyor"
 
 #, c-format
 msgid "E107: Missing parentheses: %s"
-msgstr "E107: Eksik ayraç: %s"
+msgstr "E107: Ayraç eksik: %s"
 
 msgid "E110: Missing ')'"
 msgstr "E110: ')' eksik"
 
 #, c-format
 msgid "E720: Missing colon in Dictionary: %s"
-msgstr "E720: Sözlükte eksik iki nokta: %s"
+msgstr "E720: Sözlükte iki nokta eksik: %s"
 
 #, c-format
 msgid "E721: Duplicate key in Dictionary: \"%s\""
@@ -7042,11 +7449,11 @@ msgstr "E721: Sözlükte yinelenmiş anahtar: \"%s\""
 
 #, c-format
 msgid "E722: Missing comma in Dictionary: %s"
-msgstr "E722: Sözlükte eksik virgül: %s"
+msgstr "E722: Sözlükte virgül eksik: %s"
 
 #, c-format
 msgid "E723: Missing end of Dictionary '}': %s"
-msgstr "E723: '}' sözlük sonu eksik: %s"
+msgstr "E723: Sözlük sonu '}' eksik: %s"
 
 msgid "E449: Invalid expression received"
 msgstr "E449: Geçersiz ifade alındı"
@@ -7114,7 +7521,7 @@ msgid "E117: Unknown function: %s"
 msgstr "E117: Bilinmeyen işlev: %s"
 
 msgid "E111: Missing ']'"
-msgstr "E111: Eksik ']'"
+msgstr "E111: ']' eksik"
 
 msgid "E581: :else without :if"
 msgstr "E581: :if olmadan :else"
@@ -7470,3 +7877,31 @@ msgstr "Metin;düzenleyici;"
 
 msgid "Vim"
 msgstr "Vim"
+
+msgid ""
+"\" Each \"set\" line shows the current value of an option (on the left)."
+msgstr ""
+"\" Her \"set\" satırı bir seçeneğin geçerli değerini gösterir (solda)."
+
+msgid "\" Hit <Enter> on a \"set\" line to execute it."
+msgstr "\" Değiştirmek için bir \"set\" satırında <Enter>'a basın."
+
+msgid "\"            A boolean option will be toggled."
+msgstr "\"   Bir Boole değeri işletilecektir."
+
+msgid ""
+"\"            For other options you can edit the value before hitting "
+"<Enter>."
+msgstr ""
+"\"   Diğer seçenekler için <Enter>'a basmadan önce değeri düzenleyebilirsiniz."
+
+msgid "\" Hit <Enter> on a help line to open a help window on this option."
+msgstr "\" Bir seçeneğin yardım penceresini açmak için bir yardım satırının "
+"üzerinde <Enter>'a basın."
+
+msgid "\" Hit <Enter> on an index line to jump there."
+msgstr "\" Bir seçeneğe atlamak için indeks satırının üzerinde <Enter>'a basın."
+
+msgid "\" Hit <Space> on a \"set\" line to refresh it."
+msgstr ""
+"\" Bir seçeneği yenilemek için bir \"set\" satırının üzerinde <Boşluk>'a basın."