aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/server.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2021-10-31 12:05:44 +0100
committerGitHub <noreply@github.com>2021-10-31 12:05:44 +0100
commit14b64a21e850eee2b9b351c92394e33df57a7f08 (patch)
treea77c72d348d944060d912dcc6b104a61b3d81785 /lua/nvim-lsp-installer/server.lua
parentscripts: fix generating filetypes for servers w/ no lspconfig entry (diff)
downloadmason-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/nvim-lsp-installer/server.lua')
-rw-r--r--lua/nvim-lsp-installer/server.lua23
1 files changed, 21 insertions, 2 deletions
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)