return { { 'neovim/nvim-lspconfig', config = function() local capabilities = require('cmp_nvim_lsp').default_capabilities() local wk = require('which-key') vim.lsp.enable('ocamllsp') vim.lsp.config('ocamllsp', { capabilities = capabilities }) vim.lsp.enable('tinymist') vim.lsp.config('tinymist', { settings = { formatterMode = "typstyle", exportPdf = "onType", semanticTokens = "disable", } }) vim.lsp.enable('millet') vim.lsp.config('millet', { root_dir = function(fname) local util = vim.lsp.config.util return util.root_pattern(".cm", ".mlb")(fname) or util.path.dirname(fname) end }) vim.lsp.enable('clangd') vim.lsp.config('clangd', { capabilities = capabilities }) vim.lsp.enable('zls') vim.lsp.config('zls', { capabilities = capabilities }) vim.api.nvim_create_autocmd('LspAttach', { group = vim.api.nvim_create_augroup('UserLspConfig', {}), callback = function(ev) local builtin = require('telescope.builtin') wk.add({ { 'gD', vim.lsp.buf.declaration, desc = 'Go to declaration' }, { 'gR', builtin.lsp_references, desc = 'Go to references' }, { 'gd', builtin.lsp_definitions, desc = 'Go to definition' }, { 'l', group = 'lsp' }, { 'la', vim.lsp.buf.code_action, desc = 'Code actions' }, { 'lr', vim.lsp.buf.rename, desc = 'Rename' }, { 'lf', vim.lsp.buf.format, desc = 'Format' }, { 'le', vim.diagnostic.open_float, desc = 'Show line diagnostics' }, { '[d', vim.diagnostic.goto_prev, desc = 'Go to previous diagnostic' }, { '[d', vim.diagnostic.goto_next, desc = 'Go to next diagnostic' }, }) end }) end, dependencies = { 'ray-x/lsp_signature.nvim', 'hrsh7th/nvim-cmp', } }, { 'ray-x/lsp_signature.nvim', event = 'VeryLazy', opts = { hind_prefix = 'λ ', }, }, { 'j-hui/fidget.nvim', config = true, event = 'VeryLazy', }, { 'onsails/lspkind.nvim', event = 'VeryLazy', } }