nvim_runtime_lua

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|.

Parameters
resultvim.lsp.CompletionResult

Result of textDocument/completion

prefixstring

prefix to filter the completion items

client_idnil | integer

Client ID

server_start_boundarynil | integer

server start boundary

linenil | string

current line content

lnumnil | integer

0-indexed line number

encodingnil | string

encoding

Returns
table[]
See:

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)
Parameters
linestring

line content

lnuminteger

0-indexed line number

cursor_colinteger
client_idinteger

client ID

client_start_boundaryinteger

0-indexed word boundary

server_start_boundarynil | integer

0-indexed word boundary, based on textEdit.range.start.character

encoding"utf-8" | "utf-16" | "utf-32"
Returns
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'
  • has "popup".

  • Accepting a completion item using <c-y> applies side effects like expanding snippets,
  • 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|

Parameters
enableboolean

True to enable, false to disable

client_idinteger

Client ID

bufnrinteger

Buffer handle, or 0 for the current buffer

Returns
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.

Parameters
findstartinteger

0 or 1, decides behavior

baseinteger

findstart=0, text to match against

Returns
Decidedtable | integer

by {findstart}:

  • findstart=1: column where the completion starts, or -2 or -3
  • findstart=0: list of matches (actually just calls |complete()|)
See:

|complete-functions| |complete-items| |CompleteDone|