Update runtime files
diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt
index aba0f00..ce9cbdf 100644
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -1,4 +1,4 @@
-*vim9.txt* For Vim version 9.0. Last change: 2022 Jun 25
+*vim9.txt* For Vim version 9.0. Last change: 2022 Sep 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1311,7 +1311,7 @@
The "inloop" variable will exist only once, all closures put in the list refer
to the same instance, which in the end will have the value 4. This is
efficient, also when looping many times. If you do want a separate context
-for each closure call a function to define it: >
+for each closure, call a function to define it: >
def GetClosure(i: number): func
var infunc = i
return () => infunc
@@ -1327,6 +1327,30 @@
In some situations, especially when calling a Vim9 closure from legacy
context, the evaluation will fail. *E1248*
+Note that at the script level the loop variable will be invalid after the
+loop, also when used in a closure that is called later, e.g. with a timer.
+This will generate error |E1302|: >
+ for n in range(4)
+ timer_start(500 * n, (_) => {
+ echowin n
+ })
+ endfor
+
+You need to create a closure to store the current value of "n", so that it is
+evaluated at the time the closure is created: >
+ def GetClosure(nr: number): func
+ return (_) => {
+ echowindow nr
+ }
+ enddef
+
+ for n in range(4)
+ timer_start(500 * n, GetClosure(n))
+ endfor
+
+Using `echowindow` is useful in a timer, the messages go into a popup and will
+not interfere with what the user is doing when it triggers.
+
Converting a function from legacy to Vim9 ~
*convert_legacy_function_to_vim9*
@@ -1618,7 +1642,7 @@
*E1211* *E1217* *E1218* *E1219* *E1220* *E1221*
*E1222* *E1223* *E1224* *E1225* *E1226* *E1227*
*E1228* *E1238* *E1250* *E1251* *E1252* *E1253*
- *E1256* *E1297* *E1298*
+ *E1256* *E1297* *E1298* *E1301*
Types are checked for most builtin functions to make it easier to spot
mistakes.