refactor(lsp): remove deprecated lsp functions (#20421)

This commit is contained in:
Mathias Fußenegger
2022-10-01 11:35:36 +02:00
committed by GitHub
parent afb7efb373
commit e54541f7f9
2 changed files with 0 additions and 272 deletions

View File

@@ -118,38 +118,6 @@ function M.completion(context)
return request('textDocument/completion', params)
end
---@private
--- If there is more than one client that supports the given method,
--- asks the user to select one.
--
---@returns The client that the user selected or nil
local function select_client(method, on_choice)
validate({
on_choice = { on_choice, 'function', false },
})
local clients = vim.tbl_values(vim.lsp.buf_get_clients())
clients = vim.tbl_filter(function(client)
return client.supports_method(method)
end, clients)
-- better UX when choices are always in the same order (between restarts)
table.sort(clients, function(a, b)
return a.name < b.name
end)
if #clients > 1 then
vim.ui.select(clients, {
prompt = 'Select a language server:',
format_item = function(client)
return client.name
end,
}, on_choice)
elseif #clients < 1 then
on_choice(nil)
else
on_choice(clients[1])
end
end
---@private
---@return table {start={row, col}, end={row, col}} using (1, 0) indexing
local function range_from_selection()
@@ -283,139 +251,6 @@ function M.format(options)
end
end
--- Formats the current buffer.
---
---@param options (table|nil) Can be used to specify FormattingOptions.
--- Some unspecified options will be automatically derived from the current
--- Neovim options.
--
---@see https://microsoft.github.io/language-server-protocol/specification#textDocument_formatting
function M.formatting(options)
vim.notify_once(
'vim.lsp.buf.formatting is deprecated. Use vim.lsp.buf.format { async = true } instead',
vim.log.levels.WARN
)
local params = util.make_formatting_params(options)
local bufnr = api.nvim_get_current_buf()
select_client('textDocument/formatting', function(client)
if client == nil then
return
end
return client.request('textDocument/formatting', params, nil, bufnr)
end)
end
--- Performs |vim.lsp.buf.formatting()| synchronously.
---
--- Useful for running on save, to make sure buffer is formatted prior to being
--- saved. {timeout_ms} is passed on to |vim.lsp.buf_request_sync()|. Example:
---
--- <pre>
--- autocmd BufWritePre <buffer> lua vim.lsp.buf.formatting_sync()
--- </pre>
---
---@param options table|nil with valid `FormattingOptions` entries
---@param timeout_ms (number) Request timeout
---@see |vim.lsp.buf.format()|
function M.formatting_sync(options, timeout_ms)
vim.notify_once(
'vim.lsp.buf.formatting_sync is deprecated. Use vim.lsp.buf.format instead',
vim.log.levels.WARN
)
local params = util.make_formatting_params(options)
local bufnr = api.nvim_get_current_buf()
select_client('textDocument/formatting', function(client)
if client == nil then
return
end
local result, err = client.request_sync('textDocument/formatting', params, timeout_ms, bufnr)
if result and result.result then
util.apply_text_edits(result.result, bufnr, client.offset_encoding)
elseif err then
vim.notify('vim.lsp.buf.formatting_sync: ' .. err, vim.log.levels.WARN)
end
end)
end
--- Formats the current buffer by sequentially requesting formatting from attached clients.
---
--- Useful when multiple clients with formatting capability are attached.
---
--- Since it's synchronous, can be used for running on save, to make sure buffer is formatted
--- prior to being saved. {timeout_ms} is passed on to the |vim.lsp.client| `request_sync` method.
--- Example:
--- <pre>
--- vim.api.nvim_command[[autocmd BufWritePre <buffer> lua vim.lsp.buf.formatting_seq_sync()]]
--- </pre>
---
---@param options (table|nil) `FormattingOptions` entries
---@param timeout_ms (number|nil) Request timeout
---@param order (table|nil) List of client names. Formatting is requested from clients
---in the following order: first all clients that are not in the `order` list, then
---the remaining clients in the order as they occur in the `order` list.
function M.formatting_seq_sync(options, timeout_ms, order)
vim.notify_once(
'vim.lsp.buf.formatting_seq_sync is deprecated. Use vim.lsp.buf.format instead',
vim.log.levels.WARN
)
local clients = vim.tbl_values(vim.lsp.buf_get_clients())
local bufnr = api.nvim_get_current_buf()
-- sort the clients according to `order`
for _, client_name in pairs(order or {}) do
-- if the client exists, move to the end of the list
for i, client in pairs(clients) do
if client.name == client_name then
table.insert(clients, table.remove(clients, i))
break
end
end
end
-- loop through the clients and make synchronous formatting requests
for _, client in pairs(clients) do
if vim.tbl_get(client.server_capabilities, 'documentFormattingProvider') then
local params = util.make_formatting_params(options)
local result, err = client.request_sync(
'textDocument/formatting',
params,
timeout_ms,
api.nvim_get_current_buf()
)
if result and result.result then
util.apply_text_edits(result.result, bufnr, client.offset_encoding)
elseif err then
vim.notify(
string.format('vim.lsp.buf.formatting_seq_sync: (%s) %s', client.name, err),
vim.log.levels.WARN
)
end
end
end
end
--- Formats a given range.
---
---@param options Table with valid `FormattingOptions` entries.
---@param start_pos ({number, number}, optional) mark-indexed position.
---Defaults to the start of the last visual selection.
---@param end_pos ({number, number}, optional) mark-indexed position.
---Defaults to the end of the last visual selection.
function M.range_formatting(options, start_pos, end_pos)
vim.deprecate('vim.lsp.buf.range_formatting', 'vim.lsp.formatexpr or vim.lsp.buf.format', '0.9.0')
local params = util.make_given_range_params(start_pos, end_pos)
params.options = util.make_formatting_params(options).options
select_client('textDocument/rangeFormatting', function(client)
if client == nil then
return
end
return client.request('textDocument/rangeFormatting', params)
end)
end
--- Renames all references to the symbol under the cursor.
---
---@param new_name string|nil If not provided, the user will be prompted for a new
@@ -943,34 +778,6 @@ function M.code_action(options)
code_action_request(params, options)
end
--- Performs |vim.lsp.buf.code_action()| for a given range.
---
---
---@param context table|nil `CodeActionContext` of the LSP specification:
--- - diagnostics: (table|nil)
--- LSP `Diagnostic[]`. Inferred from the current
--- position if not provided.
--- - only: (table|nil)
--- List of LSP `CodeActionKind`s used to filter the code actions.
--- Most language servers support values like `refactor`
--- or `quickfix`.
---@param start_pos ({number, number}, optional) mark-indexed position.
---Defaults to the start of the last visual selection.
---@param end_pos ({number, number}, optional) mark-indexed position.
---Defaults to the end of the last visual selection.
function M.range_code_action(context, start_pos, end_pos)
vim.deprecate('vim.lsp.buf.range_code_action', 'vim.lsp.buf.code_action', '0.9.0')
validate({ context = { context, 't', true } })
context = context or {}
if not context.diagnostics then
local bufnr = api.nvim_get_current_buf()
context.diagnostics = vim.lsp.diagnostic.get_line_diagnostics(bufnr)
end
local params = util.make_given_range_params(start_pos, end_pos)
params.context = context
code_action_request(params)
end
--- Executes an LSP server command.
---
---@param command_params table A valid `ExecuteCommandParams` object