diff options
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/lvim/config/init.lua | 29 | ||||
| -rw-r--r-- | lua/lvim/core/info.lua | 30 | ||||
| -rw-r--r-- | lua/lvim/lsp/config.lua | 89 | ||||
| -rw-r--r-- | lua/lvim/lsp/manager.lua | 6 | ||||
| -rw-r--r-- | lua/lvim/lsp/templates.lua | 12 | 
5 files changed, 95 insertions, 71 deletions
| diff --git a/lua/lvim/config/init.lua b/lua/lvim/config/init.lua index 6927d52a..505029a2 100644 --- a/lua/lvim/config/init.lua +++ b/lua/lvim/config/init.lua @@ -56,19 +56,19 @@ function M:init()  end  local function handle_deprecated_settings() -  local function deprecation_notice(setting, msg) +  local function deprecation_notice(setting, new_setting)      local in_headless = #vim.api.nvim_list_uis() == 0      if in_headless then        return      end -    msg = msg -      or string.format( -        "Deprecation notice: [%s] setting is no longer supported. See https://github.com/LunarVim/LunarVim#breaking-changes", -        setting -      ) +    local msg = string.format( +      "Deprecation notice: [%s] setting is no longer supported. %s", +      setting, +      new_setting or "See https://github.com/LunarVim/LunarVim#breaking-changes" +    )      vim.schedule(function() -      Log:warn(msg) +      vim.notify_once(msg, vim.log.levels.WARN)      end)    end @@ -80,6 +80,16 @@ local function handle_deprecated_settings()      end    end +  -- lvim.lsp.override +  if lvim.lsp.override and not vim.tbl_isempty(lvim.lsp.override) then +    deprecation_notice("lvim.lsp.override", "Use `lvim.lsp.automatic_configuration.skipped_servers` instead") +    vim.tbl_map(function(c) +      if not vim.tbl_contains(lvim.lsp.automatic_configuration.skipped_servers, c) then +        table.insert(lvim.lsp.automatic_configuration.skipped_servers, c) +      end +    end, lvim.lsp.override) +  end +    -- lvim.lsp.popup_border    if vim.tbl_contains(vim.tbl_keys(lvim.lsp), "popup_border") then      deprecation_notice "lvim.lsp.popup_border" @@ -87,10 +97,7 @@ local function handle_deprecated_settings()    -- dashboard.nvim    if lvim.builtin.dashboard.active then -    deprecation_notice( -      "dashboard", -      "Deprecation notice: `lvim.builtin.dashboard` has been replaced with `lvim.builtin.alpha`. See LunarVim#1906" -    ) +    deprecation_notice("lvim.builtin.dashboard", "Use `lvim.builtin.alpha` instead. See LunarVim#1906")    end  end diff --git a/lua/lvim/core/info.lua b/lua/lvim/core/info.lua index 9c9652da..00a7e85a 100644 --- a/lua/lvim/core/info.lua +++ b/lua/lvim/core/info.lua @@ -100,21 +100,26 @@ local function make_client_info(client)    return client_info  end -local function make_override_info(ft) +local function make_auto_lsp_info(ft) +  local skipped_filetypes = lvim.lsp.automatic_configuration.skipped_filetypes +  local skipped_servers = lvim.lsp.automatic_configuration.skipped_servers +  local info_lines = { "Automatic LSP info" } + +  if vim.tbl_contains(skipped_filetypes, ft) then +    vim.list_extend(info_lines, { "* Status: disabled for " .. ft }) +    return info_lines +  end +    local available = lsp_utils.get_supported_servers_per_filetype(ft) -  local overridden = vim.tbl_filter(function(name) +  local skipped = vim.tbl_filter(function(name)      return vim.tbl_contains(available, name) -  end, lvim.lsp.override) +  end, skipped_servers) -  local info_lines = { "" } -  if #overridden == 0 then -    return info_lines +  if #skipped == 0 then +    return { "" }    end -  info_lines = { -    fmt("Overridden %s server(s)", ft), -    fmt("* list: %s", str_list(overridden)), -  } +  vim.list_extend(info_lines, { fmt("* Skipped servers: %s", str_list(skipped)) })    return info_lines  end @@ -150,7 +155,7 @@ function M.toggle_popup(ft)      table.insert(client_names, client.name)    end -  local override_info = make_override_info(ft) +  local auto_lsp_info = make_auto_lsp_info(ft)    local formatters_info = make_formatters_info(ft) @@ -169,7 +174,7 @@ function M.toggle_popup(ft)        { "" },        lsp_info,        { "" }, -      override_info, +      auto_lsp_info,        { "" },        formatters_info,        { "" }, @@ -192,6 +197,7 @@ function M.toggle_popup(ft)      vim.fn.matchadd("LvimInfoHeader", "Formatters info")      vim.fn.matchadd("LvimInfoHeader", "Linters info")      vim.fn.matchadd("LvimInfoHeader", "Code actions info") +    vim.fn.matchadd("LvimInfoHeader", "Automatic LSP info")      vim.fn.matchadd("LvimInfoIdentifier", " " .. ft .. "$")      vim.fn.matchadd("string", "true")      vim.fn.matchadd("string", "active") diff --git a/lua/lvim/lsp/config.lua b/lua/lvim/lsp/config.lua index 986cb500..182f8fbf 100644 --- a/lua/lvim/lsp/config.lua +++ b/lua/lvim/lsp/config.lua @@ -1,3 +1,43 @@ +local skipped_servers = { +  "angularls", +  "ansiblels", +  "ccls", +  "csharp_ls", +  "cssmodules_ls", +  "denols", +  "ember", +  "emmet_ls", +  "eslint", +  "eslintls", +  "golangci_lint_ls", +  "graphql", +  "jedi_language_server", +  "ltex", +  "ocamlls", +  "phpactor", +  "psalm", +  "pylsp", +  "quick_lint_js", +  "rome", +  "reason_ls", +  "scry", +  "solang", +  "solidity_ls", +  "sorbet", +  "sourcekit", +  "sourcery", +  "spectral", +  "sqlls", +  "sqls", +  "stylelint_lsp", +  "tailwindcss", +  "tflint", +  "verible", +  "vuels", +} + +local skipped_filetypes = { "markdown", "rst", "plaintext" } +  return {    templates_dir = join_paths(get_runtime_dir(), "site", "after", "ftplugin"),    diagnostics = { @@ -41,6 +81,12 @@ return {    on_attach_callback = nil,    on_init_callback = nil,    automatic_servers_installation = true, +  automatic_configuration = { +    ---@usage list of servers that the automatic installer will skip +    skipped_servers = skipped_servers, +    ---@usage list of filetypes that the automatic installer will skip +    skipped_filetypes = skipped_filetypes, +  },    buffer_mappings = {      normal_mode = {        ["K"] = { "<cmd>lua vim.lsp.buf.hover()<CR>", "Show hover" }, @@ -62,45 +108,6 @@ return {      setup = {},      config = {},    }, -  override = { -    "angularls", -    "ansiblels", -    "ccls", -    "csharp_ls", -    "cssmodules_ls", -    "denols", -    "ember", -    "emmet_ls", -    "eslint", -    "eslintls", -    "golangci_lint_ls", -    "grammarly", -    "graphql", -    "jedi_language_server", -    "ltex", -    "ocamlls", -    "phpactor", -    "psalm", -    "pylsp", -    "quick_lint_js", -    "reason_ls", -    "remark_ls", -    "rome", -    "scry", -    "solang", -    "solidity_ls", -    "sorbet", -    "sourcekit", -    "sourcery", -    "spectral", -    "sqlls", -    "sqls", -    "stylelint_lsp", -    "tailwindcss", -    "tflint", -    "verible", -    "vuels", -    "zeta_note", -    "zk", -  }, +  ---@deprecated use automatic_configuration.skipped_servers instead +  override = {},  } diff --git a/lua/lvim/lsp/manager.lua b/lua/lvim/lsp/manager.lua index 6c748020..09369d48 100644 --- a/lua/lvim/lsp/manager.lua +++ b/lua/lvim/lsp/manager.lua @@ -55,6 +55,7 @@ local function client_is_configured(server_name, ft)    local active_autocmds = vim.split(vim.fn.execute("autocmd FileType " .. ft), "\n")    for _, result in ipairs(active_autocmds) do      if result:match(server_name) then +      Log:debug(string.format("[%q] is already configured", server_name))        return true      end    end @@ -68,7 +69,6 @@ function M.setup(server_name, user_config)    vim.validate { name = { server_name, "string" } }    if lvim_lsp_utils.is_client_active(server_name) or client_is_configured(server_name) then -    Log:debug(string.format("[%q] is already configured. Ignoring repeated setup call.", server_name))      return    end @@ -77,9 +77,7 @@ function M.setup(server_name, user_config)    local servers = require "nvim-lsp-installer.servers"    local server_available, requested_server = servers.get_server(server_name) -  local is_overridden = vim.tbl_contains(lvim.lsp.override, server_name) - -  if not server_available or is_overridden then +  if not server_available then      pcall(function()        require("lspconfig")[server_name].setup(config)        buf_try_add(server_name) diff --git a/lua/lvim/lsp/templates.lua b/lua/lvim/lsp/templates.lua index eb05615e..38e68fb6 100644 --- a/lua/lvim/lsp/templates.lua +++ b/lua/lvim/lsp/templates.lua @@ -15,16 +15,22 @@ function M.remove_template_files()    end  end +local skipped_filetypes = lvim.lsp.automatic_configuration.skipped_filetypes +local skipped_servers = lvim.lsp.automatic_configuration.skipped_servers +  ---Generates an ftplugin file based on the server_name in the selected directory  ---@param server_name string name of a valid language server, e.g. pyright, gopls, tsserver, etc.  ---@param dir string the full path to the desired directory  function M.generate_ftplugin(server_name, dir) -  if vim.tbl_contains(lvim.lsp.override, server_name) then +  if vim.tbl_contains(skipped_servers, server_name) then      return    end -  -- we need to go through lspconfig to get the corresponding filetypes currently -  local filetypes = lvim_lsp_utils.get_supported_filetypes(server_name) or {} +  -- get the supported filetypes and remove any ignored ones +  local filetypes = vim.tbl_filter(function(ft) +    return not vim.tbl_contains(skipped_filetypes, ft) +  end, lvim_lsp_utils.get_supported_filetypes(server_name) or {}) +    if not filetypes then      return    end | 
