aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorMichael Lingelbach <m.j.lbach@gmail.com>2021-02-17 08:10:22 -0800
committerGitHub <noreply@github.com>2021-02-17 08:10:22 -0800
commit69cd84a163f55126c470a97e24a4c0e44602c2b1 (patch)
tree798c8f636dcfce766033074623daa204f0583f81 /lua
parentMerge pull request #733 from mjlbach/fix_on_attach (diff)
parentAdd option to disable autostart (diff)
downloadnvim-lspconfig-69cd84a163f55126c470a97e24a4c0e44602c2b1.tar
nvim-lspconfig-69cd84a163f55126c470a97e24a4c0e44602c2b1.tar.gz
nvim-lspconfig-69cd84a163f55126c470a97e24a4c0e44602c2b1.tar.bz2
nvim-lspconfig-69cd84a163f55126c470a97e24a4c0e44602c2b1.tar.lz
nvim-lspconfig-69cd84a163f55126c470a97e24a4c0e44602c2b1.tar.xz
nvim-lspconfig-69cd84a163f55126c470a97e24a4c0e44602c2b1.tar.zst
nvim-lspconfig-69cd84a163f55126c470a97e24a4c0e44602c2b1.zip
Merge pull request #721 from mjlbach/disable_autostart
Add option to disable autostart
Diffstat (limited to 'lua')
-rw-r--r--lua/lspconfig/configs.lua46
1 files changed, 37 insertions, 9 deletions
diff --git a/lua/lspconfig/configs.lua b/lua/lspconfig/configs.lua
index dcf0e6aa..83dd049c 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