return { { "neovim/nvim-lspconfig", opts = { servers = { rust_analyzer = {}, taplo = { keys = { { "K", function() if vim.fn.expand("%:t") == "Cargo.toml" and require("crates").popup_available() then require("crates").show_popup() else vim.lsp.buf.hover() end end, desc = "Show Crate Documentation", }, }, }, }, -- setup = { -- rust_analyzer = function() -- return true -- end, -- }, }, }, { "nvim-treesitter/nvim-treesitter", ---@type TSConfig ---@diagnostic disable-next-line: missing-fields opts = { ensure_installed = { "bash", "c", "diff", "html", "javascript", "jsdoc", "json", "jsonc", "lua", "luadoc", "luap", "markdown", "markdown_inline", "python", "query", "regex", "toml", "tsx", "typescript", "vim", "vimdoc", "yaml", "nix", }, }, }, { "stevearc/conform.nvim", ---@class ConformOpts opts = { ---@type table formatters_by_ft = { nix = { "alejandra" }, javascript = { { "prettierd", "prettier" } }, javascriptreact = { { "prettierd", "prettier" } }, typescript = { { "prettierd", "prettier" } }, typescriptreact = { { "prettierd", "prettier" } }, yaml = { { "prettierd", "prettier" } }, css = { { "prettierd", "prettier" } }, }, }, }, { "rush-rs/tree-sitter-asm", }, { "imsnif/kdl.vim", }, { "andreshazard/vim-freemarker", }, }