diff --git a/runtime/lua/vim/_inspector.lua b/runtime/lua/vim/_inspector.lua index a09dd55a47..15b0733671 100644 --- a/runtime/lua/vim/_inspector.lua +++ b/runtime/lua/vim/_inspector.lua @@ -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[] diff --git a/runtime/lua/vim/diagnostic.lua b/runtime/lua/vim/diagnostic.lua index b8ffb26377..340bca4f6b 100644 --- a/runtime/lua/vim/diagnostic.lua +++ b/runtime/lua/vim/diagnostic.lua @@ -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 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 diff --git a/runtime/lua/vim/lsp.lua b/runtime/lua/vim/lsp.lua index e1946816da..ebdc050405 100644 --- a/runtime/lua/vim/lsp.lua +++ b/runtime/lua/vim/lsp.lua @@ -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 @@ -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 - 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) diff --git a/runtime/lua/vim/lsp/buf.lua b/runtime/lua/vim/lsp/buf.lua index 10479807a2..1926a0228d 100644 --- a/runtime/lua/vim/lsp/buf.lua +++ b/runtime/lua/vim/lsp/buf.lua @@ -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, diff --git a/runtime/lua/vim/lsp/client.lua b/runtime/lua/vim/lsp/client.lua index 7eb023da39..e03fb2415d 100644 --- a/runtime/lua/vim/lsp/client.lua +++ b/runtime/lua/vim/lsp/client.lua @@ -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] diff --git a/runtime/lua/vim/lsp/codelens.lua b/runtime/lua/vim/lsp/codelens.lua index a11f84d6c6..3ccd165d0b 100644 --- a/runtime/lua/vim/lsp/codelens.lua +++ b/runtime/lua/vim/lsp/codelens.lua @@ -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()) diff --git a/runtime/lua/vim/lsp/completion.lua b/runtime/lua/vim/lsp/completion.lua index 1e950f625e..dbf0a62eeb 100644 --- a/runtime/lua/vim/lsp/completion.lua +++ b/runtime/lua/vim/lsp/completion.lua @@ -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 {}) diff --git a/runtime/lua/vim/lsp/diagnostic.lua b/runtime/lua/vim/lsp/diagnostic.lua index 3f135d84f3..9a879d9f38 100644 --- a/runtime/lua/vim/lsp/diagnostic.lua +++ b/runtime/lua/vim/lsp/diagnostic.lua @@ -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 } diff --git a/runtime/lua/vim/lsp/inlay_hint.lua b/runtime/lua/vim/lsp/inlay_hint.lua index f1a58de621..50cf9f5f29 100644 --- a/runtime/lua/vim/lsp/inlay_hint.lua +++ b/runtime/lua/vim/lsp/inlay_hint.lua @@ -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. diff --git a/runtime/lua/vim/lsp/semantic_tokens.lua b/runtime/lua/vim/lsp/semantic_tokens.lua index 01421fea29..7cc3f95aed 100644 --- a/runtime/lua/vim/lsp/semantic_tokens.lua +++ b/runtime/lua/vim/lsp/semantic_tokens.lua @@ -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 diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua index 5bf436f2ca..6bee5bc31f 100644 --- a/runtime/lua/vim/lsp/util.lua +++ b/runtime/lua/vim/lsp/util.lua @@ -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 @@ -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 }) diff --git a/runtime/lua/vim/shared.lua b/runtime/lua/vim/shared.lua index 2e8edea22a..9314d34314 100644 --- a/runtime/lua/vim/shared.lua +++ b/runtime/lua/vim/shared.lua @@ -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 diff --git a/runtime/lua/vim/treesitter.lua b/runtime/lua/vim/treesitter.lua index dca89f413c..5f4e796413 100644 --- a/runtime/lua/vim/treesitter.lua +++ b/runtime/lua/vim/treesitter.lua @@ -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()