summaryrefslogtreecommitdiff
path: root/runtime/doc
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/doc')
-rw-r--r--runtime/doc/builtin.txt4
-rw-r--r--runtime/doc/intro.txt5
-rw-r--r--runtime/doc/map.txt12
-rw-r--r--runtime/doc/options.txt2
-rw-r--r--runtime/doc/tags2
-rw-r--r--runtime/doc/term.txt11
-rw-r--r--runtime/doc/todo.txt11
-rw-r--r--runtime/doc/vim9.txt85
8 files changed, 92 insertions, 40 deletions
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index c93da54c2..dc68def41 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -2872,6 +2872,10 @@ fnamemodify({fname}, {mods}) *fnamemodify()*
/home/user/vim/vim/src
< If {mods} is empty or an unsupported modifier is used then
{fname} is returned.
+ When {fname} is empty then with {mods} ":h" returns ".", so
+ that `:cd` can be used with it. This is different from
+ expand('%:h') without a buffer name, which returns an empty
+ string.
Note: Environment variables don't work in {fname}, use
|expand()| first then.
diff --git a/runtime/doc/intro.txt b/runtime/doc/intro.txt
index 2ac98b1fa..6904091b4 100644
--- a/runtime/doc/intro.txt
+++ b/runtime/doc/intro.txt
@@ -697,7 +697,8 @@ Q Switch to "Ex" mode. This is a bit like typing ":"
line-input editing commands (<Del> or <BS> to erase,
CTRL-U to kill the whole line).
Vim will enter this mode by default if it's invoked as
- "ex" on the command-line.
+ "ex" on the command-line or the |-e| command line
+ argument was used.
Use the ":vi" command |:visual| to exit "Ex" mode.
Note: In older versions of Vim "Q" formatted text,
that is now done with |gq|. But if you use the
@@ -708,7 +709,7 @@ Q Switch to "Ex" mode. This is a bit like typing ":"
gQ Switch to "Ex" mode like with "Q", but really behave
like typing ":" commands after another. All command
line editing, completion etc. is available.
- Use the ":vi" command |:visual| to exit "Ex" mode.
+ Use the `:vi` command (`:visual`) to exit "Ex" mode.
==============================================================================
7. The window contents *window-contents*
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index 5efc5076f..e4332b8d4 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -374,15 +374,17 @@ command: it is executed as if an (unrestricted) |autocommand| was invoked.
<ScriptCmd> is like <Cmd> but sets the context to the script the mapping was
defined in, for the duration of the command execution. This is especially
useful for |Vim9| script. It also works to access an import, which is useful
-in a plugin using an autoload script: >
+in a plugin using a, possibly autoloaded, script: >
vim9script
import autoload 'implementation.vim' as impl
nnoremap <F4> <ScriptCmd>impl.DoTheWork()<CR>
-
+<
No matter where <F4> is typed, the "impl" import will be found in the script
-context of where the mapping was defined. And since it's an autoload import,
-the "implementation.vim" script will only be loaded once <F4> is typed, not
-when the mapping is defined.
+context of where the mapping was defined. When it's an autoload import, as in
+the example, the "implementation.vim" script will only be loaded once <F4> is
+typed, not when the mapping is defined.
+
+Without <ScriptCmd> using "s:impl" would result in "E121: Undefined variable".
Note:
- Because <Cmd> and <ScriptCmd> avoid mode-changes it does not trigger
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index cef9bd550..cd9d7bd80 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1677,7 +1677,7 @@ A jump table for the options with a short description can be found at |Q_op|.
feature is included}
This option is a list of comma-separated names.
Note: if one of the items is "exclude:", then you can't add an item
- after that. Therefore do append an item with += but use ^= to
+ after that. Therefore do not append an item with += but use ^= to
prepend, e.g.: >
set clipboard^=unnamed
< These names are recognized:
diff --git a/runtime/doc/tags b/runtime/doc/tags
index c08a834de..ad35a7122 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -7881,6 +7881,7 @@ if_sniff.txt if_sniff.txt /*if_sniff.txt*
if_tcl.txt if_tcl.txt /*if_tcl.txt*
ignore-errors eval.txt /*ignore-errors*
ignore-timestamp editing.txt /*ignore-timestamp*
+import-legacy vim9.txt /*import-legacy*
improved-autocmds-5.4 version5.txt /*improved-autocmds-5.4*
improved-quickfix version5.txt /*improved-quickfix*
improved-sessions version5.txt /*improved-sessions*
@@ -8070,6 +8071,7 @@ lcs-space options.txt /*lcs-space*
lcs-tab options.txt /*lcs-tab*
lcs-trail options.txt /*lcs-trail*
left-right-motions motion.txt /*left-right-motions*
+legacy-import vim9.txt /*legacy-import*
len() builtin.txt /*len()*
less various.txt /*less*
letter print.txt /*letter*
diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt
index c4199c2db..35cc02bda 100644
--- a/runtime/doc/term.txt
+++ b/runtime/doc/term.txt
@@ -633,10 +633,13 @@ When the GUI is running 't_Co' is set to 16777216.
*termcap-cursor-shape* *termcap-cursor-color*
When Vim enters Insert mode the 't_SI' escape sequence is sent. When Vim
enters Replace mode the 't_SR' escape sequence is sent if it is set, otherwise
-'t_SI' is sent. When leaving Insert mode or Replace mode 't_EI' is used. This
-can be used to change the shape or color of the cursor in Insert or Replace
-mode. These are not standard termcap/terminfo entries, you need to set them
-yourself.
+'t_SI' is sent. When leaving Insert mode or Replace mode 't_EI' is used.
+Note: When 't_EI' is not set then 't_SI' and 't_SR' will not be sent. And
+when 't_SI' or 't_SR' is not set then 't_EI' is sent only once.
+
+This can be used to change the shape or color of the cursor in Insert or
+Replace mode. These are not standard termcap/terminfo entries, you need to set
+them yourself.
Example for an xterm, this changes the color of the cursor: >
if &term =~ "xterm"
let &t_SI = "\<Esc>]12;purple\x7"
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 736340ac4..33bf84475 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -68,6 +68,12 @@ Further Vim9 improvements, possibly after launch:
- Implement as part of an expression: ++expr, --expr, expr++, expr--.
Update list of features to vote on:
+- Remove Athena item (won't happen)
+- Remove "add open mode" (won't happen)
+- Remove "editing of a hidden buffer" (done)
+- Change "add IDE features" to "improve terminal debugger"
+- Change "diff/merge capability for CVS" to "CVS and git"
+- Remove "pre-compile them" from "improve the performance of Vim scripts"
- multiple cursors
- built-in LSP support
- virtual text, using text properties
@@ -117,8 +123,6 @@ Text properties:
if the priority is above a certain value? (#7392)
Combining text property with 'cursorline' does not always work (Billie
Cleek, #5533)
-- "C" works OK. "dd" fails to delete text property in a buffer with a single
- line.
- Add text property that shifts text to make room for annotation (e.g.
variable type). Like the opposite of conceal. Requires fixing the cursor
positioning and mouse clicks as with conceal mode.
@@ -200,9 +204,6 @@ Terminal emulator window:
Patches considered for including:
- Add "-n" option to xxd. #10599 needs a test
- allow for nesting of timeout, sketch in #10595
-- Patch to implement the vimtutor with a plugin: #6414
- Was originally written by Felipe Morales.
-- Patch to make fillchars global-local. (#5206)
Autoconf: must use autoconf 2.69, later version generates lots of warnings
- try using autoconf 2.71 and fix all "obsolete" warnings
diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt
index 852cdb9e1..4b54f18f9 100644
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -145,6 +145,17 @@ Do not start a comment with #{, it looks like the legacy dictionary literal
and produces an error where this might be confusing. #{{ or #{{{ are OK,
these can be used to start a fold.
+When starting to read a script file Vim doesn't know it is |Vim9| script until
+the `vim9script` command is found. Until that point you would need to use
+legacy comments: >
+ " legacy comment
+ vim9script
+ # Vim9 comment
+
+That looks ugly, better put `vim9script` in the very first line: >
+ vim9script
+ # Vim9 comment
+
In legacy Vim script # is also used for the alternate file name. In Vim9
script you need to use %% instead. Instead of ## use %%% (stands for all
arguments).
@@ -1687,21 +1698,34 @@ be exported. {not implemented yet: class, interface}
Import ~
*:import* *:imp* *E1094* *E1047* *E1262*
*E1048* *E1049* *E1053* *E1071* *E1236*
-The exported items can be imported in another Vim9 script: >
+The exported items can be imported in another script. The import syntax has
+two forms. The simple form: >
+ import {filename}
+<
+Where {filename} is an expression that must evaluate to a string. In this
+form the filename should end in ".vim" and the portion before ".vim" will
+become the script local name of the namespace. For example: >
import "myscript.vim"
-
-This makes each item available as "myscript.item".
+<
+This makes each exported item in "myscript.vim" available as "myscript.item".
*:import-as* *E1257* *E1261*
-In case the name is long or ambiguous, another name can be specified: >
- import "thatscript.vim" as that
+In case the name is long or ambiguous, this form can be used to specify
+another name: >
+ import {longfilename} as {name}
+<
+In this form {name} becomes a specific script local name for the imported
+namespace. Therefore {name} must consist of letters, digits and '_', like
+|internal-variables|. The {longfilename} expression must evaluate to any
+filename. For example: >
+ import "thatscript.vim.v2" as that
< *E1060* *E1258* *E1259* *E1260*
-Then you can use "that.EXPORTED_CONST", "that.someValue", etc. You are free
-to choose the name "that". Use something that will be recognized as referring
-to the imported script. Avoid command names, command modifiers and builtin
-function names, because the name will shadow them.
-If the name starts with a capital letter it can also shadow global user
-commands and functions. Also, you cannot use the name for something else in
-the script, such as a function or variable name.
+Then you can use "that.item", etc. You are free to choose the name "that".
+Use something that will be recognized as referring to the imported script.
+Avoid command names, command modifiers and builtin function names, because the
+name will shadow them. Better not start the name starts with a capital
+letter, since it can then also shadow global user commands and functions.
+Also, you cannot use the name for something else in the script, such as a
+function or variable name.
In case the dot in the name is undesired, a local reference can be made for a
function: >
@@ -1714,15 +1738,6 @@ This does not work for variables, since the value would be copied once and
when changing the variable the copy will change, not the original variable.
You will need to use the full name, with the dot.
-The full syntax of the command is:
- import {filename} [as {name}]
-Where {filename} is an expression that must evaluate to a string. Without the
-"as {name}" part it must end in ".vim". {name} must consist of letters,
-digits and '_', like |internal-variables|.
-
-`:import` can also be used in legacy Vim script. The imported items still
-become script-local, even when the "s:" prefix is not given.
-
`:import` can not be used in a function. Imported items are intended to exist
at the script level and only imported once.
@@ -1752,14 +1767,38 @@ line, there can be no line break: >
echo that
.name # Error!
-To refer to a function in an imported script in a mapping, |<SID>| can be
-used: >
+When you've imported a function from one script into a vim9 script you can
+refer to the imported function in a mapping by prefixing it with |<SID>|: >
noremap <silent> ,a :call <SID>name.Function()<CR>
When the mapping is defined "<SID>name." will be replaced with <SNR> and the
script ID of the imported script.
An even simpler solution is using |<ScriptCmd>|: >
noremap ,a <ScriptCmd>name.Function()<CR>
+
+Note that this does not work for variables, only for functions.
+
+ *import-legacy* *legacy-import*
+`:import` can also be used in legacy Vim script. The imported namespace still
+becomes script-local, even when the "s:" prefix is not given. For example: >
+ import "myfile.vim"
+ call s:myfile.MyFunc()
+
+And using the "as name" form: >
+ import "otherfile.vim9script" as that
+ call s:that.OtherFunc()
+
+However, the namespace cannot be resolved on it's own: >
+ import "that.vim"
+ echo s:that
+ " ERROR: E1060: Expected dot after name: s:that
+<
+This also affects the use of |<SID>| in the legacy mapping context. Since
+|<SID>| is only a valid prefix for a function and NOT for a namespace, you
+cannot use it
+to scope a function in a script local namespace. Instead of prefixing the
+function with |<SID>| you should use|<ScriptCmd>|. For example: >
+ noremap ,a <ScriptCmd>:call s:that.OtherFunc()<CR>
<
*:import-cycle*
The `import` commands are executed when encountered. If script A imports