mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 04:17:01 +00:00 
			
		
		
		
	refactor(lsp): drop vim.lsp.util._refresh() #33903
Problem: - util._refresh() is only used by `inlay_hint.lua` and `document_color.lua`, and both have their own wrapper functions; - util._refresh() provides unified parameters, but this layer of wrapping is almost meaningless because - document color does not need the range parameter; - inlay hint requires a range parameter, but it is not complicated Therefore, it can be considered redundant. ref https://github.com/neovim/neovim/pull/32887#discussion_r1996413602 Solution: Remove it.
This commit is contained in:
		| @@ -2224,7 +2224,7 @@ end | ||||
| ---@param end_line integer | ||||
| ---@param position_encoding 'utf-8'|'utf-16'|'utf-32' | ||||
| ---@return lsp.Range | ||||
| local function make_line_range_params(bufnr, start_line, end_line, position_encoding) | ||||
| function M._make_line_range_params(bufnr, start_line, end_line, position_encoding) | ||||
|   local last_line = api.nvim_buf_line_count(bufnr) - 1 | ||||
|  | ||||
|   ---@type lsp.Position | ||||
| @@ -2284,62 +2284,6 @@ function M._cancel_requests(filter) | ||||
|   end | ||||
| end | ||||
|  | ||||
| ---@class (private) vim.lsp.util._refresh.Opts | ||||
| ---@field bufnr integer? Buffer to refresh (default: 0) | ||||
| ---@field only_visible? boolean Whether to only refresh for the visible regions of the buffer (default: false) | ||||
| ---@field client_id? integer Client ID to refresh (default: all clients) | ||||
| ---@field handler? lsp.Handler | ||||
|  | ||||
| --- Request updated LSP information for a buffer. | ||||
| --- | ||||
| ---@param method vim.lsp.protocol.Method.ClientToServer.Request LSP method to call | ||||
| ---@param opts? vim.lsp.util._refresh.Opts Options table | ||||
| function M._refresh(method, opts) | ||||
|   opts = opts or {} | ||||
|   local bufnr = vim._resolve_bufnr(opts.bufnr) | ||||
|  | ||||
|   local clients = vim.lsp.get_clients({ bufnr = bufnr, method = method, id = opts.client_id }) | ||||
|  | ||||
|   if #clients == 0 then | ||||
|     return | ||||
|   end | ||||
|  | ||||
|   local textDocument = M.make_text_document_params(bufnr) | ||||
|  | ||||
|   if opts.only_visible then | ||||
|     for _, window in ipairs(api.nvim_list_wins()) do | ||||
|       if api.nvim_win_get_buf(window) == bufnr then | ||||
|         local first = vim.fn.line('w0', window) | ||||
|         local last = vim.fn.line('w$', window) | ||||
|         M._cancel_requests({ | ||||
|           bufnr = bufnr, | ||||
|           clients = clients, | ||||
|           method = method, | ||||
|           type = 'pending', | ||||
|         }) | ||||
|         for _, client in ipairs(clients) do | ||||
|           client:request(method, { | ||||
|             textDocument = textDocument, | ||||
|             range = make_line_range_params(bufnr, first - 1, last - 1, client.offset_encoding), | ||||
|           }, opts.handler, bufnr) | ||||
|         end | ||||
|       end | ||||
|     end | ||||
|   else | ||||
|     for _, client in ipairs(clients) do | ||||
|       client:request(method, { | ||||
|         textDocument = textDocument, | ||||
|         range = make_line_range_params( | ||||
|           bufnr, | ||||
|           0, | ||||
|           api.nvim_buf_line_count(bufnr) - 1, | ||||
|           client.offset_encoding | ||||
|         ), | ||||
|       }, opts.handler, bufnr) | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  | ||||
| ---@param feature string | ||||
| ---@param client_id? integer | ||||
| local function make_enable_var(feature, client_id) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Yi Ming
					Yi Ming