mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
docs: misc #24163
- Also delete old perl scripts which are not used since 8+ years ago. fix #23251 fix #27367 ref https://github.com/neovim/neovim/issues/2252#issuecomment-1902662577 Helped-by: Daniel Kongsgaard <dakongsgaard@gmail.com> Co-authored-by: Kevin Pham <keevan.pham@gmail.com>
This commit is contained in:
parent
efaf37a2b9
commit
71cf75f96a
@ -1,7 +1,9 @@
|
|||||||
# CMAKE REFERENCE
|
# CMAKE REFERENCE
|
||||||
# intro: https://codingnest.com/basic-cmake/
|
# - intro: https://codingnest.com/basic-cmake/
|
||||||
# best practices (3.0+): https://gist.github.com/mbinna/c61dbb39bca0e4fb7d1f73b0d66a4fd1
|
# - best practices (3.0+): https://gist.github.com/mbinna/c61dbb39bca0e4fb7d1f73b0d66a4fd1
|
||||||
# pitfalls: https://izzys.casa/2019/02/everything-you-never-wanted-to-know-about-cmake/
|
# - pitfalls: https://izzys.casa/2019/02/everything-you-never-wanted-to-know-about-cmake/
|
||||||
|
# - troubleshooting:
|
||||||
|
# - variable_watch https://cmake.org/cmake/help/latest/command/variable_watch.html
|
||||||
|
|
||||||
# Version should match the tested CMAKE_URL in .github/workflows/build.yml.
|
# Version should match the tested CMAKE_URL in .github/workflows/build.yml.
|
||||||
cmake_minimum_required(VERSION 3.13)
|
cmake_minimum_required(VERSION 3.13)
|
||||||
@ -167,6 +169,7 @@ endif()
|
|||||||
|
|
||||||
option(ENABLE_ASAN_UBSAN "Enable Clang address & undefined behavior sanitizer for nvim binary." OFF)
|
option(ENABLE_ASAN_UBSAN "Enable Clang address & undefined behavior sanitizer for nvim binary." OFF)
|
||||||
option(ENABLE_MSAN "Enable Clang memory sanitizer for nvim binary." OFF)
|
option(ENABLE_MSAN "Enable Clang memory sanitizer for nvim binary." OFF)
|
||||||
|
# TSAN exists to test Luv threads.
|
||||||
option(ENABLE_TSAN "Enable Clang thread sanitizer for nvim binary." OFF)
|
option(ENABLE_TSAN "Enable Clang thread sanitizer for nvim binary." OFF)
|
||||||
|
|
||||||
if((ENABLE_ASAN_UBSAN AND ENABLE_MSAN)
|
if((ENABLE_ASAN_UBSAN AND ENABLE_MSAN)
|
||||||
|
@ -82,28 +82,31 @@ a comment.
|
|||||||
### Commit messages
|
### Commit messages
|
||||||
|
|
||||||
Follow the [conventional commits guidelines][conventional_commits] to *make reviews easier* and to make
|
Follow the [conventional commits guidelines][conventional_commits] to *make reviews easier* and to make
|
||||||
the VCS/git logs more valuable. The general structure of a commit message is:
|
the VCS/git logs more valuable. The structure of a commit message is:
|
||||||
|
|
||||||
```
|
type(scope): subject
|
||||||
<type>([optional scope]): <description>
|
|
||||||
|
|
||||||
[optional body]
|
Problem:
|
||||||
|
...
|
||||||
|
|
||||||
[optional footer(s)]
|
Solution:
|
||||||
```
|
...
|
||||||
|
|
||||||
- Prefix the commit subject with one of these [_types_](https://github.com/commitizen/conventional-commit-types/blob/master/index.json):
|
- Commit message **subject** (you can **ignore this for "fixup" commits** or any commits you expect to be squashed):
|
||||||
- `build`, `ci`, `docs`, `feat`, `fix`, `perf`, `refactor`, `revert`, `test`, `vim-patch`
|
- Prefix with a [_type_](https://github.com/commitizen/conventional-commit-types/blob/master/index.json):
|
||||||
- You can **ignore this for "fixup" commits** or any commits you expect to be squashed.
|
- `build ci docs feat fix perf refactor revert test vim-patch`
|
||||||
- Append optional scope to _type_ such as `(lsp)`, `(treesitter)`, `(float)`, …
|
- Append an optional `(scope)` such as `(lsp)`, `(treesitter)`, `(float)`, …
|
||||||
- _Description_ shouldn't start with a capital letter or end in a period.
|
- Use the _imperative voice_: "Fix bug" rather than "Fixed bug" or "Fixes bug."
|
||||||
- Use the _imperative voice_: "Fix bug" rather than "Fixed bug" or "Fixes bug."
|
- Keep it short (under 72 characters).
|
||||||
- Try to keep the first line under 72 characters.
|
- Commit message **body** (detail):
|
||||||
- A blank line must follow the subject.
|
- Concisely describe the Problem/Solution in the commit **body**. [Describing the problem](https://lamport.azurewebsites.net/pubs/state-the-problem.pdf)
|
||||||
- Breaking API changes must be indicated by
|
_independently of the solution_ often leads to a better understanding for you, reviewers, and future readers.
|
||||||
1. "!" after the type/scope, and
|
```
|
||||||
2. a "BREAKING CHANGE" footer describing the change.
|
Problem:
|
||||||
Example:
|
|
||||||
|
Solution:
|
||||||
|
```
|
||||||
|
- Indicate breaking API changes with "!" after the type, and a "BREAKING CHANGE" footer. Example:
|
||||||
```
|
```
|
||||||
refactor(provider)!: drop support for Python 2
|
refactor(provider)!: drop support for Python 2
|
||||||
|
|
||||||
|
@ -165,12 +165,14 @@ These dependencies are "vendored" (inlined), we must update the sources manually
|
|||||||
* `runtime/lua/coxpcall.lua`: coxpcall (only needed for PUC lua, builtin to luajit)
|
* `runtime/lua/coxpcall.lua`: coxpcall (only needed for PUC lua, builtin to luajit)
|
||||||
* `src/termkey`: [libtermkey](https://github.com/neovim/libtermkey)
|
* `src/termkey`: [libtermkey](https://github.com/neovim/libtermkey)
|
||||||
|
|
||||||
Non-technical dependencies
|
Other dependencies
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
* GitHub users:
|
* GitHub users:
|
||||||
* https://github.com/marvim
|
* https://github.com/marvim
|
||||||
* https://github.com/nvim-winget
|
* https://github.com/nvim-winget
|
||||||
|
* Org secrets/tokens:
|
||||||
|
* `CODECOV_TOKEN`
|
||||||
* Domain names (held in https://namecheap.com):
|
* Domain names (held in https://namecheap.com):
|
||||||
* neovim.org
|
* neovim.org
|
||||||
* neovim.io
|
* neovim.io
|
||||||
|
@ -112,7 +112,11 @@ Basic types ~
|
|||||||
Dictionary (msgpack: map)
|
Dictionary (msgpack: map)
|
||||||
Object
|
Object
|
||||||
<
|
<
|
||||||
Note: empty Array is accepted as a valid argument for Dictionary parameter.
|
Note:
|
||||||
|
- Empty Array is accepted as a valid Dictionary parameter.
|
||||||
|
- Functions cannot cross RPC boundaries. But API functions (e.g.
|
||||||
|
|nvim_create_autocmd()|) may support Lua function parameters for non-RPC
|
||||||
|
invocations.
|
||||||
|
|
||||||
Special types (msgpack EXT) ~
|
Special types (msgpack EXT) ~
|
||||||
|
|
||||||
@ -504,8 +508,9 @@ Extended marks (extmarks) represent buffer annotations that track text changes
|
|||||||
in the buffer. They can represent cursors, folds, misspelled words, anything
|
in the buffer. They can represent cursors, folds, misspelled words, anything
|
||||||
that needs to track a logical location in the buffer over time. |api-indexing|
|
that needs to track a logical location in the buffer over time. |api-indexing|
|
||||||
|
|
||||||
Extmark position works like "bar" cursor: it exists between characters. Thus,
|
Extmark position works like a "vertical bar" cursor: it exists between
|
||||||
the maximum extmark index on a line is 1 more than the character index: >
|
characters. Thus, the maximum extmark index on a line is 1 more than the
|
||||||
|
character index: >
|
||||||
|
|
||||||
f o o b a r line contents
|
f o o b a r line contents
|
||||||
0 1 2 3 4 5 character positions (0-based)
|
0 1 2 3 4 5 character positions (0-based)
|
||||||
@ -3447,7 +3452,8 @@ nvim_create_autocmd({event}, {opts}) *nvim_create_autocmd()*
|
|||||||
Vimscript function name, if string) called when the
|
Vimscript function name, if string) called when the
|
||||||
event(s) is triggered. Lua callback can return a truthy
|
event(s) is triggered. Lua callback can return a truthy
|
||||||
value (not `false` or `nil`) to delete the autocommand.
|
value (not `false` or `nil`) to delete the autocommand.
|
||||||
Receives a table argument with these keys:
|
Receives one argument, a table with these keys:
|
||||||
|
*event-args*
|
||||||
• id: (number) autocommand id
|
• id: (number) autocommand id
|
||||||
• event: (string) name of the triggered event
|
• event: (string) name of the triggered event
|
||||||
|autocmd-events|
|
|autocmd-events|
|
||||||
@ -3456,7 +3462,7 @@ nvim_create_autocmd({event}, {opts}) *nvim_create_autocmd()*
|
|||||||
• buf: (number) expanded value of <abuf>
|
• buf: (number) expanded value of <abuf>
|
||||||
• file: (string) expanded value of <afile>
|
• file: (string) expanded value of <afile>
|
||||||
• data: (any) arbitrary data passed from
|
• data: (any) arbitrary data passed from
|
||||||
|nvim_exec_autocmds()|
|
|nvim_exec_autocmds()| *event-data*
|
||||||
• command (string) optional: Vim command to execute on event.
|
• command (string) optional: Vim command to execute on event.
|
||||||
Cannot be used with {callback}
|
Cannot be used with {callback}
|
||||||
• once (boolean) optional: defaults to false. Run the
|
• once (boolean) optional: defaults to false. Run the
|
||||||
|
@ -903,18 +903,18 @@ ShellFilterPost After executing a shell command with
|
|||||||
":{range}!cmd", ":w !cmd" or ":r !cmd".
|
":{range}!cmd", ":w !cmd" or ":r !cmd".
|
||||||
Can be used to check for any changed files.
|
Can be used to check for any changed files.
|
||||||
*SourcePre*
|
*SourcePre*
|
||||||
SourcePre Before sourcing a vim/lua file. |:source|
|
SourcePre Before sourcing a Vimscript/Lua file. |:source|
|
||||||
<afile> is the name of the file being sourced.
|
<afile> is the name of the file being sourced.
|
||||||
*SourcePost*
|
*SourcePost*
|
||||||
SourcePost After sourcing a vim/lua file. |:source|
|
SourcePost After sourcing a Vimscript/Lua file. |:source|
|
||||||
<afile> is the name of the file being sourced.
|
<afile> is the name of the file being sourced.
|
||||||
Not triggered when sourcing was interrupted.
|
Not triggered when sourcing was interrupted.
|
||||||
Also triggered after a SourceCmd autocommand
|
Also triggered after a SourceCmd autocommand
|
||||||
was triggered.
|
was triggered.
|
||||||
*SourceCmd*
|
*SourceCmd*
|
||||||
SourceCmd When sourcing a vim/lua file. |:source|
|
SourceCmd When sourcing a Vimscript/Lua file. |:source|
|
||||||
<afile> is the name of the file being sourced.
|
<afile> is the name of the file being sourced.
|
||||||
The autocommand must source this file.
|
The autocommand must source that file.
|
||||||
|Cmd-event|
|
|Cmd-event|
|
||||||
*SpellFileMissing*
|
*SpellFileMissing*
|
||||||
SpellFileMissing When trying to load a spell checking file and
|
SpellFileMissing When trying to load a spell checking file and
|
||||||
@ -989,18 +989,16 @@ TermClose When a |terminal| job ends.
|
|||||||
Sets these |v:event| keys:
|
Sets these |v:event| keys:
|
||||||
status
|
status
|
||||||
*TermRequest*
|
*TermRequest*
|
||||||
TermRequest When a |terminal| job emits an OSC or DCS
|
TermRequest When a |:terminal| child process emits an OSC
|
||||||
sequence. Sets |v:termrequest|. When used from
|
or DCS sequence. Sets |v:termrequest|. The
|
||||||
Lua, the request string is included in the
|
|event-data| is the request string.
|
||||||
"data" field of the autocommand callback.
|
|
||||||
*TermResponse*
|
*TermResponse*
|
||||||
TermResponse When Nvim receives an OSC or DCS response from
|
TermResponse When Nvim receives an OSC or DCS response from
|
||||||
the terminal. Sets |v:termresponse|. When used
|
the host terminal. Sets |v:termresponse|. The
|
||||||
from Lua, the response string is included in
|
|event-data| is the response string. May be
|
||||||
the "data" field of the autocommand callback.
|
triggered during another event (file I/O,
|
||||||
May be triggered halfway through another event
|
a shell command, or anything else that takes
|
||||||
(file I/O, a shell command, or anything else
|
time). Example: >lua
|
||||||
that takes time). Example: >lua
|
|
||||||
|
|
||||||
-- Query the terminal palette for the RGB value of color 1
|
-- Query the terminal palette for the RGB value of color 1
|
||||||
-- (red) using OSC 4
|
-- (red) using OSC 4
|
||||||
|
@ -148,8 +148,9 @@ LSP FUNCTIONS
|
|||||||
`progress` of |vim.lsp.Client|
|
`progress` of |vim.lsp.Client|
|
||||||
- *vim.lsp.get_active_clients()* Use |vim.lsp.get_clients()|
|
- *vim.lsp.get_active_clients()* Use |vim.lsp.get_clients()|
|
||||||
- *vim.lsp.for_each_buffer_client()* Use |vim.lsp.get_clients()|
|
- *vim.lsp.for_each_buffer_client()* Use |vim.lsp.get_clients()|
|
||||||
- *vim.lsp.util.lookup_section()* Use |vim.tbl_get()| and
|
- *vim.lsp.util.lookup_section()* Use |vim.tbl_get()| instead: >
|
||||||
|vim.split()| with {plain=true} instead.
|
local keys = vim.split(section, '.', { plain = true })
|
||||||
|
local vim.tbl_get(table, unpack(keys))
|
||||||
- *vim.lsp.util.trim_empty_lines()* Use |vim.split()| with `trimempty` instead.
|
- *vim.lsp.util.trim_empty_lines()* Use |vim.split()| with `trimempty` instead.
|
||||||
- *vim.lsp.util.try_trim_markdown_code_blocks()*
|
- *vim.lsp.util.try_trim_markdown_code_blocks()*
|
||||||
- *vim.lsp.util.set_lines()*
|
- *vim.lsp.util.set_lines()*
|
||||||
@ -217,8 +218,10 @@ UI EXTENSIONS
|
|||||||
by the Nvim core directly instead of the TUI.
|
by the Nvim core directly instead of the TUI.
|
||||||
|
|
||||||
VARIABLES
|
VARIABLES
|
||||||
- *b:terminal_job_pid* PID of the top-level process in a |:terminal|.
|
- *b:terminal_job_pid* Use `jobpid(&channel)` instead.
|
||||||
Use `jobpid(&channel)` instead.
|
- *b:terminal_job_id* Use `&channel` instead. To access in non-current buffer:
|
||||||
|
- Lua: `vim.bo[bufnr].channel`
|
||||||
|
- Vimscript: `getbufvar(bufnr, '&channel')`
|
||||||
|
|
||||||
|
|
||||||
vim:noet:tw=78:ts=8:ft=help:norl:
|
vim:noet:tw=78:ts=8:ft=help:norl:
|
||||||
|
@ -532,6 +532,8 @@ External UIs are expected to implement these common features:
|
|||||||
published in this event. See also "mouse_on", "mouse_off".
|
published in this event. See also "mouse_on", "mouse_off".
|
||||||
- UIs generally should NOT set |$NVIM_APPNAME| (unless explicitly requested by
|
- UIs generally should NOT set |$NVIM_APPNAME| (unless explicitly requested by
|
||||||
the user).
|
the user).
|
||||||
|
- Support the text decorations/attributes given by |ui-event-hl_attr_define|.
|
||||||
|
The "url" attr should be presented as a clickable hyperlink.
|
||||||
|
|
||||||
|
|
||||||
vim:tw=78:ts=8:sw=4:et:ft=help:norl:
|
vim:tw=78:ts=8:sw=4:et:ft=help:norl:
|
||||||
|
@ -61,7 +61,7 @@ options are not restored when the LSP client is stopped or detached.
|
|||||||
- |K| is mapped to |vim.lsp.buf.hover()| unless |'keywordprg'| is customized or
|
- |K| is mapped to |vim.lsp.buf.hover()| unless |'keywordprg'| is customized or
|
||||||
a custom keymap for `K` exists.
|
a custom keymap for `K` exists.
|
||||||
|
|
||||||
*crr* *v_crr* *crn* *i_CTRL-S* *v_CTRL-R_CTRL-R* *v_CTRL-R_r*
|
*crr* *crn* *i_CTRL-S* *v_CTRL-R_CTRL-R* *v_CTRL-R_r*
|
||||||
Some keymaps are created unconditionally when Nvim starts:
|
Some keymaps are created unconditionally when Nvim starts:
|
||||||
- "crn" is mapped in Normal mode to |vim.lsp.buf.rename()|
|
- "crn" is mapped in Normal mode to |vim.lsp.buf.rename()|
|
||||||
- "crr" is mapped in Normal mode to |vim.lsp.buf.code_action()|
|
- "crr" is mapped in Normal mode to |vim.lsp.buf.code_action()|
|
||||||
|
@ -592,23 +592,12 @@ A subset of the `vim.*` API is available in threads. This includes:
|
|||||||
==============================================================================
|
==============================================================================
|
||||||
VIM.HIGHLIGHT *vim.highlight*
|
VIM.HIGHLIGHT *vim.highlight*
|
||||||
|
|
||||||
Nvim includes a function for highlighting a selection on yank.
|
|
||||||
|
|
||||||
To enable it, add the following to your `init.vim`: >vim
|
|
||||||
au TextYankPost * silent! lua vim.highlight.on_yank()
|
|
||||||
<
|
|
||||||
|
|
||||||
You can customize the highlight group and the duration of the highlight via: >vim
|
|
||||||
au TextYankPost * silent! lua vim.highlight.on_yank {higroup="IncSearch", timeout=150}
|
|
||||||
<
|
|
||||||
|
|
||||||
If you want to exclude visual selections from highlighting on yank, use: >vim
|
|
||||||
au TextYankPost * silent! lua vim.highlight.on_yank {on_visual=false}
|
|
||||||
<
|
|
||||||
|
|
||||||
|
|
||||||
vim.highlight.on_yank({opts}) *vim.highlight.on_yank()*
|
vim.highlight.on_yank({opts}) *vim.highlight.on_yank()*
|
||||||
Highlight the yanked text
|
Highlight the yanked text during a |TextYankPost| event.
|
||||||
|
|
||||||
|
Add the following to your `init.vim`: >vim
|
||||||
|
autocmd TextYankPost * silent! lua vim.highlight.on_yank {higroup='Visual', timeout=300}
|
||||||
|
<
|
||||||
|
|
||||||
Parameters: ~
|
Parameters: ~
|
||||||
• {opts} (`table?`) Optional parameters
|
• {opts} (`table?`) Optional parameters
|
||||||
@ -4002,18 +3991,22 @@ Iter:flatten({depth}) *Iter:flatten()*
|
|||||||
(`Iter`)
|
(`Iter`)
|
||||||
|
|
||||||
Iter:fold({init}, {f}) *Iter:fold()*
|
Iter:fold({init}, {f}) *Iter:fold()*
|
||||||
Folds ("reduces") an iterator into a single value.
|
Folds ("reduces") an iterator into a single value. *Iter:reduce()*
|
||||||
|
|
||||||
Examples: >lua
|
Examples: >lua
|
||||||
-- Create a new table with only even values
|
-- Create a new table with only even values
|
||||||
local t = { a = 1, b = 2, c = 3, d = 4 }
|
vim.iter({ a = 1, b = 2, c = 3, d = 4 })
|
||||||
local it = vim.iter(t)
|
:filter(function(k, v) return v % 2 == 0 end)
|
||||||
it:filter(function(k, v) return v % 2 == 0 end)
|
:fold({}, function(acc, k, v)
|
||||||
it:fold({}, function(t, k, v)
|
acc[k] = v
|
||||||
t[k] = v
|
return acc
|
||||||
return t
|
end) --> { b = 2, d = 4 }
|
||||||
end)
|
|
||||||
-- { b = 2, d = 4 }
|
-- Get the "maximum" item of an iterable.
|
||||||
|
vim.iter({ -99, -4, 3, 42, 0, 0, 7 })
|
||||||
|
:fold({}, function(acc, v)
|
||||||
|
acc.max = math.max(v, acc.max or v) return acc
|
||||||
|
end) --> { max = 42 }
|
||||||
<
|
<
|
||||||
|
|
||||||
Parameters: ~
|
Parameters: ~
|
||||||
|
@ -4,9 +4,9 @@
|
|||||||
NVIM REFERENCE MANUAL
|
NVIM REFERENCE MANUAL
|
||||||
|
|
||||||
|
|
||||||
Notable changes in Nvim 0.10 from 0.9 *news*
|
Notable changes since Nvim 0.9 *news*
|
||||||
|
|
||||||
For changes in Nvim 0.9, see |news-0.9|.
|
For changes in the previous release, see |news-0.9|.
|
||||||
|
|
||||||
Type |gO| to see the table of contents.
|
Type |gO| to see the table of contents.
|
||||||
|
|
||||||
@ -148,8 +148,10 @@ The following changes may require adaptations in user config or plugins.
|
|||||||
==============================================================================
|
==============================================================================
|
||||||
BREAKING CHANGES IN HEAD *news-breaking-dev*
|
BREAKING CHANGES IN HEAD *news-breaking-dev*
|
||||||
|
|
||||||
The following breaking changes were made during the development cycle to
|
====== Remove this section before release. ======
|
||||||
unreleased features on Nvim HEAD.
|
|
||||||
|
The following changes to UNRELEASED features were made during the development
|
||||||
|
cycle (Nvim HEAD, the "master" branch).
|
||||||
|
|
||||||
• Removed `vim.treesitter.foldtext` as transparent foldtext is now supported
|
• Removed `vim.treesitter.foldtext` as transparent foldtext is now supported
|
||||||
https://github.com/neovim/neovim/pull/20750
|
https://github.com/neovim/neovim/pull/20750
|
||||||
@ -225,6 +227,8 @@ The following new APIs and features were added.
|
|||||||
swapfile is owned by a running Nvim process, instead of prompting. If you
|
swapfile is owned by a running Nvim process, instead of prompting. If you
|
||||||
always want the swapfile dialog, delete the default SwapExists handler:
|
always want the swapfile dialog, delete the default SwapExists handler:
|
||||||
`autocmd! nvim_swapfile`. |default-autocmds|
|
`autocmd! nvim_swapfile`. |default-autocmds|
|
||||||
|
• Navigating the |jumplist| with CTRL+O, CTRL+I behaves more intuitively
|
||||||
|
when deleting buffers, and avoids "invalid buffer" cases. #25461
|
||||||
|
|
||||||
• LSP
|
• LSP
|
||||||
• LSP method names are available in |vim.lsp.protocol.Methods|.
|
• LSP method names are available in |vim.lsp.protocol.Methods|.
|
||||||
@ -368,9 +372,10 @@ The following new APIs and features were added.
|
|||||||
|
|
||||||
• |vim.version.le()| and |vim.version.ge()| are added to |vim.version|.
|
• |vim.version.le()| and |vim.version.ge()| are added to |vim.version|.
|
||||||
|
|
||||||
• |extmarks| can be associated with a URL and URLs are included as a new
|
• |extmarks| can set a "url" highlight attribute, so the text region can
|
||||||
highlight attribute. The TUI will display URLs using the OSC 8 control
|
become a clickable hyperlink (assuming UI support). The TUI renders URLs
|
||||||
sequence, enabling clickable text in supporting terminals.
|
using the OSC 8 control sequence, enabling clickable text in supporting
|
||||||
|
terminals.
|
||||||
|
|
||||||
• Added |nvim_tabpage_set_win()| to set the current window of a tabpage.
|
• Added |nvim_tabpage_set_win()| to set the current window of a tabpage.
|
||||||
|
|
||||||
|
@ -126,6 +126,46 @@ color index is just forwarded.
|
|||||||
Editor highlighting (|syntax-highlighting|, |highlight-groups|, etc.) has
|
Editor highlighting (|syntax-highlighting|, |highlight-groups|, etc.) has
|
||||||
higher precedence: it is applied after terminal colors are resolved.
|
higher precedence: it is applied after terminal colors are resolved.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
EVENTS *terminal-events*
|
||||||
|
|
||||||
|
Applications running in a :terminal buffer can send requests, which Nvim
|
||||||
|
exposes via the |TermRequest| event.
|
||||||
|
|
||||||
|
OSC 7: change working directory *terminal-osc7*
|
||||||
|
|
||||||
|
To handle OSC 7 emitted from :terminal processes, this code will :cd to the
|
||||||
|
directory indicated in the request. >lua
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ 'TermRequest' }, {
|
||||||
|
desc = 'Handles OSC 7 dir change requests',
|
||||||
|
callback = function(ev)
|
||||||
|
if string.sub(vim.v.termrequest, 1, 4) == '\x1b]7;' then
|
||||||
|
local dir = string.gsub(vim.v.termrequest, '\x1b]7;file://[^/]*', '')
|
||||||
|
if vim.fn.isdirectory(dir) == 0 then
|
||||||
|
vim.notify('invalid dir: '..dir)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
vim.api.nvim_buf_set_var(ev.buf, 'osc7_dir', dir)
|
||||||
|
if vim.o.autochdir and vim.api.nvim_get_current_buf() == ev.buf then
|
||||||
|
vim.cmd.cd(dir)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
vim.api.nvim_create_autocmd({ 'BufEnter', 'WinEnter', 'DirChanged' }, {
|
||||||
|
callback = function(ev)
|
||||||
|
if vim.b.osc7_dir and vim.fn.isdirectory(vim.b.osc7_dir) == 1 then
|
||||||
|
vim.cmd.cd(vim.b.osc7_dir)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
To try it out, select the above code and source it with `:'<,'>lua`, then run
|
||||||
|
this command in a :terminal buffer: >
|
||||||
|
|
||||||
|
printf "\033]7;file://./foo/bar\033\\"
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
Status Variables *terminal-status*
|
Status Variables *terminal-status*
|
||||||
|
|
||||||
|
@ -6837,6 +6837,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
|||||||
|
|
||||||
Level Messages ~
|
Level Messages ~
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
1 Enables Lua tracing (see above). Does not produce messages.
|
||||||
2 When a file is ":source"'ed, or |shada| file is read or written.
|
2 When a file is ":source"'ed, or |shada| file is read or written.
|
||||||
3 UI info, terminal capabilities.
|
3 UI info, terminal capabilities.
|
||||||
4 Shell commands.
|
4 Shell commands.
|
||||||
|
@ -30,9 +30,9 @@ check whether a plugin host is available for their chosen programming language.
|
|||||||
|
|
||||||
Plugin hosts are programs that provide a high-level environment for plugins,
|
Plugin hosts are programs that provide a high-level environment for plugins,
|
||||||
taking care of most boilerplate involved in defining commands, autocmds, and
|
taking care of most boilerplate involved in defining commands, autocmds, and
|
||||||
functions that are implemented over |RPC| connections. Hosts are loaded only
|
functions implemented over |RPC| connections. Hosts are loaded only when one
|
||||||
when one of their registered plugins require it, keeping Nvim's startup as
|
of their registered plugins require it, keeping Nvim's startup as fast as
|
||||||
fast as possible, even if many plugins/hosts are installed.
|
possible, even if many plugins/hosts are installed.
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
3. Example *remote-plugin-example*
|
3. Example *remote-plugin-example*
|
||||||
|
@ -18,15 +18,25 @@ changes. This documentation may also not fully reflect the latest changes.
|
|||||||
PARSER FILES *treesitter-parsers*
|
PARSER FILES *treesitter-parsers*
|
||||||
|
|
||||||
Parsers are the heart of treesitter. They are libraries that treesitter will
|
Parsers are the heart of treesitter. They are libraries that treesitter will
|
||||||
search for in the `parser` runtime directory. By default, Nvim bundles parsers
|
search for in the `parser` runtime directory.
|
||||||
for C, Lua, Vimscript, Vimdoc and Treesitter query files, but parsers can be
|
|
||||||
installed via a plugin like https://github.com/nvim-treesitter/nvim-treesitter
|
Nvim includes these parsers:
|
||||||
or even manually.
|
|
||||||
|
- C
|
||||||
|
- Lua
|
||||||
|
- Markdown
|
||||||
|
- Vimscript
|
||||||
|
- Vimdoc
|
||||||
|
- Treesitter query files |ft-query-plugin|
|
||||||
|
|
||||||
|
You can install more parsers manually, or with a plugin like
|
||||||
|
https://github.com/nvim-treesitter/nvim-treesitter .
|
||||||
|
|
||||||
Parsers are searched for as `parser/{lang}.*` in any 'runtimepath' directory.
|
Parsers are searched for as `parser/{lang}.*` in any 'runtimepath' directory.
|
||||||
If multiple parsers for the same language are found, the first one is used.
|
If multiple parsers for the same language are found, the first one is used.
|
||||||
(NOTE: This typically implies the priority "user config > plugins > bundled".)
|
(NOTE: This typically implies the priority "user config > plugins > bundled".)
|
||||||
A parser can also be loaded manually using a full path: >lua
|
|
||||||
|
To load a parser from its filepath: >lua
|
||||||
|
|
||||||
vim.treesitter.language.add('python', { path = "/path/to/python.so" })
|
vim.treesitter.language.add('python', { path = "/path/to/python.so" })
|
||||||
<
|
<
|
||||||
|
@ -331,8 +331,8 @@ numerical highlight ids to the actual attributes.
|
|||||||
`blend`: blend level (0-100). Could be used by UIs to
|
`blend`: blend level (0-100). Could be used by UIs to
|
||||||
support blending floating windows to the
|
support blending floating windows to the
|
||||||
background or to signal a transparent cursor.
|
background or to signal a transparent cursor.
|
||||||
`url`: a URL associated with this highlight. UIs can
|
`url`: URL associated with this highlight. UIs should
|
||||||
display this URL however they wish.
|
present the region as a clickable hyperlink.
|
||||||
|
|
||||||
For absent color keys the default color should be used. Don't store
|
For absent color keys the default color should be used. Don't store
|
||||||
the default value in the table, rather a sentinel value, so that
|
the default value in the table, rather a sentinel value, so that
|
||||||
|
@ -317,36 +317,39 @@ Normal commands:
|
|||||||
|Q| replays the last recorded macro instead of switching to Ex mode (|gQ|).
|
|Q| replays the last recorded macro instead of switching to Ex mode (|gQ|).
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
Local values for global-local number/boolean options are unset when the
|
|
||||||
option is set without a scope (e.g. by using |:set|), similarly to how
|
|
||||||
global-local string options work.
|
|
||||||
|
|
||||||
'autoread' works in the terminal (if it supports "focus" events)
|
Local values for global-local number/boolean options are unset when the option
|
||||||
'cpoptions' flags: |cpo-_|
|
is set without a scope (e.g. by using |:set|), similarly to how global-local
|
||||||
'diffopt' "linematch" feature
|
string options work.
|
||||||
'exrc' searches for ".nvim.lua", ".nvimrc", or ".exrc" files. The
|
|
||||||
|
- 'autoread' works in the terminal (if it supports "focus" events)
|
||||||
|
- 'cpoptions' flags: |cpo-_|
|
||||||
|
- 'diffopt' "linematch" feature
|
||||||
|
- 'exrc' searches for ".nvim.lua", ".nvimrc", or ".exrc" files. The
|
||||||
user is prompted whether to trust the file.
|
user is prompted whether to trust the file.
|
||||||
'fillchars' flags: "msgsep", "horiz", "horizup", "horizdown",
|
- 'fillchars' flags: "msgsep", "horiz", "horizup", "horizdown",
|
||||||
"vertleft", "vertright", "verthoriz"
|
"vertleft", "vertright", "verthoriz"
|
||||||
'foldcolumn' supports up to 9 dynamic/fixed columns
|
- 'foldcolumn' supports up to 9 dynamic/fixed columns
|
||||||
'guicursor' works in the terminal (TUI)
|
- 'guicursor' works in the terminal (TUI)
|
||||||
'inccommand' shows interactive results for |:substitute|-like commands
|
- 'inccommand' shows interactive results for |:substitute|-like commands
|
||||||
and |:command-preview| commands
|
and |:command-preview| commands
|
||||||
'jumpoptions' "view" tries to restore the |mark-view| when moving through
|
- 'jumpoptions' "view" tries to restore the |mark-view| when moving through
|
||||||
the |jumplist|, |changelist|, |alternate-file| or using |mark-motions|.
|
- the |jumplist|, |changelist|, |alternate-file| or using |mark-motions|.
|
||||||
'laststatus' global statusline support
|
- 'laststatus' global statusline support
|
||||||
'mousescroll' amount to scroll by when scrolling with a mouse
|
- 'mousescroll' amount to scroll by when scrolling with a mouse
|
||||||
'pumblend' pseudo-transparent popupmenu
|
- 'pumblend' pseudo-transparent popupmenu
|
||||||
'scrollback'
|
- 'scrollback'
|
||||||
'shortmess' "F" flag does not affect output from autocommands
|
- 'shortmess'
|
||||||
'signcolumn' supports up to 9 dynamic/fixed columns
|
- "F" flag does not affect output from autocommands.
|
||||||
'statuscolumn' full control of columns using 'statusline' format
|
- "q" flag fully hides macro recording message.
|
||||||
'tabline' middle-click on tabpage label closes tabpage,
|
- 'signcolumn' supports up to 9 dynamic/fixed columns
|
||||||
|
- 'statuscolumn' full control of columns using 'statusline' format
|
||||||
|
- 'tabline' middle-click on tabpage label closes tabpage,
|
||||||
and %@Func@foo%X can call any function on mouse-click
|
and %@Func@foo%X can call any function on mouse-click
|
||||||
'termpastefilter'
|
- 'termpastefilter'
|
||||||
'ttimeout', 'ttimeoutlen' behavior was simplified
|
- 'ttimeout', 'ttimeoutlen' behavior was simplified
|
||||||
'winblend' pseudo-transparency in floating windows |api-floatwin|
|
- 'winblend' pseudo-transparency in floating windows |api-floatwin|
|
||||||
'winhighlight' window-local highlights
|
- 'winhighlight' window-local highlights
|
||||||
|
|
||||||
Providers:
|
Providers:
|
||||||
If a Python interpreter is available on your `$PATH`, |:python| and
|
If a Python interpreter is available on your `$PATH`, |:python| and
|
||||||
@ -596,9 +599,6 @@ Autocommands:
|
|||||||
- |TermResponse| is fired for any OSC sequence received from the terminal,
|
- |TermResponse| is fired for any OSC sequence received from the terminal,
|
||||||
instead of the Primary Device Attributes response. |v:termresponse|
|
instead of the Primary Device Attributes response. |v:termresponse|
|
||||||
|
|
||||||
Options:
|
|
||||||
- |shm-q| fully hides macro recording message instead of only shortening it.
|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
Missing features *nvim-missing*
|
Missing features *nvim-missing*
|
||||||
|
|
||||||
|
@ -255,7 +255,7 @@ do
|
|||||||
|
|
||||||
vim.api.nvim_create_autocmd('TermRequest', {
|
vim.api.nvim_create_autocmd('TermRequest', {
|
||||||
group = nvim_terminal_augroup,
|
group = nvim_terminal_augroup,
|
||||||
desc = 'Respond to OSC foreground/background color requests',
|
desc = 'Handles OSC foreground/background color requests',
|
||||||
callback = function(args)
|
callback = function(args)
|
||||||
--- @type integer
|
--- @type integer
|
||||||
local channel = vim.bo[args.buf].channel
|
local channel = vim.bo[args.buf].channel
|
||||||
|
6
runtime/lua/vim/_meta/api.lua
generated
6
runtime/lua/vim/_meta/api.lua
generated
@ -897,8 +897,8 @@ function vim.api.nvim_create_augroup(name, opts) end
|
|||||||
--- • callback (function|string) optional: Lua function (or
|
--- • callback (function|string) optional: Lua function (or
|
||||||
--- Vimscript function name, if string) called when the event(s)
|
--- Vimscript function name, if string) called when the event(s)
|
||||||
--- is triggered. Lua callback can return a truthy value (not
|
--- is triggered. Lua callback can return a truthy value (not
|
||||||
--- `false` or `nil`) to delete the autocommand. Receives a
|
--- `false` or `nil`) to delete the autocommand. Receives one
|
||||||
--- table argument with these keys:
|
--- argument, a table with these keys: *event-args*
|
||||||
--- • id: (number) autocommand id
|
--- • id: (number) autocommand id
|
||||||
--- • event: (string) name of the triggered event
|
--- • event: (string) name of the triggered event
|
||||||
--- `autocmd-events`
|
--- `autocmd-events`
|
||||||
@ -907,7 +907,7 @@ function vim.api.nvim_create_augroup(name, opts) end
|
|||||||
--- • buf: (number) expanded value of <abuf>
|
--- • buf: (number) expanded value of <abuf>
|
||||||
--- • file: (string) expanded value of <afile>
|
--- • file: (string) expanded value of <afile>
|
||||||
--- • data: (any) arbitrary data passed from
|
--- • data: (any) arbitrary data passed from
|
||||||
--- `nvim_exec_autocmds()`
|
--- `nvim_exec_autocmds()` *event-data*
|
||||||
--- • command (string) optional: Vim command to execute on event.
|
--- • command (string) optional: Vim command to execute on event.
|
||||||
--- Cannot be used with {callback}
|
--- Cannot be used with {callback}
|
||||||
--- • once (boolean) optional: defaults to false. Run the
|
--- • once (boolean) optional: defaults to false. Run the
|
||||||
|
1
runtime/lua/vim/_meta/options.lua
generated
1
runtime/lua/vim/_meta/options.lua
generated
@ -7446,6 +7446,7 @@ vim.bo.vts = vim.bo.vartabstop
|
|||||||
---
|
---
|
||||||
--- Level Messages ~
|
--- Level Messages ~
|
||||||
--- ----------------------------------------------------------------------
|
--- ----------------------------------------------------------------------
|
||||||
|
--- 1 Enables Lua tracing (see above). Does not produce messages.
|
||||||
--- 2 When a file is ":source"'ed, or `shada` file is read or written.
|
--- 2 When a file is ":source"'ed, or `shada` file is read or written.
|
||||||
--- 3 UI info, terminal capabilities.
|
--- 3 UI info, terminal capabilities.
|
||||||
--- 4 Shell commands.
|
--- 4 Shell commands.
|
||||||
|
@ -1,26 +1,3 @@
|
|||||||
---@brief
|
|
||||||
---
|
|
||||||
--- Nvim includes a function for highlighting a selection on yank.
|
|
||||||
---
|
|
||||||
--- To enable it, add the following to your `init.vim`:
|
|
||||||
---
|
|
||||||
--- ```vim
|
|
||||||
--- au TextYankPost * silent! lua vim.highlight.on_yank()
|
|
||||||
--- ```
|
|
||||||
---
|
|
||||||
--- You can customize the highlight group and the duration of the highlight via:
|
|
||||||
---
|
|
||||||
--- ```vim
|
|
||||||
--- au TextYankPost * silent! lua vim.highlight.on_yank {higroup="IncSearch", timeout=150}
|
|
||||||
--- ```
|
|
||||||
---
|
|
||||||
--- If you want to exclude visual selections from highlighting on yank, use:
|
|
||||||
---
|
|
||||||
--- ```vim
|
|
||||||
--- au TextYankPost * silent! lua vim.highlight.on_yank {on_visual=false}
|
|
||||||
--- ```
|
|
||||||
---
|
|
||||||
|
|
||||||
local api = vim.api
|
local api = vim.api
|
||||||
|
|
||||||
local M = {}
|
local M = {}
|
||||||
@ -97,7 +74,13 @@ local yank_ns = api.nvim_create_namespace('hlyank')
|
|||||||
local yank_timer --- @type uv.uv_timer_t?
|
local yank_timer --- @type uv.uv_timer_t?
|
||||||
local yank_cancel --- @type fun()?
|
local yank_cancel --- @type fun()?
|
||||||
|
|
||||||
--- Highlight the yanked text
|
--- Highlight the yanked text during a |TextYankPost| event.
|
||||||
|
---
|
||||||
|
--- Add the following to your `init.vim`:
|
||||||
|
---
|
||||||
|
--- ```vim
|
||||||
|
--- autocmd TextYankPost * silent! lua vim.highlight.on_yank {higroup='Visual', timeout=300}
|
||||||
|
--- ```
|
||||||
---
|
---
|
||||||
--- @param opts table|nil Optional parameters
|
--- @param opts table|nil Optional parameters
|
||||||
--- - higroup highlight group for yanked region (default "IncSearch")
|
--- - higroup highlight group for yanked region (default "IncSearch")
|
||||||
|
@ -450,20 +450,24 @@ function Iter:join(delim)
|
|||||||
return table.concat(self:totable(), delim)
|
return table.concat(self:totable(), delim)
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Folds ("reduces") an iterator into a single value.
|
--- Folds ("reduces") an iterator into a single value. [Iter:reduce()]()
|
||||||
---
|
---
|
||||||
--- Examples:
|
--- Examples:
|
||||||
---
|
---
|
||||||
--- ```lua
|
--- ```lua
|
||||||
--- -- Create a new table with only even values
|
--- -- Create a new table with only even values
|
||||||
--- local t = { a = 1, b = 2, c = 3, d = 4 }
|
--- vim.iter({ a = 1, b = 2, c = 3, d = 4 })
|
||||||
--- local it = vim.iter(t)
|
--- :filter(function(k, v) return v % 2 == 0 end)
|
||||||
--- it:filter(function(k, v) return v % 2 == 0 end)
|
--- :fold({}, function(acc, k, v)
|
||||||
--- it:fold({}, function(t, k, v)
|
--- acc[k] = v
|
||||||
--- t[k] = v
|
--- return acc
|
||||||
--- return t
|
--- end) --> { b = 2, d = 4 }
|
||||||
--- end)
|
---
|
||||||
--- -- { b = 2, d = 4 }
|
--- -- Get the "maximum" item of an iterable.
|
||||||
|
--- vim.iter({ -99, -4, 3, 42, 0, 0, 7 })
|
||||||
|
--- :fold({}, function(acc, v)
|
||||||
|
--- acc.max = math.max(v, acc.max or v) return acc
|
||||||
|
--- end) --> { max = 42 }
|
||||||
--- ```
|
--- ```
|
||||||
---
|
---
|
||||||
---@generic A
|
---@generic A
|
||||||
|
@ -1,180 +0,0 @@
|
|||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings;
|
|
||||||
|
|
||||||
if ($ARGV[0] eq '--help') {
|
|
||||||
print << "EOF";
|
|
||||||
Usage:
|
|
||||||
|
|
||||||
$0 file.h file.c
|
|
||||||
|
|
||||||
Removes documentation attached to function declarations in file.h and adds them
|
|
||||||
to function definitions found in file.c.
|
|
||||||
|
|
||||||
$0 file.c
|
|
||||||
|
|
||||||
Moves documentation attached to function declaration present in the same file as
|
|
||||||
the definition.
|
|
||||||
EOF
|
|
||||||
exit 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
my $hfile = shift @ARGV;
|
|
||||||
my @cfiles = @ARGV;
|
|
||||||
|
|
||||||
my %docs = ();
|
|
||||||
my $F;
|
|
||||||
|
|
||||||
sub write_lines {
|
|
||||||
my $file = shift;
|
|
||||||
my @lines = @_;
|
|
||||||
|
|
||||||
my $F;
|
|
||||||
|
|
||||||
open $F, '>', $file;
|
|
||||||
print $F (join "", @lines);
|
|
||||||
close $F;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (@cfiles) {
|
|
||||||
open $F, '<', $hfile
|
|
||||||
or die "Failed to open $hfile.";
|
|
||||||
|
|
||||||
my @hlines = ();
|
|
||||||
|
|
||||||
my $lastdoc = '';
|
|
||||||
|
|
||||||
while (<$F>) {
|
|
||||||
if (/^\/\/\/?/) {
|
|
||||||
$lastdoc .= $_;
|
|
||||||
} elsif (/^\S.*?(\w+)\(.*(?:,|\);?|FUNC_ATTR_\w+;?)$/) {
|
|
||||||
die "Documentation for $1 was already defined" if (defined $docs{$1});
|
|
||||||
if ($lastdoc ne '') {
|
|
||||||
$docs{$1} = $lastdoc;
|
|
||||||
$lastdoc = '';
|
|
||||||
}
|
|
||||||
push @hlines, $_;
|
|
||||||
} elsif ($lastdoc ne '') {
|
|
||||||
push @hlines, $lastdoc;
|
|
||||||
$lastdoc = '';
|
|
||||||
push @hlines, $_;
|
|
||||||
} else {
|
|
||||||
push @hlines, $_;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
close $F;
|
|
||||||
|
|
||||||
my %clines_hash = ();
|
|
||||||
|
|
||||||
for my $cfile (@cfiles) {
|
|
||||||
open $F, '<', $cfile
|
|
||||||
or die "Failed to open $cfile.";
|
|
||||||
|
|
||||||
my @clines = ();
|
|
||||||
|
|
||||||
while (<$F>) {
|
|
||||||
if (/^\S.*?(\w+)\(.*[,)]$/ and defined $docs{$1}) {
|
|
||||||
push @clines, $docs{$1};
|
|
||||||
delete $docs{$1};
|
|
||||||
} elsif (/^(?!static\s)\S.*?(\w+)\(.*[,)]$/ and not defined $docs{$1}) {
|
|
||||||
print STDERR "Documentation not defined for $1\n";
|
|
||||||
}
|
|
||||||
push @clines, $_;
|
|
||||||
}
|
|
||||||
|
|
||||||
close $F;
|
|
||||||
|
|
||||||
$clines_hash{$cfile} = \@clines;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (my ($func, $value) = each %docs) {
|
|
||||||
die "Function not found: $func\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
write_lines($hfile, @hlines);
|
|
||||||
while (my ($cfile, $clines) = each %clines_hash) {
|
|
||||||
write_lines($cfile, @$clines);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
open $F, '<', $hfile;
|
|
||||||
|
|
||||||
my @lines;
|
|
||||||
|
|
||||||
my $lastdoc = '';
|
|
||||||
my $defstart = '';
|
|
||||||
my $funcname;
|
|
||||||
|
|
||||||
sub clear_lastdoc {
|
|
||||||
if ($lastdoc ne '') {
|
|
||||||
push @lines, $lastdoc;
|
|
||||||
$lastdoc = '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub record_lastdoc {
|
|
||||||
my $funcname = shift;
|
|
||||||
if ($lastdoc ne '') {
|
|
||||||
$docs{$funcname} = $lastdoc;
|
|
||||||
$lastdoc = '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub add_doc {
|
|
||||||
my $funcname = shift;
|
|
||||||
if (defined $docs{$funcname}) {
|
|
||||||
push @lines, $docs{$funcname};
|
|
||||||
delete $docs{$funcname};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub clear_defstart {
|
|
||||||
push @lines, $defstart;
|
|
||||||
$defstart = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
while (<$F>) {
|
|
||||||
if (/\/\*/ .. /\*\// and not /\/\*.*?\*\//) {
|
|
||||||
push @lines, $_;
|
|
||||||
} elsif (/^\/\/\/?/) {
|
|
||||||
$lastdoc .= $_;
|
|
||||||
} elsif (/^\S.*?(\w+)\(.*(?:,|(\);?))$/) {
|
|
||||||
if (not $2) {
|
|
||||||
$defstart .= $_;
|
|
||||||
$funcname = $1;
|
|
||||||
} elsif ($2 eq ');') {
|
|
||||||
record_lastdoc $1;
|
|
||||||
push @lines, $_;
|
|
||||||
} elsif ($2 eq ')') {
|
|
||||||
clear_lastdoc;
|
|
||||||
add_doc $1;
|
|
||||||
push @lines, $_;
|
|
||||||
}
|
|
||||||
} elsif ($defstart ne '') {
|
|
||||||
$defstart .= $_;
|
|
||||||
if (/[{}]/) {
|
|
||||||
clear_lastdoc;
|
|
||||||
clear_defstart;
|
|
||||||
} elsif (/\);$/) {
|
|
||||||
record_lastdoc $funcname;
|
|
||||||
clear_defstart;
|
|
||||||
} elsif (/\)$/) {
|
|
||||||
clear_lastdoc;
|
|
||||||
add_doc $funcname;
|
|
||||||
clear_defstart;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
clear_lastdoc;
|
|
||||||
push @lines, $_;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
close $F;
|
|
||||||
|
|
||||||
while (my ($func, $value) = each %docs) {
|
|
||||||
die "Function not found: $func\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
write_lines($hfile, @lines);
|
|
||||||
}
|
|
@ -381,15 +381,15 @@ cleanup:
|
|||||||
/// - desc (string) optional: description (for documentation and troubleshooting).
|
/// - desc (string) optional: description (for documentation and troubleshooting).
|
||||||
/// - callback (function|string) optional: Lua function (or Vimscript function name, if
|
/// - callback (function|string) optional: Lua function (or Vimscript function name, if
|
||||||
/// string) called when the event(s) is triggered. Lua callback can return a truthy
|
/// string) called when the event(s) is triggered. Lua callback can return a truthy
|
||||||
/// value (not `false` or `nil`) to delete the autocommand. Receives a table argument
|
/// value (not `false` or `nil`) to delete the autocommand. Receives one argument,
|
||||||
/// with these keys:
|
/// a table with these keys: [event-args]()
|
||||||
/// - id: (number) autocommand id
|
/// - id: (number) autocommand id
|
||||||
/// - event: (string) name of the triggered event |autocmd-events|
|
/// - event: (string) name of the triggered event |autocmd-events|
|
||||||
/// - group: (number|nil) autocommand group id, if any
|
/// - group: (number|nil) autocommand group id, if any
|
||||||
/// - match: (string) expanded value of [<amatch>]
|
/// - match: (string) expanded value of [<amatch>]
|
||||||
/// - buf: (number) expanded value of [<abuf>]
|
/// - buf: (number) expanded value of [<abuf>]
|
||||||
/// - file: (string) expanded value of [<afile>]
|
/// - file: (string) expanded value of [<afile>]
|
||||||
/// - data: (any) arbitrary data passed from [nvim_exec_autocmds()]
|
/// - data: (any) arbitrary data passed from [nvim_exec_autocmds()] [event-data]()
|
||||||
/// - command (string) optional: Vim command to execute on event. Cannot be used with
|
/// - command (string) optional: Vim command to execute on event. Cannot be used with
|
||||||
/// {callback}
|
/// {callback}
|
||||||
/// - once (boolean) optional: defaults to false. Run the autocommand
|
/// - once (boolean) optional: defaults to false. Run the autocommand
|
||||||
|
@ -544,10 +544,9 @@ uint64_t channel_from_stdio(bool rpc, CallbackReader on_output, const char **err
|
|||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (embedded_mode) {
|
if (embedded_mode) {
|
||||||
// In embedded mode redirect stdout and stdin to stderr, since they are used for the UI channel.
|
// Redirect stdout/stdin (the UI channel) to stderr. Use fnctl(F_DUPFD_CLOEXEC) instead of dup()
|
||||||
// NOTE: fnctl with F_DUPFD_CLOEXEC is used instead of dup to prevent child processes from
|
// to prevent child processes from inheriting the file descriptors, which are used by UIs to
|
||||||
// inheriting the file descriptors, which make it impossible for UIs to detect when nvim exits
|
// detect when Nvim exits.
|
||||||
// while one or more of its child processes are still running.
|
|
||||||
stdin_dup_fd = fcntl(STDIN_FILENO, F_DUPFD_CLOEXEC, STDERR_FILENO + 1);
|
stdin_dup_fd = fcntl(STDIN_FILENO, F_DUPFD_CLOEXEC, STDERR_FILENO + 1);
|
||||||
stdout_dup_fd = fcntl(STDOUT_FILENO, F_DUPFD_CLOEXEC, STDERR_FILENO + 1);
|
stdout_dup_fd = fcntl(STDOUT_FILENO, F_DUPFD_CLOEXEC, STDERR_FILENO + 1);
|
||||||
dup2(STDERR_FILENO, STDOUT_FILENO);
|
dup2(STDERR_FILENO, STDOUT_FILENO);
|
||||||
|
@ -9310,6 +9310,7 @@ return {
|
|||||||
|
|
||||||
Level Messages ~
|
Level Messages ~
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
1 Enables Lua tracing (see above). Does not produce messages.
|
||||||
2 When a file is ":source"'ed, or |shada| file is read or written.
|
2 When a file is ":source"'ed, or |shada| file is read or written.
|
||||||
3 UI info, terminal capabilities.
|
3 UI info, terminal capabilities.
|
||||||
4 Shell commands.
|
4 Shell commands.
|
||||||
|
Loading…
Reference in New Issue
Block a user