-*os_win32.txt* For Vim version 8.2. Last change: 2022 Feb 14
+*os_win32.txt* For Vim version 8.2. Last change: 2022 May 22
VIM REFERENCE MANUAL by George Reilly
For compiling see "src/INSTALLpc.txt". *win32-compiling*
+ *WSL*
+When using Vim on WSL (Windows Subsystem for Linux) the remarks here do not
+apply, `has('win32')` will return false then. In case you need to know
+whether Vim is running on WSL you can use `exists('$WSLENV')`.
+
==============================================================================
1. Known problems *win32-problems*
-*todo.txt* For Vim version 8.2. Last change: 2022 May 21
+*todo.txt* For Vim version 8.2. Last change: 2022 May 22
VIM REFERENCE MANUAL by Bram Moolenaar
*known-bugs*
-------------------- Known bugs and current work -----------------------
-Make :defcompile accept a function argument, like :disassemble
-Useful for global functions.
-
-Once Vim9 is stable:
+Prepare for Vim 9.0 release:
- Use Vim9 for more runtime files.
-- Check code coverage, add more tests if needed.
+- Check Vim9 code coverage, add more tests if needed.
vim9instr.c
vim9script.c
vim9type.c
-- Inlude new set of colors: #9795
- Adjust intro message to say "help version9".
-Graduate FEAT_CINDENT and FEAT_SMARTINDENT ?
-
Update the user manual:
- Update usr_41.txt for Vim9 script
- Fill usr_50.txt as an "advanced section" of usr_41.txt
-*usr_52.txt* For Vim version 8.2. Last change: 2022 May 16
+*usr_52.txt* For Vim version 8.2. Last change: 2022 May 21
VIM USER MANUAL - by Bram Moolenaar
Legacy Vim script only checks types at runtime, when the code is executed.
And it's permissive, often a computation gives an unexpected value instead of
reporting an error. Thus you can define a function and think it's fine, but
-see a problem only later when it is called: >
- let s:collected = ''
- func ExtendAndReturn(add)
- let s:collected += a:add
- return s:collected
+notice a problem only later when the function is called: >
+ func Concatenate(base, add)
+ return a:base + a:add
endfunc
Can you spot the error? Try this: >
- echo ExtendAndReturn('text')
-And you'll see zero. Why? Because in legacy Vim script "+=" will convert the
-arguments to numbers, and any string without a number results in zero!
-
-With `:def` the type checking happens when compiling the function. For that
-you need to specify the argument types and the return type. Also notice that
-the argument is used without the "a:" prefix: >
- let s:collected = ''
- def ExtendAndReturn(add: string): string
- s:collected += add
- return s:collected
+ echo Concatenate('base', 'text')
+And you'll see zero. Why? Because in legacy Vim script "+" will convert the
+arguments to numbers, and any string without a number results in zero! That's
+not what you expected.
+
+With `:def` the type checking happens when compiling the function. You need
+to specify the argument types and the return type to make that possible. Also
+notice that the argument names are used without the "a:" prefix: >
+ def Concatenate(base: string, add: string): string
+ return base + add
enddef
- disassemble ExtendAndReturn
+ defcompile Concatenate
-Here we use `:disassemble` to do the compilation right away, without it the
-compilation would happen when the function is called. Vim will tell you what
-you did wrong: >
+Here we use `:defcompile` to do the compilation right away, without it the
+compilation would happen when the function is first called. Vim will tell you
+what you did wrong: >
E1051: Wrong argument type for +
-Side note: here the context is legacy script, when using Vim9 script you would
-put `:defcompile` at the end of the script to check for errors in the
-functions defined in it.
+Side note: here the context is legacy script. When using Vim9 script you
+would put `:defcompile` at the end of the script to check for errors in all
+the functions defined in it.
Vim9 script is strict, it uses the "+" operator only for numbers and floats.
For string concatenation ".." must be used. This avoids mistakes and avoids