diff --git a/lua/default-config.lua b/lua/default-config.lua index 0c36054c..fb3a60c6 100644 --- a/lua/default-config.lua +++ b/lua/default-config.lua @@ -42,6 +42,7 @@ lvim = { signs = true, underline = true, }, + override = {}, document_highlight = true, popup_border = "single", default_keybinds = true, diff --git a/lua/lsp/init.lua b/lua/lsp/init.lua index b0511f0e..3f61a1e0 100644 --- a/lua/lsp/init.lua +++ b/lua/lsp/init.lua @@ -272,13 +272,46 @@ require("lv-utils").define_augroups { }, } +local function is_table(t) + return type(t) == "table" +end + +local function is_string(t) + return type(t) == "string" +end + +local function has_value(tab, val) + for index, value in ipairs(tab) do + if value == val then + return true + end + end + + return false +end + function lsp_config.setup(lang) - lang_server = lvim.lang[lang].lsp + local lang_server = lvim.lang[lang].lsp require("lsp.null-ls").setup "python" local provider = lang_server.provider if require("lv-utils").check_lsp_client_active(provider) then return end + + local overrides = lvim.lsp.override + + if is_table(overrides) then + if has_value(overrides, lang) then + return + end + end + + if is_string(overrides) then + if overrides == lang then + return + end + end + require("lspconfig")[provider].setup(lang_server.setup) require("lsp.null-ls").setup(lang) end diff --git a/lua/lsp/null-ls.lua b/lua/lsp/null-ls.lua index 43d4400a..099a6dc1 100644 --- a/lua/lsp/null-ls.lua +++ b/lua/lsp/null-ls.lua @@ -45,6 +45,7 @@ local function setup_ls(exe, type) end local function setup(filetype, type) + local executables = nil if type == "diagnostics" then executables = lvim.lang[filetype].linters end