diff options
| author | Michael Lingelbach <m.j.lbach@gmail.com> | 2021-02-05 15:35:40 -0800 |
|---|---|---|
| committer | Michael Lingelbach <m.j.lbach@gmail.com> | 2021-02-16 21:39:54 -0800 |
| commit | 687c293cc20fd2bc2b6bd60cfe1037578e0703a2 (patch) | |
| tree | 45f1a37d648590e6836388e7b3c3ab61e27f3e68 /lua/lspconfig/configs.lua | |
| parent | Merge pull request #712 from glepnir/glepnir-patch-1 (diff) | |
| download | nvim-lspconfig-687c293cc20fd2bc2b6bd60cfe1037578e0703a2.tar nvim-lspconfig-687c293cc20fd2bc2b6bd60cfe1037578e0703a2.tar.gz nvim-lspconfig-687c293cc20fd2bc2b6bd60cfe1037578e0703a2.tar.bz2 nvim-lspconfig-687c293cc20fd2bc2b6bd60cfe1037578e0703a2.tar.lz nvim-lspconfig-687c293cc20fd2bc2b6bd60cfe1037578e0703a2.tar.xz nvim-lspconfig-687c293cc20fd2bc2b6bd60cfe1037578e0703a2.tar.zst nvim-lspconfig-687c293cc20fd2bc2b6bd60cfe1037578e0703a2.zip | |
Add option to disable autostart
Diffstat (limited to 'lua/lspconfig/configs.lua')
| -rw-r--r-- | lua/lspconfig/configs.lua | 46 |
1 files changed, 37 insertions, 9 deletions
diff --git a/lua/lspconfig/configs.lua b/lua/lspconfig/configs.lua index a17385b9..e0e07975 100644 --- a/lua/lspconfig/configs.lua +++ b/lua/lspconfig/configs.lua @@ -55,14 +55,31 @@ function configs.__newindex(t, config_name, config_def) else trigger = "BufReadPost *" end - api.nvim_command(string.format( - "autocmd %s lua require'lspconfig'[%q].manager.try_add()" - , trigger - , config.name - )) + if not (config.autostart == false) then + api.nvim_command(string.format( + "autocmd %s lua require'lspconfig'[%q].manager.try_add()" + , trigger + , config.name + )) + end local get_root_dir = config.root_dir + function M.launch() + local root_dir = get_root_dir(api.nvim_buf_get_name(0), api.nvim_get_current_buf()) + api.nvim_command(string.format( + "autocmd %s lua require'lspconfig'[%q].manager.try_add_wrapper()" + , "BufReadPost " .. root_dir .. "/*" + , config.name + )) + for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do + local buf_dir = api.nvim_buf_get_name(bufnr) + if buf_dir:sub(1, root_dir:len()) == root_dir then + M.manager.try_add_wrapper(bufnr) + end + end + end + -- Used by :LspInfo M.get_root_dir = config.root_dir M.filetypes = config.filetypes @@ -132,14 +149,25 @@ function configs.__newindex(t, config_name, config_def) return make_config(_root_dir) end) - function manager.try_add() - if vim.bo.buftype == 'nofile' then + function manager.try_add(bufnr) + bufnr = bufnr or api.nvim_get_current_buf() + if vim.api.nvim_buf_get_option(bufnr, 'filetype') == 'nofile' then return end - local root_dir = get_root_dir(api.nvim_buf_get_name(0), api.nvim_get_current_buf()) + local root_dir = get_root_dir(api.nvim_buf_get_name(bufnr), bufnr) local id = manager.add(root_dir) if id then - lsp.buf_attach_client(0, id) + lsp.buf_attach_client(bufnr, id) + end + end + + function manager.try_add_wrapper(bufnr) + local buftype = vim.api.nvim_buf_get_option(bufnr, 'filetype') + for _, filetype in ipairs(config.filetypes) do + if buftype == filetype then + manager.try_add(bufnr) + return + end end end |
