mirror of
https://github.com/neovim/neovim.git
synced 2025-09-07 11:58:17 +00:00
docs: news, lsp autocomplete #33047
This commit is contained in:
4
runtime/doc/builtin.txt
generated
4
runtime/doc/builtin.txt
generated
@@ -5805,7 +5805,9 @@ log10({expr}) *log10()*
|
|||||||
|
|
||||||
luaeval({expr} [, {expr}]) *luaeval()*
|
luaeval({expr} [, {expr}]) *luaeval()*
|
||||||
Evaluate Lua expression {expr} and return its result converted
|
Evaluate Lua expression {expr} and return its result converted
|
||||||
to Vim data structures. See |lua-eval| for more details.
|
to Vim data structures. See |lua-eval| for details.
|
||||||
|
|
||||||
|
See also |v:lua-call|.
|
||||||
|
|
||||||
Parameters: ~
|
Parameters: ~
|
||||||
• {expr} (`string`)
|
• {expr} (`string`)
|
||||||
|
@@ -791,14 +791,11 @@ Variables:
|
|||||||
To use Nvim as a manpager: >bash
|
To use Nvim as a manpager: >bash
|
||||||
export MANPAGER='nvim +Man!'
|
export MANPAGER='nvim +Man!'
|
||||||
|
|
||||||
Note that when running `man` from the shell and with that `MANPAGER` in your
|
Note: when running `man` from the shell with Nvim as `$MANPAGER`, `man` will
|
||||||
environment, `man` will pre-format the manpage using `groff`. Thus, Nvim
|
pre-format the manpage using `groff`, and Nvim will display the manual page as
|
||||||
will inevitably display the manual page as it was passed to it from stdin. One
|
it was received from stdin (it can't "undo" the hard-wrap caused by
|
||||||
of the caveats of this is that the width will _always_ be hard-wrapped and not
|
man/groff). To prevent man/groff from hard-wrapping the manpage, you can set
|
||||||
soft wrapped as with `g:man_hardwrap=0`. You can set in your environment: >bash
|
`$MANWIDTH=999` in your environment.
|
||||||
export MANWIDTH=999
|
|
||||||
|
|
||||||
So `groff`'s pre-formatting output will be the same as with `g:man_hardwrap=0` i.e soft-wrapped.
|
|
||||||
|
|
||||||
To disable bold highlighting: >vim
|
To disable bold highlighting: >vim
|
||||||
:highlight link manBold Normal
|
:highlight link manBold Normal
|
||||||
|
@@ -64,6 +64,8 @@ Stop or detach the current UI
|
|||||||
the channel to be closed, it may be (incorrectly) reported as
|
the channel to be closed, it may be (incorrectly) reported as
|
||||||
an error.
|
an error.
|
||||||
|
|
||||||
|
Note: Not supported on Windows, currently.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
GUI commands
|
GUI commands
|
||||||
|
|
||||||
|
@@ -201,6 +201,10 @@ Example: Enable auto-completion and auto-formatting ("linting"): >lua
|
|||||||
|
|
||||||
-- Enable auto-completion. Note: Use CTRL-Y to select an item. |complete_CTRL-Y|
|
-- Enable auto-completion. Note: Use CTRL-Y to select an item. |complete_CTRL-Y|
|
||||||
if client:supports_method('textDocument/completion') then
|
if client:supports_method('textDocument/completion') then
|
||||||
|
-- Optional: trigger autocompletion on EVERY keypress. May be slow!
|
||||||
|
-- local chars = {}; for i = 32, 126 do table.insert(chars, string.char(i)) end
|
||||||
|
-- client.server_capabilities.completionProvider.triggerCharacters = chars
|
||||||
|
|
||||||
vim.lsp.completion.enable(true, client.id, args.buf, {autotrigger = true})
|
vim.lsp.completion.enable(true, client.id, args.buf, {autotrigger = true})
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -1881,12 +1885,27 @@ Example: activate LSP-driven auto-completion: >lua
|
|||||||
})
|
})
|
||||||
<
|
<
|
||||||
|
|
||||||
|
*lsp-autocompletion*
|
||||||
|
|
||||||
|
The LSP `triggerCharacters` field decides when to trigger autocompletion. If
|
||||||
|
you want to trigger on EVERY keypress you can either:
|
||||||
|
• Extend `client.server_capabilities.completionProvider.triggerCharacters` on
|
||||||
|
`LspAttach`, before you call
|
||||||
|
`vim.lsp.completion.enable(… {autotrigger=true})`. See the |lsp-attach|
|
||||||
|
example.
|
||||||
|
• Call `vim.lsp.completion.get()` from the handler described at
|
||||||
|
|compl-autocomplete|.
|
||||||
|
|
||||||
|
|
||||||
*vim.lsp.completion.enable()*
|
*vim.lsp.completion.enable()*
|
||||||
enable({enable}, {client_id}, {bufnr}, {opts})
|
enable({enable}, {client_id}, {bufnr}, {opts})
|
||||||
Enables or disables completions from the given language client in the
|
Enables or disables completions from the given language client in the
|
||||||
given buffer. Example: |lsp-attach| |lsp-completion|
|
given buffer. Example: |lsp-attach| |lsp-completion|
|
||||||
|
|
||||||
|
Note: the behavior of `autotrigger=true` is controlled by the LSP
|
||||||
|
`triggerCharacters` field. You can override it on LspAttach, see
|
||||||
|
|lsp-autocompletion|.
|
||||||
|
|
||||||
Parameters: ~
|
Parameters: ~
|
||||||
• {enable} (`boolean`) True to enable, false to disable
|
• {enable} (`boolean`) True to enable, false to disable
|
||||||
• {client_id} (`integer`) Client ID
|
• {client_id} (`integer`) Client ID
|
||||||
|
@@ -435,18 +435,12 @@ where the args are converted to Lua values. The expression >vim
|
|||||||
is equivalent to the Lua chunk >lua
|
is equivalent to the Lua chunk >lua
|
||||||
return somemod.func(...)
|
return somemod.func(...)
|
||||||
|
|
||||||
In addition, functions of packages can be accessed like >vim
|
Lua module functions can be accessed like: >vim
|
||||||
call v:lua.require'mypack'.func(arg1, arg2)
|
call v:lua.require'mypack'.func(arg1, arg2)
|
||||||
call v:lua.require'mypack.submod'.func(arg1, arg2)
|
call v:lua.require'mypack.submod'.func(arg1, arg2)
|
||||||
Note: Only single quote form without parens is allowed. Using
|
Note: Only single quote form without parens is allowed. Using
|
||||||
`require"mypack"` or `require('mypack')` as prefixes do NOT work (the latter
|
`require"mypack"` or `require('mypack')` as a prefix does NOT work.
|
||||||
is still valid as a function call of itself, in case require returns a useful
|
|
||||||
value).
|
|
||||||
|
|
||||||
The `v:lua` prefix may be used to call Lua functions as |method|s. For
|
|
||||||
example: >vim
|
|
||||||
:eval arg1->v:lua.somemod.func(arg2)
|
|
||||||
<
|
|
||||||
You can use `v:lua` in "func" options like 'tagfunc', 'omnifunc', etc.
|
You can use `v:lua` in "func" options like 'tagfunc', 'omnifunc', etc.
|
||||||
For example consider the following Lua omnifunc handler: >lua
|
For example consider the following Lua omnifunc handler: >lua
|
||||||
|
|
||||||
@@ -457,11 +451,13 @@ For example consider the following Lua omnifunc handler: >lua
|
|||||||
return {'stuff', 'steam', 'strange things'}
|
return {'stuff', 'steam', 'strange things'}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- Note: The module ("mymod") must be a Lua global, or use require() as
|
||||||
|
-- shown above to access it from a package.
|
||||||
vim.bo[buf].omnifunc = 'v:lua.mymod.omnifunc'
|
vim.bo[buf].omnifunc = 'v:lua.mymod.omnifunc'
|
||||||
|
|
||||||
Note: The module ("mymod" in the above example) must either be a Lua global,
|
You can also use `v:lua` to call Lua functions as Vimscript |method|s: >vim
|
||||||
or use require() as shown above to access it from a package.
|
:eval arg1->v:lua.somemod.func(arg2)
|
||||||
|
<
|
||||||
Note: `v:lua` without a call is not allowed in a Vimscript expression:
|
Note: `v:lua` without a call is not allowed in a Vimscript expression:
|
||||||
|Funcref|s cannot represent Lua functions. The following are errors: >vim
|
|Funcref|s cannot represent Lua functions. The following are errors: >vim
|
||||||
|
|
||||||
|
@@ -10,39 +10,6 @@ For changes in the previous release, see |news-0.10|.
|
|||||||
|
|
||||||
Type |gO| to see the table of contents.
|
Type |gO| to see the table of contents.
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
BREAKING CHANGES IN HEAD OR EXPERIMENTAL *news-breaking-dev*
|
|
||||||
|
|
||||||
====== Remove this section before release. ======
|
|
||||||
|
|
||||||
The following changes to UNRELEASED features were made during the development
|
|
||||||
cycle (Nvim HEAD, the "master" branch).
|
|
||||||
|
|
||||||
EXPERIMENTS
|
|
||||||
|
|
||||||
• Removed `vim.loader.disable()`. Use `vim.loader.enable(false)` instead.
|
|
||||||
|
|
||||||
LSP
|
|
||||||
|
|
||||||
• `lsp/` runtimepath files should return a table instead of calling
|
|
||||||
|vim.lsp.config()| (or assigning to `vim.lsp.config`). See |lsp-config|
|
|
||||||
• `vim.lsp.buf.document_symbol()` uses the |location-list| by default. Use
|
|
||||||
`vim.lsp.buf.document_symbol({ loclist = false })` to use the |quickfix|
|
|
||||||
list.
|
|
||||||
• `vim.lsp.completion.trigger()` has been renamed to
|
|
||||||
|vim.lsp.completion.get()|.
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
|
|
||||||
• 'jumpoptions' flag "unload" has been renamed to "clean".
|
|
||||||
• The `msghistory` option has been removed in favor of 'messagesopt'.
|
|
||||||
|
|
||||||
TREESITTER
|
|
||||||
|
|
||||||
• *TSNode:child_containing_descendant()* has been removed in the tree-sitter
|
|
||||||
library and is no longer available; use |TSNode:child_with_descendant()|
|
|
||||||
instead.
|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
BREAKING CHANGES *news-breaking*
|
BREAKING CHANGES *news-breaking*
|
||||||
|
|
||||||
@@ -266,7 +233,6 @@ DIAGNOSTICS
|
|||||||
|
|
||||||
EDITOR
|
EDITOR
|
||||||
|
|
||||||
• Use |g==| in :help docs to execute Lua and Vimscript code examples.
|
|
||||||
• Improved |paste| handling for redo (dot-repeat) and macros (|recording|):
|
• Improved |paste| handling for redo (dot-repeat) and macros (|recording|):
|
||||||
• Redoing a large paste is significantly faster and ignores 'autoindent'.
|
• Redoing a large paste is significantly faster and ignores 'autoindent'.
|
||||||
• Replaying a macro with |@| also replays pasted text.
|
• Replaying a macro with |@| also replays pasted text.
|
||||||
|
@@ -22,6 +22,14 @@
|
|||||||
--- end,
|
--- end,
|
||||||
--- })
|
--- })
|
||||||
--- ```
|
--- ```
|
||||||
|
---
|
||||||
|
--- [lsp-autocompletion]()
|
||||||
|
---
|
||||||
|
--- The LSP `triggerCharacters` field decides when to trigger autocompletion. If you want to trigger
|
||||||
|
--- on EVERY keypress you can either:
|
||||||
|
--- - Extend `client.server_capabilities.completionProvider.triggerCharacters` on `LspAttach`,
|
||||||
|
--- before you call `vim.lsp.completion.enable(… {autotrigger=true})`. See the |lsp-attach| example.
|
||||||
|
--- - Call `vim.lsp.completion.get()` from the handler described at |compl-autocomplete|.
|
||||||
|
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
@@ -781,6 +789,9 @@ end
|
|||||||
--- Enables or disables completions from the given language client in the given buffer.
|
--- Enables or disables completions from the given language client in the given buffer.
|
||||||
--- Example: |lsp-attach| |lsp-completion|
|
--- Example: |lsp-attach| |lsp-completion|
|
||||||
---
|
---
|
||||||
|
--- Note: the behavior of `autotrigger=true` is controlled by the LSP `triggerCharacters` field. You
|
||||||
|
--- can override it on LspAttach, see |lsp-autocompletion|.
|
||||||
|
---
|
||||||
--- @param enable boolean True to enable, false to disable
|
--- @param enable boolean True to enable, false to disable
|
||||||
--- @param client_id integer Client ID
|
--- @param client_id integer Client ID
|
||||||
--- @param bufnr integer Buffer handle, or 0 for the current buffer
|
--- @param bufnr integer Buffer handle, or 0 for the current buffer
|
||||||
|
@@ -6494,7 +6494,9 @@ M.funcs = {
|
|||||||
base = 1,
|
base = 1,
|
||||||
desc = [=[
|
desc = [=[
|
||||||
Evaluate Lua expression {expr} and return its result converted
|
Evaluate Lua expression {expr} and return its result converted
|
||||||
to Vim data structures. See |lua-eval| for more details.
|
to Vim data structures. See |lua-eval| for details.
|
||||||
|
|
||||||
|
See also |v:lua-call|.
|
||||||
|
|
||||||
]=],
|
]=],
|
||||||
lua = false,
|
lua = false,
|
||||||
|
@@ -518,7 +518,7 @@ void rpc_free(Channel *channel)
|
|||||||
api_free_dict(channel->rpc.info);
|
api_free_dict(channel->rpc.info);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Logs a fatal error received from a channel, then closes the channel.
|
/// Closes a channel after receiving fatal error, and logs a message.
|
||||||
static void chan_close_on_err(Channel *channel, char *msg, int loglevel)
|
static void chan_close_on_err(Channel *channel, char *msg, int loglevel)
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < kv_size(channel->rpc.call_stack); i++) {
|
for (size_t i = 0; i < kv_size(channel->rpc.call_stack); i++) {
|
||||||
|
Reference in New Issue
Block a user