mirror of
https://github.com/neovim/neovim.git
synced 2024-12-19 02:34:59 -07:00
refactor: add vim._resolve_bufnr
This commit is contained in:
parent
b52ffd0a59
commit
668d2569b4
@ -53,7 +53,7 @@ function vim.inspect_pos(bufnr, row, col, filter)
|
||||
local cursor = vim.api.nvim_win_get_cursor(win)
|
||||
row, col = cursor[1] - 1, cursor[2]
|
||||
end
|
||||
bufnr = bufnr == 0 and vim.api.nvim_get_current_buf() or bufnr
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
|
||||
local results = {
|
||||
treesitter = {}, --- @type table[]
|
||||
|
@ -573,13 +573,6 @@ local underline_highlight_map = make_highlight_map('Underline')
|
||||
local floating_highlight_map = make_highlight_map('Floating')
|
||||
local sign_highlight_map = make_highlight_map('Sign')
|
||||
|
||||
local function get_bufnr(bufnr)
|
||||
if not bufnr or bufnr == 0 then
|
||||
return api.nvim_get_current_buf()
|
||||
end
|
||||
return bufnr
|
||||
end
|
||||
|
||||
--- @param diagnostics vim.Diagnostic[]
|
||||
--- @return table<integer,vim.Diagnostic[]>
|
||||
local function diagnostic_lines(diagnostics)
|
||||
@ -642,7 +635,7 @@ end
|
||||
--- @param namespace integer
|
||||
--- @param bufnr? integer
|
||||
local function save_extmarks(namespace, bufnr)
|
||||
bufnr = get_bufnr(bufnr)
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
if not diagnostic_attached_buffers[bufnr] then
|
||||
api.nvim_buf_attach(bufnr, false, {
|
||||
on_lines = function(_, _, _, _, _, last)
|
||||
@ -814,7 +807,7 @@ local function get_diagnostics(bufnr, opts, clamp)
|
||||
end
|
||||
end
|
||||
elseif namespace == nil then
|
||||
bufnr = get_bufnr(bufnr)
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
for iter_namespace in pairs(diagnostic_cache[bufnr]) do
|
||||
add_all_diags(bufnr, diagnostic_cache[bufnr][iter_namespace])
|
||||
end
|
||||
@ -825,7 +818,7 @@ local function get_diagnostics(bufnr, opts, clamp)
|
||||
end
|
||||
end
|
||||
else
|
||||
bufnr = get_bufnr(bufnr)
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
for _, iter_namespace in ipairs(namespace) do
|
||||
add_all_diags(bufnr, diagnostic_cache[bufnr][iter_namespace] or {})
|
||||
end
|
||||
@ -1100,7 +1093,7 @@ function M.set(namespace, bufnr, diagnostics, opts)
|
||||
vim.validate('diagnostics', diagnostics, vim.islist, 'a list of diagnostics')
|
||||
vim.validate('opts', opts, 'table', true)
|
||||
|
||||
bufnr = get_bufnr(bufnr)
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
|
||||
if vim.tbl_isempty(diagnostics) then
|
||||
diagnostic_cache[bufnr][namespace] = nil
|
||||
@ -1380,7 +1373,7 @@ M.handlers.signs = {
|
||||
vim.validate('diagnostics', diagnostics, vim.islist, 'a list of diagnostics')
|
||||
vim.validate('opts', opts, 'table', true)
|
||||
|
||||
bufnr = get_bufnr(bufnr)
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
opts = opts or {}
|
||||
|
||||
if not api.nvim_buf_is_loaded(bufnr) then
|
||||
@ -1486,7 +1479,7 @@ M.handlers.underline = {
|
||||
vim.validate('diagnostics', diagnostics, vim.islist, 'a list of diagnostics')
|
||||
vim.validate('opts', opts, 'table', true)
|
||||
|
||||
bufnr = get_bufnr(bufnr)
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
opts = opts or {}
|
||||
|
||||
if not vim.api.nvim_buf_is_loaded(bufnr) then
|
||||
@ -1550,7 +1543,7 @@ M.handlers.virtual_text = {
|
||||
vim.validate('diagnostics', diagnostics, vim.islist, 'a list of diagnostics')
|
||||
vim.validate('opts', opts, 'table', true)
|
||||
|
||||
bufnr = get_bufnr(bufnr)
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
opts = opts or {}
|
||||
|
||||
if not vim.api.nvim_buf_is_loaded(bufnr) then
|
||||
@ -1675,7 +1668,7 @@ function M.hide(namespace, bufnr)
|
||||
vim.validate('namespace', namespace, 'number', true)
|
||||
vim.validate('bufnr', bufnr, 'number', true)
|
||||
|
||||
local buffers = bufnr and { get_bufnr(bufnr) } or vim.tbl_keys(diagnostic_cache)
|
||||
local buffers = bufnr and { vim._resolve_bufnr(bufnr) } or vim.tbl_keys(diagnostic_cache)
|
||||
for _, iter_bufnr in ipairs(buffers) do
|
||||
local namespaces = namespace and { namespace } or vim.tbl_keys(diagnostic_cache[iter_bufnr])
|
||||
for _, iter_namespace in ipairs(namespaces) do
|
||||
@ -1702,7 +1695,7 @@ function M.is_enabled(filter)
|
||||
return vim.tbl_isempty(diagnostic_disabled) and not diagnostic_disabled[1]
|
||||
end
|
||||
|
||||
local bufnr = get_bufnr(filter.bufnr)
|
||||
local bufnr = vim._resolve_bufnr(filter.bufnr)
|
||||
if type(diagnostic_disabled[bufnr]) == 'table' then
|
||||
return not diagnostic_disabled[bufnr][filter.ns_id]
|
||||
end
|
||||
@ -1743,7 +1736,7 @@ function M.show(namespace, bufnr, diagnostics, opts)
|
||||
end
|
||||
else
|
||||
-- namespace is nil
|
||||
bufnr = get_bufnr(bufnr)
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
for iter_namespace in pairs(diagnostic_cache[bufnr]) do
|
||||
M.show(iter_namespace, bufnr, nil, opts)
|
||||
end
|
||||
@ -1810,7 +1803,7 @@ function M.open_float(opts, ...)
|
||||
end
|
||||
|
||||
opts = opts or {}
|
||||
bufnr = get_bufnr(bufnr or opts.bufnr)
|
||||
bufnr = vim._resolve_bufnr(bufnr or opts.bufnr)
|
||||
|
||||
do
|
||||
-- Resolve options with user settings from vim.diagnostic.config
|
||||
@ -2013,7 +2006,7 @@ function M.reset(namespace, bufnr)
|
||||
vim.validate('namespace', namespace, 'number', true)
|
||||
vim.validate('bufnr', bufnr, 'number', true)
|
||||
|
||||
local buffers = bufnr and { get_bufnr(bufnr) } or vim.tbl_keys(diagnostic_cache)
|
||||
local buffers = bufnr and { vim._resolve_bufnr(bufnr) } or vim.tbl_keys(diagnostic_cache)
|
||||
for _, iter_bufnr in ipairs(buffers) do
|
||||
local namespaces = namespace and { namespace } or vim.tbl_keys(diagnostic_cache[iter_bufnr])
|
||||
for _, iter_namespace in ipairs(namespaces) do
|
||||
@ -2151,7 +2144,7 @@ function M.enable(enable, filter)
|
||||
ns.disabled = not enable
|
||||
end
|
||||
else
|
||||
bufnr = get_bufnr(bufnr)
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
if not ns_id then
|
||||
diagnostic_disabled[bufnr] = (not enable) and true or nil
|
||||
else
|
||||
|
@ -89,18 +89,6 @@ lsp._request_name_to_capability = {
|
||||
|
||||
-- TODO improve handling of scratch buffers with LSP attached.
|
||||
|
||||
--- Returns the buffer number for the given {bufnr}.
|
||||
---
|
||||
---@param bufnr (integer|nil) Buffer number to resolve. Defaults to current buffer
|
||||
---@return integer bufnr
|
||||
local function resolve_bufnr(bufnr)
|
||||
validate('bufnr', bufnr, 'number', true)
|
||||
if bufnr == nil or bufnr == 0 then
|
||||
return api.nvim_get_current_buf()
|
||||
end
|
||||
return bufnr
|
||||
end
|
||||
|
||||
---@private
|
||||
--- Called by the client when trying to call a method that's not
|
||||
--- supported in any of the servers registered for the current buffer.
|
||||
@ -389,7 +377,7 @@ end
|
||||
function lsp.start(config, opts)
|
||||
opts = opts or {}
|
||||
local reuse_client = opts.reuse_client or reuse_client_default
|
||||
local bufnr = resolve_bufnr(opts.bufnr)
|
||||
local bufnr = vim._resolve_bufnr(opts.bufnr)
|
||||
|
||||
for _, client in pairs(all_clients) do
|
||||
if reuse_client(client, config) then
|
||||
@ -528,7 +516,7 @@ end
|
||||
---Buffer lifecycle handler for textDocument/didSave
|
||||
--- @param bufnr integer
|
||||
local function text_document_did_save_handler(bufnr)
|
||||
bufnr = resolve_bufnr(bufnr)
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
local uri = vim.uri_from_bufnr(bufnr)
|
||||
local text = once(lsp._buf_get_full_text)
|
||||
for _, client in ipairs(lsp.get_clients({ bufnr = bufnr })) do
|
||||
@ -689,7 +677,7 @@ end
|
||||
function lsp.buf_attach_client(bufnr, client_id)
|
||||
validate('bufnr', bufnr, 'number', true)
|
||||
validate('client_id', client_id, 'number')
|
||||
bufnr = resolve_bufnr(bufnr)
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
if not api.nvim_buf_is_loaded(bufnr) then
|
||||
log.warn(string.format('buf_attach_client called on unloaded buffer (id: %d): ', bufnr))
|
||||
return false
|
||||
@ -726,7 +714,7 @@ end
|
||||
function lsp.buf_detach_client(bufnr, client_id)
|
||||
validate('bufnr', bufnr, 'number', true)
|
||||
validate('client_id', client_id, 'number')
|
||||
bufnr = resolve_bufnr(bufnr)
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
|
||||
local client = all_clients[client_id]
|
||||
if not client or not client.attached_buffers[bufnr] then
|
||||
@ -832,7 +820,7 @@ function lsp.get_clients(filter)
|
||||
|
||||
local clients = {} --- @type vim.lsp.Client[]
|
||||
|
||||
local bufnr = filter.bufnr and resolve_bufnr(filter.bufnr)
|
||||
local bufnr = filter.bufnr and vim._resolve_bufnr(filter.bufnr)
|
||||
|
||||
for _, client in pairs(all_clients) do
|
||||
if
|
||||
@ -928,7 +916,7 @@ function lsp.buf_request(bufnr, method, params, handler, on_unsupported)
|
||||
validate('handler', handler, 'function', true)
|
||||
validate('on_unsupported', on_unsupported, 'function', true)
|
||||
|
||||
bufnr = resolve_bufnr(bufnr)
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
local method_supported = false
|
||||
local clients = lsp.get_clients({ bufnr = bufnr })
|
||||
local client_request_ids = {} --- @type table<integer,integer>
|
||||
@ -1208,7 +1196,7 @@ end
|
||||
function lsp.buf_get_clients(bufnr)
|
||||
vim.deprecate('vim.lsp.buf_get_clients()', 'vim.lsp.get_clients()', '0.12')
|
||||
local result = {} --- @type table<integer,vim.lsp.Client>
|
||||
for _, client in ipairs(lsp.get_clients({ bufnr = resolve_bufnr(bufnr) })) do
|
||||
for _, client in ipairs(lsp.get_clients({ bufnr = vim._resolve_bufnr(bufnr) })) do
|
||||
result[client.id] = client
|
||||
end
|
||||
return result
|
||||
@ -1262,7 +1250,7 @@ function lsp.for_each_buffer_client(bufnr, fn)
|
||||
'lsp.get_clients({ bufnr = bufnr }) with regular loop',
|
||||
'0.12'
|
||||
)
|
||||
bufnr = resolve_bufnr(bufnr)
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
|
||||
for _, client in pairs(lsp.get_clients({ bufnr = bufnr })) do
|
||||
fn(client, client.id, bufnr)
|
||||
|
@ -519,7 +519,7 @@ end
|
||||
--- @param opts? vim.lsp.buf.format.Opts
|
||||
function M.format(opts)
|
||||
opts = opts or {}
|
||||
local bufnr = opts.bufnr or api.nvim_get_current_buf()
|
||||
local bufnr = vim._resolve_bufnr(opts.bufnr)
|
||||
local mode = api.nvim_get_mode().mode
|
||||
local range = opts.range
|
||||
-- Try to use visual selection if no range is given
|
||||
@ -617,7 +617,7 @@ end
|
||||
---@param opts? vim.lsp.buf.rename.Opts Additional options:
|
||||
function M.rename(new_name, opts)
|
||||
opts = opts or {}
|
||||
local bufnr = opts.bufnr or api.nvim_get_current_buf()
|
||||
local bufnr = vim._resolve_bufnr(opts.bufnr)
|
||||
local clients = lsp.get_clients({
|
||||
bufnr = bufnr,
|
||||
name = opts.name,
|
||||
|
@ -604,18 +604,6 @@ function Client:_resolve_handler(method)
|
||||
return self.handlers[method] or lsp.handlers[method]
|
||||
end
|
||||
|
||||
--- Returns the buffer number for the given {bufnr}.
|
||||
---
|
||||
--- @param bufnr integer? Buffer number to resolve. Defaults to current buffer
|
||||
--- @return integer bufnr
|
||||
local function resolve_bufnr(bufnr)
|
||||
validate('bufnr', bufnr, 'number', true)
|
||||
if bufnr == nil or bufnr == 0 then
|
||||
return api.nvim_get_current_buf()
|
||||
end
|
||||
return bufnr
|
||||
end
|
||||
|
||||
--- Sends a request to the server.
|
||||
---
|
||||
--- This is a thin wrapper around {client.rpc.request} with some additional
|
||||
@ -640,7 +628,7 @@ function Client:request(method, params, handler, bufnr)
|
||||
end
|
||||
-- Ensure pending didChange notifications are sent so that the server doesn't operate on a stale state
|
||||
changetracking.flush(self, bufnr)
|
||||
bufnr = resolve_bufnr(bufnr)
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
local version = lsp.util.buf_versions[bufnr]
|
||||
log.debug(self._log_prefix, 'client.request', self.id, method, params, handler, bufnr)
|
||||
local success, request_id = self.rpc.request(method, params, function(err, result)
|
||||
@ -891,7 +879,7 @@ end
|
||||
--- @param bufnr? integer
|
||||
--- @return lsp.Registration?
|
||||
function Client:_get_registration(method, bufnr)
|
||||
bufnr = bufnr or vim.api.nvim_get_current_buf()
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
for _, reg in ipairs(self.registrations[method] or {}) do
|
||||
if not reg.registerOptions or not reg.registerOptions.documentSelector then
|
||||
return reg
|
||||
@ -928,7 +916,7 @@ end
|
||||
--- @param handler? lsp.Handler only called if a server command
|
||||
function Client:exec_cmd(command, context, handler)
|
||||
context = vim.deepcopy(context or {}, true) --[[@as lsp.HandlerContext]]
|
||||
context.bufnr = context.bufnr or api.nvim_get_current_buf()
|
||||
context.bufnr = vim._resolve_bufnr(context.bufnr)
|
||||
context.client_id = self.id
|
||||
local cmdname = command.command
|
||||
local fn = self.commands[cmdname] or lsp.commands[cmdname]
|
||||
|
@ -104,16 +104,12 @@ function M.run()
|
||||
end
|
||||
end
|
||||
|
||||
local function resolve_bufnr(bufnr)
|
||||
return bufnr == 0 and api.nvim_get_current_buf() or bufnr
|
||||
end
|
||||
|
||||
--- Clear the lenses
|
||||
---
|
||||
---@param client_id integer|nil filter by client_id. All clients if nil
|
||||
---@param bufnr integer|nil filter by buffer. All buffers if nil, 0 for current buffer
|
||||
function M.clear(client_id, bufnr)
|
||||
bufnr = bufnr and resolve_bufnr(bufnr)
|
||||
bufnr = bufnr and vim._resolve_bufnr(bufnr)
|
||||
local buffers = bufnr and { bufnr }
|
||||
or vim.tbl_filter(api.nvim_buf_is_loaded, api.nvim_list_bufs())
|
||||
for _, iter_bufnr in pairs(buffers) do
|
||||
@ -296,7 +292,7 @@ end
|
||||
--- @param opts? vim.lsp.codelens.refresh.Opts Optional fields
|
||||
function M.refresh(opts)
|
||||
opts = opts or {}
|
||||
local bufnr = opts.bufnr and resolve_bufnr(opts.bufnr)
|
||||
local bufnr = opts.bufnr and vim._resolve_bufnr(opts.bufnr)
|
||||
local buffers = bufnr and { bufnr }
|
||||
or vim.tbl_filter(api.nvim_buf_is_loaded, api.nvim_list_bufs())
|
||||
|
||||
|
@ -716,7 +716,7 @@ end
|
||||
--- @param bufnr integer Buffer handle, or 0 for the current buffer
|
||||
--- @param opts? vim.lsp.completion.BufferOpts
|
||||
function M.enable(enable, client_id, bufnr, opts)
|
||||
bufnr = (bufnr == 0 and api.nvim_get_current_buf()) or bufnr
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
|
||||
if enable then
|
||||
enable_completions(client_id, bufnr, opts or {})
|
||||
|
@ -356,9 +356,7 @@ end
|
||||
---@param bufnr (integer) Buffer handle, or 0 for current
|
||||
---@private
|
||||
function M._enable(bufnr)
|
||||
if bufnr == nil or bufnr == 0 then
|
||||
bufnr = api.nvim_get_current_buf()
|
||||
end
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
|
||||
if not bufstates[bufnr] then
|
||||
bufstates[bufnr] = { enabled = true }
|
||||
|
@ -149,8 +149,8 @@ function M.get(filter)
|
||||
vim.list_extend(hints, M.get(vim.tbl_extend('keep', { bufnr = buf }, filter)))
|
||||
end, vim.api.nvim_list_bufs())
|
||||
return hints
|
||||
elseif bufnr == 0 then
|
||||
bufnr = api.nvim_get_current_buf()
|
||||
else
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
end
|
||||
|
||||
local bufstate = bufstates[bufnr]
|
||||
@ -203,9 +203,7 @@ end
|
||||
--- Clear inlay hints
|
||||
---@param bufnr (integer) Buffer handle, or 0 for current
|
||||
local function clear(bufnr)
|
||||
if bufnr == 0 then
|
||||
bufnr = api.nvim_get_current_buf()
|
||||
end
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
local bufstate = bufstates[bufnr]
|
||||
local client_lens = (bufstate or {}).client_hints or {}
|
||||
local client_ids = vim.tbl_keys(client_lens) --- @type integer[]
|
||||
@ -221,9 +219,7 @@ end
|
||||
--- Disable inlay hints for a buffer
|
||||
---@param bufnr (integer) Buffer handle, or 0 for current
|
||||
local function _disable(bufnr)
|
||||
if bufnr == 0 then
|
||||
bufnr = api.nvim_get_current_buf()
|
||||
end
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
clear(bufnr)
|
||||
bufstates[bufnr] = nil
|
||||
bufstates[bufnr].enabled = false
|
||||
@ -242,9 +238,7 @@ end
|
||||
--- Enable inlay hints for a buffer
|
||||
---@param bufnr (integer) Buffer handle, or 0 for current
|
||||
local function _enable(bufnr)
|
||||
if bufnr == 0 then
|
||||
bufnr = api.nvim_get_current_buf()
|
||||
end
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
bufstates[bufnr] = nil
|
||||
bufstates[bufnr].enabled = true
|
||||
_refresh(bufnr)
|
||||
@ -371,13 +365,10 @@ function M.is_enabled(filter)
|
||||
filter = filter or {}
|
||||
local bufnr = filter.bufnr
|
||||
|
||||
vim.validate('bufnr', bufnr, 'number', true)
|
||||
if bufnr == nil then
|
||||
return globalstate.enabled
|
||||
elseif bufnr == 0 then
|
||||
bufnr = api.nvim_get_current_buf()
|
||||
end
|
||||
return bufstates[bufnr].enabled
|
||||
return bufstates[vim._resolve_bufnr(bufnr)].enabled
|
||||
end
|
||||
|
||||
--- Optional filters |kwargs|, or `nil` for all.
|
||||
|
@ -600,9 +600,7 @@ function M.start(bufnr, client_id, opts)
|
||||
vim.validate('bufnr', bufnr, 'number')
|
||||
vim.validate('client_id', client_id, 'number')
|
||||
|
||||
if bufnr == 0 then
|
||||
bufnr = api.nvim_get_current_buf()
|
||||
end
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
|
||||
opts = opts or {}
|
||||
assert(
|
||||
@ -655,9 +653,7 @@ function M.stop(bufnr, client_id)
|
||||
vim.validate('bufnr', bufnr, 'number')
|
||||
vim.validate('client_id', client_id, 'number')
|
||||
|
||||
if bufnr == 0 then
|
||||
bufnr = api.nvim_get_current_buf()
|
||||
end
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
|
||||
local highlighter = STHighlighter.active[bufnr]
|
||||
if not highlighter then
|
||||
@ -691,9 +687,7 @@ end
|
||||
--- - modifiers (table) token modifiers as a set. E.g., { static = true, readonly = true }
|
||||
--- - client_id (integer)
|
||||
function M.get_at_pos(bufnr, row, col)
|
||||
if bufnr == nil or bufnr == 0 then
|
||||
bufnr = api.nvim_get_current_buf()
|
||||
end
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
|
||||
local highlighter = STHighlighter.active[bufnr]
|
||||
if not highlighter then
|
||||
@ -739,8 +733,7 @@ function M.force_refresh(bufnr)
|
||||
vim.validate('bufnr', bufnr, 'number', true)
|
||||
|
||||
local buffers = bufnr == nil and vim.tbl_keys(STHighlighter.active)
|
||||
or bufnr == 0 and { api.nvim_get_current_buf() }
|
||||
or { bufnr }
|
||||
or { vim._resolve_bufnr(bufnr) }
|
||||
|
||||
for _, buffer in ipairs(buffers) do
|
||||
local highlighter = STHighlighter.active[buffer]
|
||||
@ -770,9 +763,7 @@ end
|
||||
---@param hl_group (string) Highlight group name
|
||||
---@param opts? vim.lsp.semantic_tokens.highlight_token.Opts Optional parameters:
|
||||
function M.highlight_token(token, bufnr, client_id, hl_group, opts)
|
||||
if bufnr == 0 then
|
||||
bufnr = api.nvim_get_current_buf()
|
||||
end
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
local highlighter = STHighlighter.active[bufnr]
|
||||
if not highlighter then
|
||||
return
|
||||
|
@ -192,9 +192,7 @@ local function get_lines(bufnr, rows)
|
||||
rows = type(rows) == 'table' and rows or { rows }
|
||||
|
||||
-- This is needed for bufload and bufloaded
|
||||
if bufnr == 0 then
|
||||
bufnr = api.nvim_get_current_buf()
|
||||
end
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
|
||||
local function buf_lines()
|
||||
local lines = {} --- @type table<integer,string>
|
||||
@ -1976,7 +1974,7 @@ function M.make_given_range_params(start_pos, end_pos, bufnr, position_encoding)
|
||||
validate('start_pos', start_pos, 'table', true)
|
||||
validate('end_pos', end_pos, 'table', true)
|
||||
validate('position_encoding', position_encoding, 'string', true)
|
||||
bufnr = bufnr or api.nvim_get_current_buf()
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
if position_encoding == nil then
|
||||
vim.notify_once(
|
||||
'position_encoding param is required in vim.lsp.util.make_given_range_params. Defaulting to position encoding of the first client.',
|
||||
@ -2143,10 +2141,7 @@ end
|
||||
---@param opts? vim.lsp.util._refresh.Opts Options table
|
||||
function M._refresh(method, opts)
|
||||
opts = opts or {}
|
||||
local bufnr = opts.bufnr
|
||||
if bufnr == nil or bufnr == 0 then
|
||||
bufnr = api.nvim_get_current_buf()
|
||||
end
|
||||
local bufnr = vim._resolve_bufnr(opts.bufnr)
|
||||
|
||||
local clients = vim.lsp.get_clients({ bufnr = bufnr, method = method, id = opts.client_id })
|
||||
|
||||
|
@ -1399,4 +1399,14 @@ function vim._with(context, f)
|
||||
return vim._with_c(context, callback)
|
||||
end
|
||||
|
||||
--- @param bufnr? integer
|
||||
--- @return integer
|
||||
function vim._resolve_bufnr(bufnr)
|
||||
if bufnr == nil or bufnr == 0 then
|
||||
return vim.api.nvim_get_current_buf()
|
||||
end
|
||||
vim.validate('bufnr', bufnr, 'number')
|
||||
return bufnr
|
||||
end
|
||||
|
||||
return vim
|
||||
|
@ -32,9 +32,7 @@ M.minimum_language_version = vim._ts_get_minimum_language_version()
|
||||
---
|
||||
---@return vim.treesitter.LanguageTree object to use for parsing
|
||||
function M._create_parser(bufnr, lang, opts)
|
||||
if bufnr == 0 then
|
||||
bufnr = vim.api.nvim_get_current_buf()
|
||||
end
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
|
||||
vim.fn.bufload(bufnr)
|
||||
|
||||
@ -90,9 +88,7 @@ function M.get_parser(bufnr, lang, opts)
|
||||
opts = opts or {}
|
||||
local should_error = opts.error == nil or opts.error
|
||||
|
||||
if bufnr == nil or bufnr == 0 then
|
||||
bufnr = api.nvim_get_current_buf()
|
||||
end
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
|
||||
if not valid_lang(lang) then
|
||||
lang = M.language.get_lang(vim.bo[bufnr].filetype)
|
||||
@ -258,9 +254,7 @@ end
|
||||
---
|
||||
---@return {capture: string, lang: string, metadata: vim.treesitter.query.TSMetadata}[]
|
||||
function M.get_captures_at_pos(bufnr, row, col)
|
||||
if bufnr == 0 then
|
||||
bufnr = api.nvim_get_current_buf()
|
||||
end
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
local buf_highlighter = M.highlighter.active[bufnr]
|
||||
|
||||
if not buf_highlighter then
|
||||
@ -361,11 +355,7 @@ end
|
||||
function M.get_node(opts)
|
||||
opts = opts or {}
|
||||
|
||||
local bufnr = opts.bufnr
|
||||
|
||||
if not bufnr or bufnr == 0 then
|
||||
bufnr = api.nvim_get_current_buf()
|
||||
end
|
||||
local bufnr = vim._resolve_bufnr(opts.bufnr)
|
||||
|
||||
local row, col --- @type integer, integer
|
||||
if opts.pos then
|
||||
@ -417,7 +407,7 @@ end
|
||||
---@param bufnr (integer|nil) Buffer to be highlighted (default: current buffer)
|
||||
---@param lang (string|nil) Language of the parser (default: from buffer filetype)
|
||||
function M.start(bufnr, lang)
|
||||
bufnr = bufnr or api.nvim_get_current_buf()
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
local parser = assert(M.get_parser(bufnr, lang, { error = false }))
|
||||
M.highlighter.new(parser)
|
||||
end
|
||||
@ -426,7 +416,7 @@ end
|
||||
---
|
||||
---@param bufnr (integer|nil) Buffer to stop highlighting (default: current buffer)
|
||||
function M.stop(bufnr)
|
||||
bufnr = (bufnr and bufnr ~= 0) and bufnr or api.nvim_get_current_buf()
|
||||
bufnr = vim._resolve_bufnr(bufnr)
|
||||
|
||||
if M.highlighter.active[bufnr] then
|
||||
M.highlighter.active[bufnr]:destroy()
|
||||
|
Loading…
Reference in New Issue
Block a user