vim.lsp.completion
Methods5
function M._lsp_to_complete_items(result: vim.lsp.CompletionResult, prefix: string, client_id: nil | integer, server_start_boundary: nil | integer, line: nil | string, lnum: nil | integer, encoding: nil | string) -> table[]
Turns the result of a textDocument/completion request into vim-compatible |complete-items|.
resultvim.lsp.CompletionResultResult of
textDocument/completionprefixstringprefix to filter the completion items
client_idnil | integerClient ID
server_start_boundarynil | integerserver start boundary
linenil | stringcurrent line content
lnumnil | integer0-indexed line number
encodingnil | stringencoding
- table[]
complete-items
function M._convert_results(line: string, lnum: integer, cursor_col: integer, client_id: integer, client_start_boundary: integer, server_start_boundary: nil | integer, result: vim.lsp.CompletionResult, encoding: "utf-8" | "utf-16" | "utf-32") -> (matches table[], server_start_boundary nil | integer)
linestringline content
lnuminteger0-indexed line number
cursor_colintegerclient_idintegerclient ID
client_start_boundaryinteger0-indexed word boundary
server_start_boundarynil | integer0-indexed word boundary, based on textEdit.range.start.character
resultvim.lsp.CompletionResultencoding"utf-8" | "utf-16" | "utf-32"
matchestable[]server_start_boundarynil | integer
function M.enable(enable: boolean, client_id: integer, bufnr: integer, opts: vim.lsp.completion.BufferOpts | nil) -> nil
Enables or disables completions from the given language client in the given buffer. Effects of enabling completions are:
- Calling |vim.lsp.completion.get()| uses the enabled clients to retrieve completion candidates.
- Selecting a completion item shows a preview popup ("completionItem/resolve") if 'completeopt'
- Accepting a completion item using
<c-y>applies side effects like expanding snippets,
has "popup".
text edits (e.g. insert import statements) and executing associated commands. This works for completions triggered via autotrigger, 'omnifunc' or [vim.lsp.completion.get()].
Examples: |lsp-attach| |lsp-completion|
enablebooleanTrue to enable, false to disable
client_idintegerClient ID
bufnrintegerBuffer handle, or 0 for the current buffer
optsvim.lsp.completion.BufferOpts | nil
- nil
@note |vim.lsp.omnifunc()| (|iCTRL-XCTRL-O|) queries every client that advertises completion, including clients that were disabled by enable(false). To suppress completions for a client, clear its capability on |LspAttach|: client.server_capabilities.completionProvider = nil. @note Behavior of autotrigger=true is controlled by the LSP triggerCharacters field. You can override it on LspAttach, see |lsp-autocompletion|.
function M.get(opts: vim.lsp.completion.get.Opts | nil) -> nil
Triggers LSP completion once in the current buffer, if LSP completion is enabled (see |lsp-attach| |lsp-completion|).
Use CTRL-Y to select an item from the completion menu. |complete_CTRL-Y|
To invoke manually with CTRL-space, use this mapping:
-- Use CTRL-space to trigger LSP completion.
-- Use CTRL-Y to select an item. |complete_CTRL-Y|
vim.keymap.set('i', '<c-space>', function()
vim.lsp.completion.get()
end)
function M._omnifunc(findstart: integer, base: integer) -> Decided table | integer
Implements 'omnifunc' compatible LSP completion.
findstartinteger0 or 1, decides behavior
baseintegerfindstart=0, text to match against
Decidedtable | integerby {findstart}:
- findstart=1: column where the completion starts, or -2 or -3
- findstart=0: list of matches (actually just calls |complete()|)
|complete-functions| |complete-items| |CompleteDone|