diff runtime/doc/vim9.txt @ 21499:3a1ed539ae2a

Update runtime files. Commit: https://github.com/vim/vim/commit/2547aa930b59f5e2bcb70e81d5a57ed461e59b4f Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jul 26 17:00:44 2020 +0200 Update runtime files.
author Bram Moolenaar <Bram@vim.org>
date Sun, 26 Jul 2020 17:15:05 +0200
parents fb8c8fcb7b60
children c7b2ce90c2de
line wrap: on
line diff
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -1,4 +1,4 @@
-*vim9.txt*	For Vim version 8.2.  Last change: 2020 Jul 17
+*vim9.txt*	For Vim version 8.2.  Last change: 2020 Jul 25
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -184,8 +184,9 @@ To intentionally avoid a variable being 
 	echo temp  " Error!
 
 An existing variable cannot be assigned to with `:let`, since that implies a
-declaration.  An exception is global variables: these can be both used with
-and without `:let`, because there is no rule about where they are declared.
+declaration.  Global, window, tab, buffer and Vim variables can only be used
+without `:let`, because they are are not really declared, they can also be
+deleted with `:unlet`.
 
 Variables cannot shadow previously defined variables.
 Variables may shadow Ex commands, rename the variable if needed.
@@ -194,12 +195,19 @@ Global variables and user defined functi
 at the script level. >
 	vim9script
 	let script_local = 'text'
-	let g:global = 'value'
+	g:global = 'value'
 	let Funcref = g:ThatFunction
 
 Since "&opt = value" is now assigning a value to option "opt", ":&" cannot be
 used to repeat a `:substitute` command.
 
+							*E1092*
+Declaring more than one variable at a time, using the unpack notation, is
+currently not supported: >
+	let [v1, v2] = GetValues()  # Error!
+That is because the type needs to be inferred from the list item type, which
+isn't that easy.
+
 
 Omitting :call and :eval ~
 
@@ -209,15 +217,15 @@ Using `:call` is still possible, but thi
 
 A method call without `eval` is possible, so long as the start is an
 identifier or can't be an Ex command.  It does NOT work for string constants: >
-	myList->add(123)		" works
-	g:myList->add(123)		" works
-	[1, 2, 3]->Process()		" works
-	#{a: 1, b: 2}->Process()	" works
-	{'a': 1, 'b': 2}->Process()	" works
-	"foobar"->Process()		" does NOT work
-	("foobar")->Process()		" works
-	'foobar'->Process()		" does NOT work
-	('foobar')->Process()		" works
+	myList->add(123)		# works
+	g:myList->add(123)		# works
+	[1, 2, 3]->Process()		# works
+	#{a: 1, b: 2}->Process()	# works
+	{'a': 1, 'b': 2}->Process()	# works
+	"foobar"->Process()		# does NOT work
+	("foobar")->Process()		# works
+	'foobar'->Process()		# does NOT work
+	('foobar')->Process()		# works
 
 In case there is ambiguity between a function name and an Ex command, use ":"
 to make clear you want to use the Ex command.  For example, there is both the
@@ -277,10 +285,14 @@ possible just before or after the operat
 			? PosFunc(arg)
 			: NegFunc(arg)
 
+For a method call using "->" and a member using a dot, a line break is allowed
+before it: >
 	let result = GetBuilder()
 			->BuilderSetWidth(333)
 			->BuilderSetHeight(777)
 			->BuilderBuild()
+	let result = MyDict
+			.member
 
 <							*E1050*
 To make it possible for the operator at the start of the line to be
@@ -486,19 +498,20 @@ THIS IS STILL UNDER DEVELOPMENT - ANYTHI
 			When the caller omits an argument the {value} is used.
 
 			The function will be compiled into instructions when
-			called, or when `:defcompile` is used.  Syntax and
-			type errors will be produced at that time.
+			called, or when `:disassemble` or `:defcompile` is
+			used.  Syntax and type errors will be produced at that
+			time.
 
-			NOTE: It is possible to nest `:def` inside another
-			`:def`, but it is not possible to nest `:def` inside
-			`:function`, for backwards compatibility.
+			It is possible to nest `:def` inside another `:def` or
+			`:function` up to about 50 levels deep.
 
 			[!] is used as with `:function`.  Note that in Vim9
 			script script-local functions cannot be deleted or
 			redefined later in the same script.
 
 							*:enddef*
-:enddef			End of a function defined with `:def`.
+:enddef			End of a function defined with `:def`. It should be on
+			a line by its own.
 
 
 If the script the function is defined in is Vim9 script, then script-local
@@ -559,7 +572,7 @@ Not supported yet:
 	tuple<a: {type}, b: {type}, ...>
 
 These types can be used in declarations, but no value will have this type:
-	{type}|{type}
+	{type}|{type}  {not implemented yet}
 	void
 	any
 
@@ -661,19 +674,15 @@ The original value of 'cpoptions' is res
 
 Export ~
 							*:export* *:exp*
-Exporting one item can be written as: >
+Exporting an item can be written as: >
 	export const EXPORTED_CONST = 1234
 	export let someValue = ...
 	export def MyFunc() ...
 	export class MyClass ...
 
 As this suggests, only constants, variables, `:def` functions and classes can
-be exported.
+be exported. {classes are not implemented yet}
 
-Alternatively, an export statement can be used to export several already
-defined (otherwise script-local) items: >
-	export {EXPORTED_CONST, someValue, MyFunc, MyClass}
-<
 							*E1042*
 `:export` can only be used in Vim9 script, at the script level.