diff options
Diffstat (limited to 'lua')
-rw-r--r-- | lua/lvim/config/init.lua | 3 | ||||
-rw-r--r-- | lua/lvim/config/supported_languages.lua | 95 | ||||
-rw-r--r-- | lua/lvim/interface/popup.lua | 4 | ||||
-rw-r--r-- | lua/lvim/lsp/manager.lua | 1 | ||||
-rw-r--r-- | lua/lvim/lsp/templates.lua | 1 | ||||
-rw-r--r-- | lua/lvim/lsp/utils.lua | 21 |
6 files changed, 23 insertions, 102 deletions
diff --git a/lua/lvim/config/init.lua b/lua/lvim/config/init.lua index fba6213d..9b6d36f0 100644 --- a/lua/lvim/config/init.lua +++ b/lua/lvim/config/init.lua @@ -40,8 +40,7 @@ function M:init() local lvim_lsp_config = require "lvim.lsp.config" lvim.lsp = apply_defaults(lvim.lsp, vim.deepcopy(lvim_lsp_config)) - local supported_languages = require "lvim.config.supported_languages" - require("lvim.lsp.manager").init_defaults(supported_languages) + require("lvim.lsp.manager").init_defaults() end local function handle_deprecated_settings() diff --git a/lua/lvim/config/supported_languages.lua b/lua/lvim/config/supported_languages.lua deleted file mode 100644 index ce5bc0db..00000000 --- a/lua/lvim/config/supported_languages.lua +++ /dev/null @@ -1,95 +0,0 @@ -return { - "asm", - "bash", - "beancount", - "bibtex", - "bicep", - "c", - "c_sharp", - "clojure", - "cmake", - "comment", - "commonlisp", - "cpp", - "crystal", - "cs", - "css", - "cuda", - "d", - "dart", - "dockerfile", - "dot", - "elixir", - "elm", - "emmet", - "erlang", - "fennel", - "fish", - "fortran", - "fsharp", - "gdscript", - "glimmer", - "go", - "gomod", - "graphql", - "haskell", - "hcl", - "heex", - "html", - "java", - "javascript", - "javascriptreact", - "jsdoc", - "json", - "json5", - "jsonc", - "julia", - "kotlin", - "latex", - "ledger", - "less", - "lua", - "markdown", - "nginx", - "nix", - "ocaml", - "ocaml_interface", - "perl", - "php", - "pioasm", - "ps1", - "puppet", - "python", - "ql", - "query", - "r", - "regex", - "rst", - "ruby", - "rust", - "scala", - "scss", - "sh", - "solidity", - "sparql", - "sql", - "supercollider", - "surface", - "svelte", - "swift", - "tailwindcss", - "terraform", - "tex", - "tlaplus", - "toml", - "tsx", - "turtle", - "typescript", - "typescriptreact", - "verilog", - "vim", - "vue", - "yaml", - "yang", - "zig", -} diff --git a/lua/lvim/interface/popup.lua b/lua/lvim/interface/popup.lua index b628125c..6587f5d4 100644 --- a/lua/lvim/interface/popup.lua +++ b/lua/lvim/interface/popup.lua @@ -43,7 +43,9 @@ end -- @param content_provider A function accepting the popup's layout and returning the content to display function Popup:display(content_provider) self.win_id = vim.api.nvim_open_win(self.buffer, true, self.layout) - vim.lsp.util.close_preview_autocmd({ "BufHidden", "BufLeave" }, self.win_id) + vim.api.nvim_command( + string.format("autocmd BufHidden,BufLeave <buffer> ++once lua pcall(vim.api.nvim_win_close, %d, true)", self.win_id) + ) local lines = content_provider(self.layout) vim.api.nvim_buf_set_lines(self.bufnr, 0, -1, false, lines) diff --git a/lua/lvim/lsp/manager.lua b/lua/lvim/lsp/manager.lua index 7a35f1ff..c95b9f69 100644 --- a/lua/lvim/lsp/manager.lua +++ b/lua/lvim/lsp/manager.lua @@ -4,6 +4,7 @@ local Log = require "lvim.core.log" local lvim_lsp_utils = require "lvim.lsp.utils" function M.init_defaults(languages) + languages = languages or lvim_lsp_utils.get_all_supported_filetypes() for _, entry in ipairs(languages) do if not lvim.lang[entry] then lvim.lang[entry] = { diff --git a/lua/lvim/lsp/templates.lua b/lua/lvim/lsp/templates.lua index 3478f4fb..eb05615e 100644 --- a/lua/lvim/lsp/templates.lua +++ b/lua/lvim/lsp/templates.lua @@ -53,6 +53,7 @@ function M.generate_templates(servers_names) for _, server in pairs(available_servers) do table.insert(servers_names, server.name) + table.sort(servers_names) end end diff --git a/lua/lvim/lsp/utils.lua b/lua/lvim/lsp/utils.lua index df3846ce..6d1ed09c 100644 --- a/lua/lvim/lsp/utils.lua +++ b/lua/lvim/lsp/utils.lua @@ -49,12 +49,15 @@ function M.get_client_capabilities(client_id) return enabled_caps end +---Get supported filetypes per server +---@param server_name string can be any server supported by nvim-lsp-installer +---@return table supported filestypes as a list of strings function M.get_supported_filetypes(server_name) - -- temporary workaround: https://github.com/neovim/nvim-lspconfig/pull/1358 - if server_name == "dockerls" then - return { "dockerfile" } + local status_ok, lsp_installer_servers = pcall(require, "nvim-lsp-installer.servers") + if not status_ok then + return {} end - local lsp_installer_servers = require "nvim-lsp-installer.servers" + local server_available, requested_server = lsp_installer_servers.get_server(server_name) if not server_available then return {} @@ -63,4 +66,14 @@ function M.get_supported_filetypes(server_name) return requested_server:get_supported_filetypes() end +---Get all supported filetypes by nvim-lsp-installer +---@return table supported filestypes as a list of strings +function M.get_all_supported_filetypes() + local status_ok, lsp_installer_filetypes = pcall(require, "nvim-lsp-installer._generated.filetype_map") + if not status_ok then + return {} + end + return vim.tbl_keys(lsp_installer_filetypes or {}) +end + return M |