diff options
| author | William Boman <william@redwill.se> | 2021-10-31 12:05:44 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-31 12:05:44 +0100 |
| commit | 14b64a21e850eee2b9b351c92394e33df57a7f08 (patch) | |
| tree | a77c72d348d944060d912dcc6b104a61b3d81785 /lua | |
| parent | scripts: fix generating filetypes for servers w/ no lspconfig entry (diff) | |
| download | mason-14b64a21e850eee2b9b351c92394e33df57a7f08.tar mason-14b64a21e850eee2b9b351c92394e33df57a7f08.tar.gz mason-14b64a21e850eee2b9b351c92394e33df57a7f08.tar.bz2 mason-14b64a21e850eee2b9b351c92394e33df57a7f08.tar.lz mason-14b64a21e850eee2b9b351c92394e33df57a7f08.tar.xz mason-14b64a21e850eee2b9b351c92394e33df57a7f08.tar.zst mason-14b64a21e850eee2b9b351c92394e33df57a7f08.zip | |
server: add attach_buffers() method (#220)
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/nvim-lsp-installer.lua | 7 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/server.lua | 23 |
2 files changed, 21 insertions, 9 deletions
diff --git a/lua/nvim-lsp-installer.lua b/lua/nvim-lsp-installer.lua index d1ab5f20..52f8289a 100644 --- a/lua/nvim-lsp-installer.lua +++ b/lua/nvim-lsp-installer.lua @@ -188,13 +188,6 @@ function M.on_server_ready(cb) end) end --- "Proxy" function for triggering attachment of LSP servers to all buffers (useful when just installed a new server --- that wasn't installed at launch) -M.lsp_attach_proxy = process.debounced(function() - -- As of writing, if the lspconfig server provides a filetypes setting, it uses FileType as trigger, otherwise it uses BufReadPost - vim.cmd [[ doautoall FileType | doautoall BufReadPost ]] -end) - -- old API M.get_server = servers.get_server M.get_available_servers = servers.get_available_servers diff --git a/lua/nvim-lsp-installer/server.lua b/lua/nvim-lsp-installer/server.lua index 922be0db..3cdcf192 100644 --- a/lua/nvim-lsp-installer/server.lua +++ b/lua/nvim-lsp-installer/server.lua @@ -45,8 +45,9 @@ function M.Server:new(opts) }, M.Server) end ----@param opts table @User-defined options. This is directly passed to the lspconfig's setup() method. -function M.Server:setup(opts) +---Sets up the language server via lspconfig. This function has the same signature as the setup function in nvim-lspconfig. +---@param opts table @The lspconfig server configuration. +function M.Server:setup_lsp(opts) if self._pre_setup then log.fmt_debug("Calling pre_setup for server=%s", self.name) self._pre_setup() @@ -70,6 +71,24 @@ function M.Server:setup(opts) end end +---Sets up the language server and attaches all open buffers. +---@param opts table @The lspconfig server configuration. +function M.Server:setup(opts) + self:setup_lsp(opts) + self:attach_buffers() +end + +---Attaches this server to all current open buffers with a 'filetype' that matches the server's configured filetypes. +function M.Server:attach_buffers() + log.debug("Attaching server to buffers", self.name) + local lsp_server = require("lspconfig")[self.name] + for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do + log.fmt_trace("Attaching server=%s to bufnr=%s", self.name, bufnr) + lsp_server.manager.try_add_wrapper(bufnr) + end + log.debug("Successfully attached server to buffers", self.name) +end + ---Registers a handler (callback) to be executed when the server is ready to be setup. ---@param handler fun(server: Server) function M.Server:on_ready(handler) |
