return { { "williamboman/mason.nvim", config = function() require("mason").setup() end, }, { "williamboman/mason-lspconfig.nvim", config = function() require("mason-lspconfig").setup({ ensure_installed = { "lua_ls", "tsserver", "ts_ls", "tinymist", "marksman", "html", "r_language_server", }, -- IMPORTANT: let rustaceanvim manage rust-analyzer automatic_enable = { exclude = { "rust_analyzer" }, }, }) end, }, { "neovim/nvim-lspconfig", config = function() local capabilities = require("cmp_nvim_lsp").default_capabilities() -- lua_ls vim.lsp.config("lua_ls", { capabilities = capabilities, }) -- R vim.lsp.config("r_language_server", { capabilities = capabilities, }) -- Markdown vim.lsp.config("marksman", { capabilities = capabilities, }) -- HTML vim.lsp.config("html", { capabilities = capabilities, }) -- Typst / tinymist vim.lsp.config("tinymist", { capabilities = capabilities, offset_encoding = "utf-8", root_dir = function(filename, bufnr) return vim.fn.getcwd() end, settings = { tinymist = { settings = { formatterMode = "typstfmt", }, }, }, }) -- Typescript (ts_ls) vim.lsp.config("ts_ls", { -- capabilities = capabilities, init_options = { plugins = {}, }, filetypes = { "javascript", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx", }, }) -- finally, enable the servers vim.lsp.enable({ "lua_ls", "r_language_server", "marksman", "html", "tinymist", "ts_ls", -- "rust_analyzer", -- rustaceanvim config the LSP }) end, }, }