Merge #28101 nvim__redraw

This commit is contained in:
Justin M. Keyes
2024-05-02 07:49:07 -07:00
committed by GitHub
19 changed files with 552 additions and 43 deletions

View File

@@ -12,12 +12,6 @@ vim.api = {}
--- @return string
function vim.api.nvim__buf_debug_extmarks(buffer, keys, dot) end
--- @private
--- @param buffer integer
--- @param first integer
--- @param last integer
function vim.api.nvim__buf_redraw_range(buffer, first, last) end
--- @private
--- @param buffer integer
--- @return table<string,any>
@@ -105,6 +99,32 @@ function vim.api.nvim__inspect_cell(grid, row, col) end
---
function vim.api.nvim__invalidate_glyph_cache() end
--- @private
--- EXPERIMENTAL: this API may change in the future.
---
--- Instruct Nvim to redraw various components.
---
--- @param opts vim.api.keyset.redraw Optional parameters.
--- • win: Target a specific `window-ID` as described below.
--- • buf: Target a specific buffer number as described below.
--- • flush: Update the screen with pending updates.
--- • valid: When present mark `win`, `buf`, or all windows for
--- redraw. When `true`, only redraw changed lines (useful for
--- decoration providers). When `false`, forcefully redraw.
--- • range: Redraw a range in `buf`, the buffer in `win` or the
--- current buffer (useful for decoration providers). Expects a
--- tuple `[first, last]` with the first and last line number of
--- the range, 0-based end-exclusive `api-indexing`.
--- • cursor: Immediately update cursor position on the screen in
--- `win` or the current window.
--- • statuscolumn: Redraw the 'statuscolumn' in `buf`, `win` or
--- all windows.
--- • statusline: Redraw the 'statusline' in `buf`, `win` or all
--- windows.
--- • winbar: Redraw the 'winbar' in `buf`, `win` or all windows.
--- • tabline: Redraw the 'tabline'.
function vim.api.nvim__redraw(opts) end
--- @private
--- @return any[]
function vim.api.nvim__runtime_inspect() end

View File

@@ -207,6 +207,18 @@ error('Cannot require a meta file')
--- @field buf? integer
--- @field filetype? string
--- @class vim.api.keyset.redraw
--- @field flush? boolean
--- @field cursor? boolean
--- @field valid? boolean
--- @field statuscolumn? boolean
--- @field statusline? boolean
--- @field tabline? boolean
--- @field winbar? boolean
--- @field range? any[]
--- @field win? integer
--- @field buf? integer
--- @class vim.api.keyset.runtime
--- @field is_lua? boolean
--- @field do_source? boolean

View File

@@ -62,7 +62,7 @@ function M.on_inlayhint(err, result, ctx, _)
if num_unprocessed == 0 then
client_hints[client_id] = {}
bufstate.version = ctx.version
api.nvim__buf_redraw_range(bufnr, 0, -1)
api.nvim__redraw({ buf = bufnr, valid = true })
return
end
@@ -91,7 +91,7 @@ function M.on_inlayhint(err, result, ctx, _)
client_hints[client_id] = new_lnum_hints
bufstate.version = ctx.version
api.nvim__buf_redraw_range(bufnr, 0, -1)
api.nvim__redraw({ buf = bufnr, valid = true })
end
--- |lsp-handler| for the method `textDocument/inlayHint/refresh`
@@ -224,7 +224,7 @@ local function clear(bufnr)
end
end
api.nvim_buf_clear_namespace(bufnr, namespace, 0, -1)
api.nvim__buf_redraw_range(bufnr, 0, -1)
api.nvim__redraw({ buf = bufnr, valid = true })
end
--- Disable inlay hints for a buffer

View File

@@ -394,7 +394,7 @@ function STHighlighter:process_response(response, client, version)
current_result.namespace_cleared = false
-- redraw all windows displaying buffer
api.nvim__buf_redraw_range(self.bufnr, 0, -1)
api.nvim__redraw({ buf = self.bufnr, valid = true })
end
--- on_win handler for the decoration provider (see |nvim_set_decoration_provider|)

View File

@@ -215,7 +215,7 @@ end
---@param start_row integer
---@param new_end integer
function TSHighlighter:on_bytes(_, _, start_row, _, _, _, _, _, new_end)
api.nvim__buf_redraw_range(self.bufnr, start_row, start_row + new_end + 1)
api.nvim__redraw({ buf = self.bufnr, range = { start_row, start_row + new_end + 1 } })
end
---@package
@@ -227,7 +227,7 @@ end
---@param changes Range6[]
function TSHighlighter:on_changedtree(changes)
for _, ch in ipairs(changes) do
api.nvim__buf_redraw_range(self.bufnr, ch[1], ch[4] + 1)
api.nvim__redraw({ buf = self.bufnr, range = { ch[1], ch[4] + 1 } })
end
end