From 5c8b3b9ca1422f74a4f84515c265ce2894cbb3e8 Mon Sep 17 00:00:00 2001 From: ray-x Date: Mon, 4 Apr 2022 16:15:30 +1000 Subject: [PATCH] bugfix #157 failed to override clangd setup --- lua/navigator/lspclient/clients.lua | 39 ++++++++++++----------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/lua/navigator/lspclient/clients.lua b/lua/navigator/lspclient/clients.lua index 3071f2f..2e87cb5 100644 --- a/lua/navigator/lspclient/clients.lua +++ b/lua/navigator/lspclient/clients.lua @@ -688,17 +688,27 @@ local function get_cfg(client) end local function setup(user_opts) + user_opts = user_opts or {} local ft = vim.bo.filetype - local bufnr = user_opts.bufnr or vim.api.nvim_get_current_buf() + if ft == '' then + log('nil filetype, callback') + local ext = vim.fn.expand('%:e') + if ext ~= '' then + local opts = vim.deepcopy(user_opts) + return vim.defer_fn(function() + setup(opts) + end, 200) + else + log("no filetype, no ext return") + end + end local uri = vim.uri_from_bufnr(bufnr) if uri == 'file://' or uri == 'file:///' then log('skip loading for ft ', ft, uri) return end - log(user_opts) - log(uri) if _LoadedFiletypes[ft .. tostring(bufnr)] then log('navigator was loaded for ft', ft) return @@ -726,11 +736,6 @@ local function setup(user_opts) end end - if user_opts ~= nil then - log('navigator user setup', user_opts) - else - user_opts = {} - end trace(debug.traceback()) local clients = vim.lsp.buf_get_clients(bufnr) @@ -743,24 +748,12 @@ local function setup(user_opts) end _LoadedFiletypes[ft..tostring(bufnr)] = true - user_opts = vim.list_extend(user_opts, config) -- incase setup was triggered from autocmd + user_opts = vim.tbl_extend("keep", user_opts, config) -- incase setup was triggered from autocmd - if ft == nil then - ft = vim.api.nvim_buf_get_option(bufnr, 'filetype') - end - - if ft == nil or ft == '' then - log('nil filetype, callback') - vim.cmd([[e]]) - vim.defer_fn(function() - setup(user_opts) - end, 200) - return - end + log(user_opts) local retry = true - trace('setup', user_opts) - log('loading for ft ', ft, uri) + log('loading for ft ', ft, uri, user_opts) highlight.diagnositc_config_sign() highlight.add_highlight() local lsp_opts = user_opts.lsp or {}