aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp/buf.lua
diff options
context:
space:
mode:
authorMathias Fußenegger <mfussenegger@users.noreply.github.com>2022-05-25 19:38:01 +0200
committerGitHub <noreply@github.com>2022-05-25 19:38:01 +0200
commitfa3492c5f7645feb979c767046b6ff335ea9d6ca (patch)
tree6c16c2e8986130fdba80415263422a8650077e4b /runtime/lua/vim/lsp/buf.lua
parentc6d6b8c7eb180f56e87e1427958f91a867f5cc8c (diff)
downloadrneovim-fa3492c5f7645feb979c767046b6ff335ea9d6ca.tar.gz
rneovim-fa3492c5f7645feb979c767046b6ff335ea9d6ca.tar.bz2
rneovim-fa3492c5f7645feb979c767046b6ff335ea9d6ca.zip
feat(lsp)!: turn format filter into predicate (#18458)
This makes the common use case easier. If one really needs access to all clients, they can create a filter function which manually calls `get_active_clients`.
Diffstat (limited to 'runtime/lua/vim/lsp/buf.lua')
-rw-r--r--runtime/lua/vim/lsp/buf.lua29
1 files changed, 10 insertions, 19 deletions
diff --git a/runtime/lua/vim/lsp/buf.lua b/runtime/lua/vim/lsp/buf.lua
index 1207da094a..0e86bff4f2 100644
--- a/runtime/lua/vim/lsp/buf.lua
+++ b/runtime/lua/vim/lsp/buf.lua
@@ -177,20 +177,15 @@ end
--- - bufnr (number|nil):
--- Restrict formatting to the clients attached to the given buffer, defaults to the current
--- buffer (0).
+---
--- - filter (function|nil):
---- Predicate to filter clients used for formatting. Receives the list of clients attached
---- to bufnr as the argument and must return the list of clients on which to request
---- formatting. Example:
+--- Predicate used to filter clients. Receives a client as argument and must return a
+--- boolean. Clients matching the predicate are included. Example:
---
--- <pre>
--- -- Never request typescript-language-server for formatting
--- vim.lsp.buf.format {
---- filter = function(clients)
---- return vim.tbl_filter(
---- function(client) return client.name ~= "tsserver" end,
---- clients
---- )
---- end
+--- filter = function(client) return client.name ~= "tsserver" end
--- }
--- </pre>
---
@@ -207,18 +202,14 @@ end
function M.format(options)
options = options or {}
local bufnr = options.bufnr or vim.api.nvim_get_current_buf()
- local clients = vim.lsp.buf_get_clients(bufnr)
+ local clients = vim.lsp.get_active_clients({
+ id = options.id,
+ bufnr = bufnr,
+ name = options.name,
+ })
if options.filter then
- clients = options.filter(clients)
- elseif options.id then
- clients = vim.tbl_filter(function(client)
- return client.id == options.id
- end, clients)
- elseif options.name then
- clients = vim.tbl_filter(function(client)
- return client.name == options.name
- end, clients)
+ clients = vim.tbl_filter(options.filter, clients)
end
clients = vim.tbl_filter(function(client)