combine on_attach

neovim_0.6
ray-x 2 years ago
parent ff57a1f916
commit 2232317b0a

@ -224,7 +224,8 @@ M.setup = function(cfg)
-- print("loading navigator") -- print("loading navigator")
require('navigator.lazyloader').init() require('navigator.lazyloader').init()
require('navigator.lspclient.clients').setup(_NgConfigValues) require('navigator.lspclient.clients').setup(_NgConfigValues)
require('navigator.lspclient.mapping').setup(_NgConfigValues) -- keymaps should be added to on_attach. in case on_attach is not called
-- require('navigator.lspclient.mapping').setup(_NgConfigValues)
require('navigator.reference') require('navigator.reference')
require('navigator.definition') require('navigator.definition')
require('navigator.hierarchy') require('navigator.hierarchy')

@ -2,43 +2,42 @@ return {
init = function() init = function()
local loader = nil local loader = nil
local packer_plugins = packer_plugins or nil -- suppress warnings local packer_plugins = packer_plugins or nil -- suppress warnings
local log = require'navigator.util'.log local log = require('navigator.util').log
-- packer only -- packer only
if packer_plugins ~= nil then -- packer install if packer_plugins ~= nil then -- packer install
local lazy_plugins = { local lazy_plugins = {
["nvim-lspconfig"] = "neovim/nvim-lspconfig", ['nvim-lspconfig'] = 'neovim/nvim-lspconfig',
["guihua.lua"] = "ray-x/guihua.lua" ['guihua.lua'] = 'ray-x/guihua.lua',
} }
if _NgConfigValues.lsp_installer == true then if _NgConfigValues.lsp_installer == true then
lazy_plugins["nvim-lsp-installer"] = "williamboman/nvim-lsp-installer" lazy_plugins['nvim-lsp-installer'] = 'williamboman/nvim-lsp-installer'
end end
-- packer installed -- packer installed
loader = require"packer".loader loader = require('packer').loader
for plugin, url in pairs(lazy_plugins) do for plugin, url in pairs(lazy_plugins) do
if not packer_plugins[url] or not packer_plugins[url].loaded then if not packer_plugins[url] or not packer_plugins[url].loaded then
-- log("loading ", plugin) -- log("loading ", plugin)
loader(plugin) loader(plugin)
end end
end end
end end
if _NgConfigValues.lsp_installer == true then if _NgConfigValues.lsp_installer == true then
local has_lspinst, lspinst = pcall(require, "lsp_installer") local has_lspinst, lspinst = pcall(require, 'lsp_installer')
log('lsp_installer installed', has_lspinst) log('lsp_installer installed', has_lspinst)
if has_lspinst then if has_lspinst then
lspinst.setup() lspinst.setup()
local configs = require "lspconfig/configs" local configs = require('lspconfig/configs')
local servers = require'nvim-lsp-installer'.get_installed_servers() local servers = require('nvim-lsp-installer').get_installed_servers()
for _, server in pairs(servers) do for _, server in pairs(servers) do
local cfg = require'navigator.lspclient.clients'.get_cfg(server) local cfg = require('navigator.lspclient.clients').get_cfg(server)
local lsp_inst_cfg = configs[server] local lsp_inst_cfg = configs[server]
if lsp_inst_cfg and lsp_inst_cfg.document_config.default_config then if lsp_inst_cfg and lsp_inst_cfg.document_config.default_config then
lsp_inst_cfg = lsp_inst_cfg.document_config.default_config lsp_inst_cfg = lsp_inst_cfg.document_config.default_config
lsp_inst_cfg = vim.tbl_deep_extend('keep', lsp_inst_cfg, cfg) lsp_inst_cfg = vim.tbl_deep_extend('keep', lsp_inst_cfg, cfg)
require'lspconfig'[server].setup(lsp_inst_cfg) require('lspconfig')[server].setup(lsp_inst_cfg)
end end
end end
end end
@ -51,7 +50,7 @@ return {
if packer_plugins ~= nil then -- packer install if packer_plugins ~= nil then -- packer install
local lazy_plugins = {} local lazy_plugins = {}
lazy_plugins[plugin_name] = path lazy_plugins[plugin_name] = path
loader = require"packer".loader loader = require('packer').loader
for plugin, url in pairs(lazy_plugins) do for plugin, url in pairs(lazy_plugins) do
if packer_plugins[plugin] and packer_plugins[plugin].loaded == false then if packer_plugins[plugin] and packer_plugins[plugin].loaded == false then
-- log("loading ", plugin) -- log("loading ", plugin)
@ -59,6 +58,5 @@ return {
end end
end end
end end
end,
end
} }

@ -1,4 +1,3 @@
-- todo allow config passed in
local util = require('navigator.util') local util = require('navigator.util')
local log = util.log local log = util.log
local trace = util.trace local trace = util.trace
@ -415,7 +414,7 @@ local function update_capabilities()
capabilities.textDocument.completion.completionItem.labelDetailsSupport = true capabilities.textDocument.completion.completionItem.labelDetailsSupport = true
capabilities.textDocument.completion.completionItem.deprecatedSupport = true capabilities.textDocument.completion.completionItem.deprecatedSupport = true
capabilities.textDocument.completion.completionItem.commitCharactersSupport = true capabilities.textDocument.completion.completionItem.commitCharactersSupport = true
capabilities.textDocument.completion.completionItem.tagSupport = { valueSet = { 1 } } -- capabilities.textDocument.completion.completionItem.tagSupport = { valueSet = { 1 } }
capabilities.textDocument.completion.completionItem.resolveSupport = { capabilities.textDocument.completion.completionItem.resolveSupport = {
properties = { 'documentation', 'detail', 'additionalTextEdits' }, properties = { 'documentation', 'detail', 'additionalTextEdits' },
} }
@ -506,7 +505,7 @@ local function lsp_startup(ft, retry, user_lsp_opts)
disable_fmt = true disable_fmt = true
end end
local enable_fmt = not disable_fmt local enable_fmt = not disable_fmt
if user_lsp_opts[lspclient] ~= nil then if user_lsp_opts[lspclient] ~= nil then
-- log(lsp_opts[lspclient], cfg) -- log(lsp_opts[lspclient], cfg)
cfg = vim.tbl_deep_extend('force', cfg, user_lsp_opts[lspclient]) cfg = vim.tbl_deep_extend('force', cfg, user_lsp_opts[lspclient])
@ -523,11 +522,29 @@ local function lsp_startup(ft, retry, user_lsp_opts)
cfg.on_attach = function(client, bufnr) cfg.on_attach = function(client, bufnr)
config.on_attach(client, bufnr) config.on_attach(client, bufnr)
client.resolved_capabilities.document_formatting = enable_fmt client.resolved_capabilities.document_formatting = enable_fmt
require('navigator.lspclient.mapping').setup({
client = client,
bufnr = bufnr,
cap = capabilities,
})
end
end
if config.combined_attach == 'their' then
cfg.on_attach = function(client, bufnr)
on_attach(client, bufnr)
config.on_attach(client, bufnr)
client.resolved_capabilities.document_formatting = enable_fmt
require('navigator.lspclient.mapping').setup({
client = client,
bufnr = bufnr,
cap = capabilities,
})
end end
end end
if config.combined_attach == 'both' then if config.combined_attach == 'both' then
cfg.on_attach = function(client, bufnr) cfg.on_attach = function(client, bufnr)
if config.on_attach then client.resolved_capabilities.document_formatting = enable_fmt
if config.on_attach and type(config.on_attach) == 'function' then
config.on_attach(client, bufnr) config.on_attach(client, bufnr)
end end
if setups[lspclient] and setups[lspclient].on_attach then if setups[lspclient] and setups[lspclient].on_attach then
@ -535,7 +552,11 @@ local function lsp_startup(ft, retry, user_lsp_opts)
else else
on_attach(client, bufnr) on_attach(client, bufnr)
end end
client.resolved_capabilities.document_formatting = enable_fmt require('navigator.lspclient.mapping').setup({
client = client,
bufnr = bufnr,
cap = capabilities,
})
end end
end end
cfg.on_init = function(client) cfg.on_init = function(client)
@ -548,11 +569,9 @@ local function lsp_startup(ft, retry, user_lsp_opts)
end end
end end
else else
if disable_fmt then cfg.on_attach = function(client, bufnr)
cfg.on_attach = function(client, bufnr) on_attach(client, bufnr)
on_attach(client, bufnr) client.resolved_capabilities.document_formatting = enable_fmt
client.resolved_capabilities.document_formatting = enable_fmt
end
end end
end end

Loading…
Cancel
Save