|
|
@ -403,6 +403,7 @@ local function load_cfg(ft, client, cfg, loaded, starting)
|
|
|
|
|
|
|
|
|
|
|
|
local lspft = lspconfig[client].document_config.default_config.filetypes
|
|
|
|
local lspft = lspconfig[client].document_config.default_config.filetypes
|
|
|
|
local additional_ft = setups[client] and setups[client].filetypes or {}
|
|
|
|
local additional_ft = setups[client] and setups[client].filetypes or {}
|
|
|
|
|
|
|
|
local bufnr = vim.api.nvim_get_current_buf()
|
|
|
|
local cmd = cfg.cmd
|
|
|
|
local cmd = cfg.cmd
|
|
|
|
vim.list_extend(lspft, additional_ft)
|
|
|
|
vim.list_extend(lspft, additional_ft)
|
|
|
|
|
|
|
|
|
|
|
@ -422,12 +423,18 @@ local function load_cfg(ft, client, cfg, loaded, starting)
|
|
|
|
log('lsp not installed for client', client, cmd)
|
|
|
|
log('lsp not installed for client', client, cmd)
|
|
|
|
return
|
|
|
|
return
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
_NG_Loaded = _NG_loaded or {}
|
|
|
|
|
|
|
|
|
|
|
|
for k, c in pairs(loaded) do
|
|
|
|
for k, c in pairs(loaded) do
|
|
|
|
if client == k then
|
|
|
|
if client == k then
|
|
|
|
-- loaded
|
|
|
|
-- loaded
|
|
|
|
log(client, 'already been loaded for', ft, loaded, c)
|
|
|
|
log(client, 'already been loaded for', ft, loaded, c)
|
|
|
|
return
|
|
|
|
if _NG_Loaded[bufnr] and _NG_loaded[bufnr] < 2 then
|
|
|
|
|
|
|
|
log('doautocmd filetype')
|
|
|
|
|
|
|
|
vim.cmd('doautocmd FileType')
|
|
|
|
|
|
|
|
_NG_loaded[bufnr] = (_NG_loaded[bufnr] or 0 )+ 1
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
@ -435,6 +442,7 @@ local function load_cfg(ft, client, cfg, loaded, starting)
|
|
|
|
for _, c in pairs(clients or {}) do
|
|
|
|
for _, c in pairs(clients or {}) do
|
|
|
|
log("lsp start up in progress client", client, c.name)
|
|
|
|
log("lsp start up in progress client", client, c.name)
|
|
|
|
if c.name == client then
|
|
|
|
if c.name == client then
|
|
|
|
|
|
|
|
_NG_Loaded[bufnr] = 100
|
|
|
|
return
|
|
|
|
return
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
@ -462,9 +470,11 @@ local function load_cfg(ft, client, cfg, loaded, starting)
|
|
|
|
log(lspconfig[client])
|
|
|
|
log(lspconfig[client])
|
|
|
|
lspconfig[client].setup(cfg)
|
|
|
|
lspconfig[client].setup(cfg)
|
|
|
|
vim.defer_fn(function()
|
|
|
|
vim.defer_fn(function()
|
|
|
|
|
|
|
|
log('send filetype event')
|
|
|
|
vim.cmd([[doautocmd Filetype]])
|
|
|
|
vim.cmd([[doautocmd Filetype]])
|
|
|
|
end, 40)
|
|
|
|
end, 40)
|
|
|
|
else
|
|
|
|
else
|
|
|
|
|
|
|
|
log('send filetype event')
|
|
|
|
vim.cmd([[doautocmd Filetype]])
|
|
|
|
vim.cmd([[doautocmd Filetype]])
|
|
|
|
end
|
|
|
|
end
|
|
|
|
_NG_Loaded[client] = true
|
|
|
|
_NG_Loaded[client] = true
|
|
|
@ -873,21 +883,18 @@ local function on_filetype()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
log (_NG_Loaded)
|
|
|
|
log (_NG_Loaded)
|
|
|
|
if _NG_Loaded[ft] then
|
|
|
|
if _NG_Loaded[bufnr] and type(_NG_Loaded[bufnr]) == 'number' and _NG_Loaded[bufnr] > 1 then
|
|
|
|
log('navigator was loaded for ft', ft, bufnr)
|
|
|
|
log('navigator was loaded for ft', ft, bufnr)
|
|
|
|
return
|
|
|
|
return
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
-- on_filetype should only be trigger only once for each time
|
|
|
|
-- on_filetype should only be trigger only once for each bufnr
|
|
|
|
if _NG_Loaded[ft] ~= nil and type(_NG_Loaded[ft] == 'number') then
|
|
|
|
if _NG_Loaded[bufnr] ~= nil and type(_NG_Loaded[bufnr] == 'number') then
|
|
|
|
_NG_Loaded[ft] = _NG_Loaded[ft] + 1 -- do not hook and trigger filetype event multiple times
|
|
|
|
_NG_Loaded[bufnr] = _NG_Loaded[bufnr] + 1 -- do not hook and trigger filetype event multiple times
|
|
|
|
end
|
|
|
|
end
|
|
|
|
if _NG_Loaded[ft] == true then
|
|
|
|
if _NG_Loaded[bufnr] == true then
|
|
|
|
_NG_Loaded = 1 -- record the count
|
|
|
|
_NG_Loaded = 1 -- record the count
|
|
|
|
end
|
|
|
|
end
|
|
|
|
if _NG_Loaded[ft] and _NG_Loaded[ft] > 1 then
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- as setup will send filetype event as well
|
|
|
|
-- as setup will send filetype event as well
|
|
|
|
log(uri)
|
|
|
|
log(uri)
|
|
|
@ -897,7 +904,7 @@ local function on_filetype()
|
|
|
|
log('buf not shown return')
|
|
|
|
log('buf not shown return')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
setup({ bufnr = bufnr })
|
|
|
|
setup({ bufnr = bufnr })
|
|
|
|
_NG_Loaded[ft] = 1
|
|
|
|
_NG_Loaded[bufnr] = 1
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|