mirror of
https://github.com/neovim/neovim.git
synced 2025-09-27 05:28:33 +00:00
docs: misc, dev-api-fast, $XDG_STATE_HOME #35138
This commit is contained in:
@@ -53,6 +53,27 @@ Other references:
|
|||||||
- https://github.com/neovim/neovim/pull/21605
|
- https://github.com/neovim/neovim/pull/21605
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
API
|
||||||
|
|
||||||
|
*dev-api-fast*
|
||||||
|
API functions and Vimscript "eval" functions may be marked as |api-fast| which
|
||||||
|
means they are safe to call in Lua callbacks and other scenarios. A functions
|
||||||
|
CANNOT be marked as "fast" if could trigger `os_breakcheck()`, which may
|
||||||
|
"yield" the current execution and start a new execution of code not expecting
|
||||||
|
this:
|
||||||
|
- accidentally recursing into a function not expecting this.
|
||||||
|
- changing (global) state without restoring it before returning to the
|
||||||
|
"yielded" callsite.
|
||||||
|
|
||||||
|
In practice, this means any code that could trigger `os_breakcheck()` cannot
|
||||||
|
be "fast". For example, commit 3940c435e405 fixed such a bug with
|
||||||
|
`nvim__get_runtime` by explicitly disallowing `os_breakcheck()` via the
|
||||||
|
`EW_NOBREAK` flag.
|
||||||
|
|
||||||
|
Common examples of non-fast code: regexp matching, wildcard expansion,
|
||||||
|
expression evaluation.
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
|
|
||||||
|
@@ -313,6 +313,7 @@ UI
|
|||||||
• "Error detected while processing:" changed to "Error in:".
|
• "Error detected while processing:" changed to "Error in:".
|
||||||
• "Error executing Lua:" changed to "Lua:".
|
• "Error executing Lua:" changed to "Lua:".
|
||||||
• 'busy' status is shown in default statusline with symbol ◐
|
• 'busy' status is shown in default statusline with symbol ◐
|
||||||
|
• Improved LSP signature help rendering.
|
||||||
|
|
||||||
VIMSCRIPT
|
VIMSCRIPT
|
||||||
|
|
||||||
|
@@ -63,7 +63,9 @@ Transitioning from Vim *nvim-from-vim*
|
|||||||
let &packpath = &runtimepath
|
let &packpath = &runtimepath
|
||||||
source ~/.vimrc
|
source ~/.vimrc
|
||||||
|
|
||||||
3. Restart Nvim, your existing Vim config will be loaded.
|
3. Restart Nvim, your existing Vim config will be loaded. >vim
|
||||||
|
|
||||||
|
:restart
|
||||||
|
|
||||||
See |provider-python| and |provider-clipboard| for additional software you
|
See |provider-python| and |provider-clipboard| for additional software you
|
||||||
might need to use some features.
|
might need to use some features.
|
||||||
|
@@ -5140,12 +5140,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
|||||||
but are not part of the Nvim distribution. XDG_DATA_DIRS defaults
|
but are not part of the Nvim distribution. XDG_DATA_DIRS defaults
|
||||||
to /usr/local/share/:/usr/share/, so system administrators are
|
to /usr/local/share/:/usr/share/, so system administrators are
|
||||||
expected to install site plugins to /usr/share/nvim/site.
|
expected to install site plugins to /usr/share/nvim/site.
|
||||||
5. Session state directory, for state data such as swap, backupdir,
|
5. $VIMRUNTIME, for files distributed with Nvim.
|
||||||
viewdir, undodir, etc.
|
|
||||||
Given by `stdpath("state")`. |$XDG_STATE_HOME|
|
|
||||||
6. $VIMRUNTIME, for files distributed with Nvim.
|
|
||||||
*after-directory*
|
*after-directory*
|
||||||
7, 8, 9, 10. In after/ subdirectories of 1, 2, 3 and 4, with reverse
|
6, 7, 8, 9. In after/ subdirectories of 1, 2, 3 and 4, with reverse
|
||||||
ordering. This is for preferences to overrule or add to the
|
ordering. This is for preferences to overrule or add to the
|
||||||
distributed defaults or system-wide settings (rarely needed).
|
distributed defaults or system-wide settings (rarely needed).
|
||||||
|
|
||||||
|
@@ -291,7 +291,7 @@ GETTING A GLOBAL PLUGIN
|
|||||||
|
|
||||||
Where can you find plugins?
|
Where can you find plugins?
|
||||||
- Some are always loaded, you can see them in the directory $VIMRUNTIME/plugin.
|
- Some are always loaded, you can see them in the directory $VIMRUNTIME/plugin.
|
||||||
- Some come with Vim. You can find them in the directory $VIMRUNTIME/macros
|
- Some come with Vim. You can find them in the directory $VIMRUNTIME/scripts
|
||||||
and its sub-directories and under $VIM/vimfiles/pack/dist/opt/.
|
and its sub-directories and under $VIM/vimfiles/pack/dist/opt/.
|
||||||
- Download from the net. There is a large collection on https://www.vim.org.
|
- Download from the net. There is a large collection on https://www.vim.org.
|
||||||
- They are sometimes posted in a Vim maillist.
|
- They are sometimes posted in a Vim maillist.
|
||||||
@@ -338,8 +338,8 @@ GETTING A FILETYPE PLUGIN
|
|||||||
|
|
||||||
You can find them in the same places as the global plugins. Watch out if the
|
You can find them in the same places as the global plugins. Watch out if the
|
||||||
type of file is mentioned, then you know if the plugin is a global or a
|
type of file is mentioned, then you know if the plugin is a global or a
|
||||||
filetype one. The scripts in $VIMRUNTIME/macros are global ones, the filetype
|
filetype one. The scripts in $VIMRUNTIME/scripts are global ones, the
|
||||||
plugins are in $VIMRUNTIME/ftplugin.
|
filetype plugins are in $VIMRUNTIME/ftplugin.
|
||||||
|
|
||||||
|
|
||||||
USING A FILETYPE PLUGIN *ftplugin-name*
|
USING A FILETYPE PLUGIN *ftplugin-name*
|
||||||
|
@@ -217,9 +217,9 @@ An alternative is to filter the text through an external program. Example: >
|
|||||||
Indents can be used to make text stand out from the rest. The example texts
|
Indents can be used to make text stand out from the rest. The example texts
|
||||||
in this manual, for example, are indented by eight columns. You would
|
in this manual, for example, are indented by eight columns. You would
|
||||||
normally enter this by typing <Tab> at the start of each line. Take this
|
normally enter this by typing <Tab> at the start of each line. Take this
|
||||||
text:
|
text: >
|
||||||
the first line ~
|
the first line
|
||||||
the second line ~
|
the second line
|
||||||
|
|
||||||
This is entered by typing <Tab>, some text, <Enter>, <Tab> and more text.
|
This is entered by typing <Tab>, some text, <Enter>, <Tab> and more text.
|
||||||
The 'autoindent' option inserts indents automatically: >
|
The 'autoindent' option inserts indents automatically: >
|
||||||
|
@@ -10382,8 +10382,8 @@ stdpath({what}) *stdpath()* *E610
|
|||||||
log String Logs directory (for use by plugins too).
|
log String Logs directory (for use by plugins too).
|
||||||
run String Run directory: temporary, local storage
|
run String Run directory: temporary, local storage
|
||||||
for sockets, named pipes, etc.
|
for sockets, named pipes, etc.
|
||||||
state String Session state directory: storage for file
|
state String Session state: storage for backupdir,
|
||||||
drafts, swap, undo, |shada|.
|
file drafts, |shada|, swap, undo, 'viewdir'.
|
||||||
|
|
||||||
Example: >vim
|
Example: >vim
|
||||||
echo stdpath("config")
|
echo stdpath("config")
|
||||||
|
7
runtime/lua/vim/_meta/options.lua
generated
7
runtime/lua/vim/_meta/options.lua
generated
@@ -5383,12 +5383,9 @@ vim.go.ruf = vim.go.rulerformat
|
|||||||
--- but are not part of the Nvim distribution. XDG_DATA_DIRS defaults
|
--- but are not part of the Nvim distribution. XDG_DATA_DIRS defaults
|
||||||
--- to /usr/local/share/:/usr/share/, so system administrators are
|
--- to /usr/local/share/:/usr/share/, so system administrators are
|
||||||
--- expected to install site plugins to /usr/share/nvim/site.
|
--- expected to install site plugins to /usr/share/nvim/site.
|
||||||
--- 5. Session state directory, for state data such as swap, backupdir,
|
--- 5. $VIMRUNTIME, for files distributed with Nvim.
|
||||||
--- viewdir, undodir, etc.
|
|
||||||
--- Given by `stdpath("state")`. `$XDG_STATE_HOME`
|
|
||||||
--- 6. $VIMRUNTIME, for files distributed with Nvim.
|
|
||||||
--- *after-directory*
|
--- *after-directory*
|
||||||
--- 7, 8, 9, 10. In after/ subdirectories of 1, 2, 3 and 4, with reverse
|
--- 6, 7, 8, 9. In after/ subdirectories of 1, 2, 3 and 4, with reverse
|
||||||
--- ordering. This is for preferences to overrule or add to the
|
--- ordering. This is for preferences to overrule or add to the
|
||||||
--- distributed defaults or system-wide settings (rarely needed).
|
--- distributed defaults or system-wide settings (rarely needed).
|
||||||
---
|
---
|
||||||
|
4
runtime/lua/vim/_meta/vimfn.lua
generated
4
runtime/lua/vim/_meta/vimfn.lua
generated
@@ -9473,8 +9473,8 @@ function vim.fn.stdioopen(opts) end
|
|||||||
--- log String Logs directory (for use by plugins too).
|
--- log String Logs directory (for use by plugins too).
|
||||||
--- run String Run directory: temporary, local storage
|
--- run String Run directory: temporary, local storage
|
||||||
--- for sockets, named pipes, etc.
|
--- for sockets, named pipes, etc.
|
||||||
--- state String Session state directory: storage for file
|
--- state String Session state: storage for backupdir,
|
||||||
--- drafts, swap, undo, |shada|.
|
--- file drafts, |shada|, swap, undo, 'viewdir'.
|
||||||
---
|
---
|
||||||
--- Example: >vim
|
--- Example: >vim
|
||||||
--- echo stdpath("config")
|
--- echo stdpath("config")
|
||||||
|
@@ -11392,8 +11392,8 @@ M.funcs = {
|
|||||||
log String Logs directory (for use by plugins too).
|
log String Logs directory (for use by plugins too).
|
||||||
run String Run directory: temporary, local storage
|
run String Run directory: temporary, local storage
|
||||||
for sockets, named pipes, etc.
|
for sockets, named pipes, etc.
|
||||||
state String Session state directory: storage for file
|
state String Session state: storage for backupdir,
|
||||||
drafts, swap, undo, |shada|.
|
file drafts, |shada|, swap, undo, 'viewdir'.
|
||||||
|
|
||||||
Example: >vim
|
Example: >vim
|
||||||
echo stdpath("config")
|
echo stdpath("config")
|
||||||
|
@@ -2261,29 +2261,25 @@ int tv_dict_get_tv(dict_T *d, const char *const key, typval_T *rettv)
|
|||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get a number item from a dictionary
|
/// Gets a number item from a dictionary.
|
||||||
///
|
|
||||||
/// Returns 0 if the entry does not exist.
|
|
||||||
///
|
///
|
||||||
/// @param[in] d Dictionary to get item from.
|
/// @param[in] d Dictionary to get item from.
|
||||||
/// @param[in] key Key to find in dictionary.
|
/// @param[in] key Key to find in dictionary.
|
||||||
///
|
///
|
||||||
/// @return Dictionary item.
|
/// @return Number value, or 0 if the item does not exist.
|
||||||
varnumber_T tv_dict_get_number(const dict_T *const d, const char *const key)
|
varnumber_T tv_dict_get_number(const dict_T *const d, const char *const key)
|
||||||
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
|
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
|
||||||
{
|
{
|
||||||
return tv_dict_get_number_def(d, key, 0);
|
return tv_dict_get_number_def(d, key, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get a number item from a dictionary.
|
/// Gets a number item from a dictionary, or a given default value.
|
||||||
///
|
|
||||||
/// Returns "def" if the entry doesn't exist.
|
|
||||||
///
|
///
|
||||||
/// @param[in] d Dictionary to get item from.
|
/// @param[in] d Dictionary to get item from.
|
||||||
/// @param[in] key Key to find in dictionary.
|
/// @param[in] key Key to find in dictionary.
|
||||||
/// @param[in] def Default value.
|
/// @param[in] def Default value.
|
||||||
///
|
///
|
||||||
/// @return Dictionary item.
|
/// @return Number value, or `def` value if the item does not exist.
|
||||||
varnumber_T tv_dict_get_number_def(const dict_T *const d, const char *const key, const int def)
|
varnumber_T tv_dict_get_number_def(const dict_T *const d, const char *const key, const int def)
|
||||||
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
|
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
|
||||||
{
|
{
|
||||||
|
@@ -7088,12 +7088,9 @@ local options = {
|
|||||||
but are not part of the Nvim distribution. XDG_DATA_DIRS defaults
|
but are not part of the Nvim distribution. XDG_DATA_DIRS defaults
|
||||||
to /usr/local/share/:/usr/share/, so system administrators are
|
to /usr/local/share/:/usr/share/, so system administrators are
|
||||||
expected to install site plugins to /usr/share/nvim/site.
|
expected to install site plugins to /usr/share/nvim/site.
|
||||||
5. Session state directory, for state data such as swap, backupdir,
|
5. $VIMRUNTIME, for files distributed with Nvim.
|
||||||
viewdir, undodir, etc.
|
|
||||||
Given by `stdpath("state")`. |$XDG_STATE_HOME|
|
|
||||||
6. $VIMRUNTIME, for files distributed with Nvim.
|
|
||||||
*after-directory*
|
*after-directory*
|
||||||
7, 8, 9, 10. In after/ subdirectories of 1, 2, 3 and 4, with reverse
|
6, 7, 8, 9. In after/ subdirectories of 1, 2, 3 and 4, with reverse
|
||||||
ordering. This is for preferences to overrule or add to the
|
ordering. This is for preferences to overrule or add to the
|
||||||
distributed defaults or system-wide settings (rarely needed).
|
distributed defaults or system-wide settings (rarely needed).
|
||||||
|
|
||||||
|
@@ -2938,7 +2938,7 @@ it("'inccommand' disables preview if preview buffer can't be created #27086", fu
|
|||||||
eq('nosplit', api.nvim_get_option_value('inccommand', {}))
|
eq('nosplit', api.nvim_get_option_value('inccommand', {}))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it(':substitute with inccommand, does not show prompt during preview #11940', function()
|
it("'inccommand' :substitute preview skips input() prompt #11940", function()
|
||||||
clear()
|
clear()
|
||||||
local screen = Screen.new(30, 3)
|
local screen = Screen.new(30, 3)
|
||||||
common_setup(screen, 'split', 'foo')
|
common_setup(screen, 'split', 'foo')
|
||||||
|
@@ -393,7 +393,7 @@ describe("'inccommand' for user commands", function()
|
|||||||
]])
|
]])
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('does not crash on ambiguous command #18825', function()
|
it('no crash on ambiguous command #18825', function()
|
||||||
command('set inccommand=split')
|
command('set inccommand=split')
|
||||||
command('command Reply echo 1')
|
command('command Reply echo 1')
|
||||||
feed(':R')
|
feed(':R')
|
||||||
|
Reference in New Issue
Block a user