diff options
author | Mathias Fußenegger <mfussenegger@users.noreply.github.com> | 2022-05-25 19:38:01 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-25 19:38:01 +0200 |
commit | fa3492c5f7645feb979c767046b6ff335ea9d6ca (patch) | |
tree | 6c16c2e8986130fdba80415263422a8650077e4b /runtime/lua/vim/lsp/buf.lua | |
parent | c6d6b8c7eb180f56e87e1427958f91a867f5cc8c (diff) | |
download | rneovim-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.lua | 29 |
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) |