mirror of
https://github.com/neovim/neovim.git
synced 2025-10-26 12:27:24 +00:00
@@ -137,12 +137,6 @@ local all_buffer_active_clients = {}
|
||||
local uninitialized_clients = {}
|
||||
|
||||
---@private
|
||||
--- Invokes a function for each LSP client attached to the buffer {bufnr}.
|
||||
---
|
||||
---@param bufnr (Number) of buffer
|
||||
---@param fn (function({client}, {client_id}, {bufnr}) Function to run on
|
||||
---each client attached to that buffer.
|
||||
---@param restrict_client_ids table list of client ids on which to restrict function application.
|
||||
local function for_each_buffer_client(bufnr, fn, restrict_client_ids)
|
||||
validate {
|
||||
fn = { fn, 'f' };
|
||||
@@ -327,6 +321,7 @@ do
|
||||
--- timer?: uv_timer
|
||||
local state_by_client = {}
|
||||
|
||||
---@private
|
||||
function changetracking.init(client, bufnr)
|
||||
local state = state_by_client[client.id]
|
||||
if not state then
|
||||
@@ -348,6 +343,7 @@ do
|
||||
state.buffers[bufnr] = nvim_buf_get_lines(bufnr, 0, -1, true)
|
||||
end
|
||||
|
||||
---@private
|
||||
function changetracking.reset_buf(client, bufnr)
|
||||
changetracking.flush(client)
|
||||
local state = state_by_client[client.id]
|
||||
@@ -356,6 +352,7 @@ do
|
||||
end
|
||||
end
|
||||
|
||||
---@private
|
||||
function changetracking.reset(client_id)
|
||||
local state = state_by_client[client_id]
|
||||
if state then
|
||||
@@ -364,6 +361,7 @@ do
|
||||
end
|
||||
end
|
||||
|
||||
---@private
|
||||
function changetracking.prepare(bufnr, firstline, lastline, new_lastline)
|
||||
local incremental_changes = function(client)
|
||||
local cached_buffers = state_by_client[client.id].buffers
|
||||
@@ -447,6 +445,7 @@ do
|
||||
end
|
||||
|
||||
--- Flushes any outstanding change notification.
|
||||
---@private
|
||||
function changetracking.flush(client)
|
||||
local state = state_by_client[client.id]
|
||||
if state then
|
||||
@@ -1297,6 +1296,7 @@ function lsp._vim_exit_handler()
|
||||
|
||||
local poll_time = 50
|
||||
|
||||
---@private
|
||||
local function check_clients_closed()
|
||||
for client_id, timeout in pairs(timeouts) do
|
||||
timeouts[client_id] = timeout - poll_time
|
||||
@@ -1683,7 +1683,17 @@ function lsp.get_log_path()
|
||||
return log.get_filename()
|
||||
end
|
||||
|
||||
--- Call {fn} for every client attached to {bufnr}
|
||||
--- Invokes a function for each LSP client attached to a buffer.
|
||||
---
|
||||
---@param bufnr number Buffer number
|
||||
---@param fn function Function to run on each client attached to buffer
|
||||
--- {bufnr}. The function takes the client, client ID, and
|
||||
--- buffer number as arguments. Example:
|
||||
--- <pre>
|
||||
--- vim.lsp.for_each_buffer_client(0, function(client, client_id, bufnr)
|
||||
--- print(vim.inspect(client))
|
||||
--- end)
|
||||
--- </pre>
|
||||
function lsp.for_each_buffer_client(bufnr, fn)
|
||||
return for_each_buffer_client(bufnr, fn)
|
||||
end
|
||||
|
||||
@@ -165,7 +165,7 @@ end
|
||||
--- saved. {timeout_ms} is passed on to |vim.lsp.buf_request_sync()|. Example:
|
||||
---
|
||||
--- <pre>
|
||||
--- vim.api.nvim_command[[autocmd BufWritePre <buffer> lua vim.lsp.buf.formatting_sync()]]
|
||||
--- autocmd BufWritePre <buffer> lua vim.lsp.buf.formatting_sync()
|
||||
--- </pre>
|
||||
---
|
||||
---@param options Table with valid `FormattingOptions` entries
|
||||
@@ -263,6 +263,7 @@ function M.rename(new_name)
|
||||
request('textDocument/rename', params)
|
||||
end
|
||||
|
||||
---@private
|
||||
local function prepare_rename(err, result)
|
||||
if err == nil and result == nil then
|
||||
vim.notify('nothing to rename', vim.log.levels.INFO)
|
||||
@@ -446,9 +447,9 @@ end
|
||||
--- by events such as `CursorHold`, eg:
|
||||
---
|
||||
--- <pre>
|
||||
--- vim.api.nvim_command [[autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight()]]
|
||||
--- vim.api.nvim_command [[autocmd CursorHoldI <buffer> lua vim.lsp.buf.document_highlight()]]
|
||||
--- vim.api.nvim_command [[autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references()]]
|
||||
--- autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight()
|
||||
--- autocmd CursorHoldI <buffer> lua vim.lsp.buf.document_highlight()
|
||||
--- autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references()
|
||||
--- </pre>
|
||||
---
|
||||
--- Note: Usage of |vim.lsp.buf.document_highlight()| requires the following highlight groups
|
||||
|
||||
@@ -101,6 +101,7 @@ function log.set_level(level)
|
||||
end
|
||||
|
||||
--- Gets the current log level.
|
||||
---@return string current log level
|
||||
function log.get_level()
|
||||
return current_log_level
|
||||
end
|
||||
|
||||
@@ -74,6 +74,7 @@ local function byte_to_utf(line, byte, offset_encoding)
|
||||
return utf_idx + 1
|
||||
end
|
||||
|
||||
---@private
|
||||
local function compute_line_length(line, offset_encoding)
|
||||
local length
|
||||
local _
|
||||
|
||||
@@ -158,6 +158,7 @@ end
|
||||
local function get_lines(bufnr, rows)
|
||||
rows = type(rows) == "table" and rows or { rows }
|
||||
|
||||
---@private
|
||||
local function buf_lines()
|
||||
local lines = {}
|
||||
for _, row in pairs(rows) do
|
||||
@@ -262,6 +263,7 @@ local function get_line_byte_from_position(bufnr, position, offset_encoding)
|
||||
end
|
||||
|
||||
--- Process and return progress reports from lsp server
|
||||
---@private
|
||||
function M.get_progress_messages()
|
||||
|
||||
local new_messages = {}
|
||||
@@ -657,7 +659,7 @@ function M.rename(old_fname, new_fname, opts)
|
||||
api.nvim_buf_delete(oldbuf, { force = true })
|
||||
end
|
||||
|
||||
|
||||
---@private
|
||||
local function create_file(change)
|
||||
local opts = change.options or {}
|
||||
-- from spec: Overwrite wins over `ignoreIfExists`
|
||||
@@ -669,7 +671,7 @@ local function create_file(change)
|
||||
vim.fn.bufadd(fname)
|
||||
end
|
||||
|
||||
|
||||
---@private
|
||||
local function delete_file(change)
|
||||
local opts = change.options or {}
|
||||
local fname = vim.uri_to_fname(change.uri)
|
||||
@@ -1418,7 +1420,7 @@ do --[[ References ]]
|
||||
|
||||
--- Removes document highlights from a buffer.
|
||||
---
|
||||
---@param bufnr buffer id
|
||||
---@param bufnr number Buffer id
|
||||
function M.buf_clear_references(bufnr)
|
||||
validate { bufnr = {bufnr, 'n', true} }
|
||||
api.nvim_buf_clear_namespace(bufnr, reference_ns, 0, -1)
|
||||
@@ -1426,9 +1428,9 @@ do --[[ References ]]
|
||||
|
||||
--- Shows a list of document highlights for a certain buffer.
|
||||
---
|
||||
---@param bufnr buffer id
|
||||
---@param references List of `DocumentHighlight` objects to highlight
|
||||
---@param offset_encoding string utf-8|utf-16|utf-32|nil defaults to utf-16
|
||||
---@param bufnr number Buffer id
|
||||
---@param references table List of `DocumentHighlight` objects to highlight
|
||||
---@param offset_encoding string One of "utf-8", "utf-16", "utf-32", or nil. Defaults to utf-16
|
||||
---@see https://microsoft.github.io/language-server-protocol/specifications/specification-3-17/#documentHighlight
|
||||
function M.buf_highlight_references(bufnr, references, offset_encoding)
|
||||
validate { bufnr = {bufnr, 'n', true} }
|
||||
|
||||
@@ -559,6 +559,7 @@ do
|
||||
return type(val) == t or (t == 'callable' and vim.is_callable(val))
|
||||
end
|
||||
|
||||
---@private
|
||||
local function is_valid(opt)
|
||||
if type(opt) ~= 'table' then
|
||||
return false, string.format('opt: expected table, got %s', type(opt))
|
||||
|
||||
Reference in New Issue
Block a user