diff options
| author | William Boman <william@redwill.se> | 2021-10-23 02:02:29 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-23 02:02:29 +0200 |
| commit | 1ad71df31d399fe13df253167283032fb7f28020 (patch) | |
| tree | 0f7c9df338f0388695c6b7bfaa0ef550ab0cd6c9 /lua | |
| parent | Revert "access environ via vim.loop" (diff) | |
| download | mason-1ad71df31d399fe13df253167283032fb7f28020.tar mason-1ad71df31d399fe13df253167283032fb7f28020.tar.gz mason-1ad71df31d399fe13df253167283032fb7f28020.tar.bz2 mason-1ad71df31d399fe13df253167283032fb7f28020.tar.lz mason-1ad71df31d399fe13df253167283032fb7f28020.tar.xz mason-1ad71df31d399fe13df253167283032fb7f28020.tar.zst mason-1ad71df31d399fe13df253167283032fb7f28020.zip | |
map filetype to servers, promote relevant servers in the UI (#190)
Uninstalled servers that map to a filetype that is open in any buffer will be hoisted in
the UI list.
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/nvim-lsp-installer/_generated/filetype_map.lua | 103 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/ui/status-win/init.lua | 51 |
2 files changed, 143 insertions, 11 deletions
diff --git a/lua/nvim-lsp-installer/_generated/filetype_map.lua b/lua/nvim-lsp-installer/_generated/filetype_map.lua new file mode 100644 index 00000000..78f9da0c --- /dev/null +++ b/lua/nvim-lsp-installer/_generated/filetype_map.lua @@ -0,0 +1,103 @@ +-- THIS FILE IS GENERATED. DO NOT EDIT MANUALLY. +-- stylua: ignore start +return { + Dockerfile = { "dockerls" }, + aspnetcorerazor = { "tailwindcss" }, + astro = { "tailwindcss" }, + ["astro-markdown"] = { "tailwindcss" }, + bib = { "texlab", "ltex" }, + bicep = { "bicep" }, + blade = { "tailwindcss" }, + c = { "clangd" }, + clojure = { "clojure_lsp" }, + cmake = { "cmake" }, + cpp = { "clangd" }, + cs = { "omnisharp" }, + css = { "tailwindcss", "emmet_ls", "cssls", "stylelint_lsp" }, + d = { "serve_d" }, + ["django-html"] = { "tailwindcss" }, + dockerfile = { "dockerls" }, + dot = { "dotls" }, + edge = { "tailwindcss" }, + edn = { "clojure_lsp" }, + eelixir = { "tailwindcss", "elixirls" }, + ejs = { "tailwindcss" }, + elixir = { "elixirls" }, + elm = { "elmls" }, + erb = { "tailwindcss" }, + erlang = { "erlangls" }, + eruby = { "tailwindcss" }, + fortran = { "fortls" }, + genie = { "vala_ls" }, + go = { "gopls" }, + gohtml = { "tailwindcss" }, + gomod = { "gopls" }, + graphql = { "graphql" }, + groovy = { "groovyls" }, + haml = { "tailwindcss" }, + handlebars = { "tailwindcss", "ember" }, + haskell = { "hls" }, + hbs = { "tailwindcss" }, + html = { "html", "tailwindcss", "angularls", "emmet_ls" }, + ["html-eex"] = { "tailwindcss" }, + jade = { "tailwindcss" }, + java = { "jdtls" }, + javascript = { "eslintls", "tailwindcss", "eslint", "denols", "ember", "rome", "stylelint_lsp", "tsserver" }, + ["javascript.jsx"] = { "eslint", "denols", "tsserver" }, + javascriptreact = { "eslintls", "tailwindcss", "eslint", "denols", "graphql", "rome", "stylelint_lsp", "tsserver" }, + json = { "jsonls", "rome" }, + kotlin = { "kotlin_language_server" }, + leaf = { "tailwindcss" }, + less = { "tailwindcss", "cssls", "stylelint_lsp" }, + lhaskell = { "hls" }, + liquid = { "tailwindcss" }, + lua = { "sumneko_lua" }, + markdown = { "tailwindcss", "ltex" }, + mdx = { "tailwindcss" }, + mustache = { "tailwindcss" }, + mysql = { "sqlls", "sqls" }, + njk = { "tailwindcss" }, + nunjucks = { "tailwindcss" }, + objc = { "clangd" }, + objcpp = { "clangd" }, + ocaml = { "ocamlls" }, + php = { "intelephense", "phpactor", "tailwindcss" }, + postcss = { "tailwindcss" }, + prisma = { "prismals" }, + ps1 = { "powershell_es" }, + puppet = { "puppet" }, + purescript = { "purescriptls" }, + python = { "pyright", "jedi_language_server", "pylsp" }, + razor = { "tailwindcss" }, + reason = { "tailwindcss", "ocamlls" }, + rescript = { "tailwindcss", "rescriptls" }, + ruby = { "solargraph" }, + rust = { "rust_analyzer" }, + sass = { "tailwindcss" }, + scss = { "tailwindcss", "cssls", "stylelint_lsp" }, + sh = { "bashls" }, + slim = { "tailwindcss" }, + solidity = { "solang" }, + sql = { "sqlls", "sqls" }, + stylus = { "tailwindcss" }, + sugarss = { "tailwindcss", "stylelint_lsp" }, + svelte = { "tailwindcss", "svelte" }, + svg = { "lemminx" }, + terraform = { "terraformls", "tflint" }, + tex = { "texlab", "ltex" }, + twig = { "tailwindcss" }, + typescript = { "eslintls", "tailwindcss", "eslint", "angularls", "denols", "ember", "rome", "stylelint_lsp", "tsserver" }, + ["typescript.tsx"] = { "eslint", "angularls", "denols", "rome", "tsserver" }, + typescriptreact = { "eslintls", "tailwindcss", "eslint", "angularls", "denols", "graphql", "rome", "stylelint_lsp", "tsserver" }, + vala = { "vala_ls" }, + vb = { "omnisharp" }, + vim = { "vimls" }, + vue = { "tailwindcss", "eslint", "stylelint_lsp", "volar", "vuels" }, + wxss = { "stylelint_lsp" }, + xml = { "lemminx" }, + xsd = { "lemminx" }, + yaml = { "yamlls", "ansiblels" }, + ["yaml.ansible"] = { "ansiblels" }, + zig = { "zls" }, + zir = { "zls" } +}
\ No newline at end of file diff --git a/lua/nvim-lsp-installer/ui/status-win/init.lua b/lua/nvim-lsp-installer/ui/status-win/init.lua index 3d582111..3eb7b206 100644 --- a/lua/nvim-lsp-installer/ui/status-win/init.lua +++ b/lua/nvim-lsp-installer/ui/status-win/init.lua @@ -5,6 +5,7 @@ local Data = require "nvim-lsp-installer.data" local display = require "nvim-lsp-installer.ui.display" local settings = require "nvim-lsp-installer.settings" local lsp_servers = require "nvim-lsp-installer.servers" +local filetype_map = require "nvim-lsp-installer._generated.filetype_map" local HELP_KEYMAP = "?" local CLOSE_WINDOW_KEYMAP_1 = "<Esc>" @@ -201,9 +202,9 @@ local function ServerMetadata(server) )) end -local function InstalledServers(servers, expanded_server) +local function InstalledServers(servers, props) return Ui.Node(Data.list_map(function(server) - local is_expanded = expanded_server == server.name + local is_expanded = props.expanded_server == server.name return Ui.Node { Ui.HlTextNode { Data.list_not_nil( @@ -273,15 +274,20 @@ local function PendingServers(servers) end, servers)) end -local function UninstalledServers(servers, expanded_server) +local function UninstalledServers(servers, props) return Ui.Node(Data.list_map(function(server) - local is_expanded = expanded_server == server.name + local is_prioritized = props.prioritized_servers[server.name] + local is_expanded = props.expanded_server == server.name return Ui.Node { Ui.HlTextNode { Data.list_not_nil( - { settings.current.ui.icons.server_uninstalled, "LspInstallerMuted" }, + { + settings.current.ui.icons.server_uninstalled, + is_prioritized and "LspInstallerHighlighted" or "LspInstallerMuted", + }, { " " .. server.name, "LspInstallerMuted" }, - Data.when(server.uninstaller.has_run, { " (uninstalled)", "Comment" }) + Data.when(server.uninstaller.has_run, { " (uninstalled)", "Comment" }), + Data.when(server.deprecated, { " deprecated", "LspInstallerOrange" }) ), }, Ui.Keybind(settings.current.ui.keymaps.toggle_server_expand, "EXPAND_SERVER", { server.name }), @@ -311,13 +317,13 @@ local function ServerGroup(props) count = total_server_count, }, Indent(Data.list_map(function(servers) - return props.renderer(servers, props.expanded_server) + return props.renderer(servers, props) end, props.servers)), } end) end -local function Servers(servers, expanded_server) +local function Servers(servers, expanded_server, prioritized_servers) local grouped_servers = { installed = {}, queued = {}, @@ -325,6 +331,7 @@ local function Servers(servers, expanded_server) uninstall_failed = {}, installing = {}, install_failed = {}, + uninstalled_prioritized = {}, uninstalled = {}, session_uninstalled = {}, } @@ -350,7 +357,11 @@ local function Servers(servers, expanded_server) elseif server.installer.has_run then grouped_servers.install_failed[#grouped_servers.install_failed + 1] = server else - grouped_servers.uninstalled[#grouped_servers.uninstalled + 1] = server + if prioritized_servers[server.name] then + grouped_servers.uninstalled_prioritized[#grouped_servers.uninstalled_prioritized + 1] = server + else + grouped_servers.uninstalled[#grouped_servers.uninstalled + 1] = server + end end end @@ -376,8 +387,13 @@ local function Servers(servers, expanded_server) ServerGroup { title = "Available servers", renderer = UninstalledServers, - servers = { grouped_servers.session_uninstalled, grouped_servers.uninstalled }, + servers = { + grouped_servers.session_uninstalled, + grouped_servers.uninstalled_prioritized, + grouped_servers.uninstalled, + }, expanded_server = expanded_server, + prioritized_servers = prioritized_servers, }, } end @@ -427,7 +443,7 @@ local function init(all_servers) return Help(state.is_current_settings_expanded, state.vader_saber_ticks) end), Ui.When(not state.is_showing_help, function() - return Servers(state.servers, state.expanded_server) + return Servers(state.servers, state.expanded_server, state.prioritized_servers) end), } end) @@ -441,6 +457,7 @@ local function init(all_servers) local mutate_state, get_state = window.init { servers = servers, is_showing_help = false, + prioritized_servers = {}, expanded_server = nil, help_command_text = "", -- for "animating" the ":help" text when toggling the help window vader_saber_ticks = 0, -- for "animating" the cowthvader lightsaber @@ -658,8 +675,20 @@ local function init(all_servers) } local function open() + local current_buf = vim.fn.bufnr "%" + local open_filetypes = vim.split(vim.api.nvim_exec([[ bufdo echo &filetype ]], true), "\n") + vim.cmd(("buffer %d"):format(current_buf)) + local prioritized_servers = {} + + for _, filetype in ipairs(open_filetypes) do + if filetype_map[filetype] then + vim.list_extend(prioritized_servers, filetype_map[filetype]) + end + end + mutate_state(function(state) state.is_showing_help = false + state.prioritized_servers = Data.set_of(prioritized_servers) end) window.open { |
