vim.lsp.config('*', { capabilities = require("cmp_nvim_lsp").default_capabilities() }) vim.api.nvim_create_autocmd("LspAttach", { desc = "LSP actions", callback = function() local bufmap = function(mode, lhs, rhs) local opts = { buffer = true } vim.keymap.set(mode, lhs, rhs, opts) end -- Displays hover information about the symbol under the cursor bufmap('n', 'K', 'lua vim.lsp.buf.hover()') -- Jump to the definition bufmap('n', 'gd', 'lua vim.lsp.buf.definition()') -- Jump to declaration bufmap('n', 'gD', 'lua vim.lsp.buf.declaration()') -- Lists all the implementations for the symbol under the cursor bufmap('n', 'gi', 'lua vim.lsp.buf.implementation()') -- Jumps to the definition of the type symbol bufmap('n', 'go', 'lua vim.lsp.buf.type_definition()') -- Lists all the references bufmap('n', 'gr', 'lua vim.lsp.buf.references()') -- Displays a function's signature information bufmap('n', '', 'lua vim.lsp.buf.signature_help()') -- Renames all references to the symbol under the cursor bufmap('n', '', 'lua vim.lsp.buf.rename()') -- Selects a code action available at the current cursor position bufmap('n', '', 'lua vim.lsp.buf.code_action()') bufmap('x', '', 'lua vim.lsp.buf.range_code_action()') -- Show diagnostics in a floating window bufmap('n', 'gl', 'lua vim.diagnostic.open_float()') -- Move to the previous diagnostic bufmap('n', '[a', 'lua vim.diagnostic.goto_prev()') -- Move to the next diagnostic bufmap('n', ']a', 'lua vim.diagnostic.goto_next()') end }) vim.api.nvim_create_autocmd("BufWritePre", { callback = function() vim.lsp.buf.format() end }) vim.lsp.config("diagnosticls", { cmd = { "@diagnostic_server@/bin/diagnostic-languageserver", '--stdio' }, filetypes = { 'javascript', 'javascriptreact', 'typescript', 'typescriptreact', 'css', 'scss', 'markdown', 'pandoc', 'prisma' }, init_options = { linters = { eslint = { command = 'eslint', rootPatterns = { '.git', '.eslintrc.js' }, debounce = 100, args = { '--stdin', '--stdin-filename', '%filepath', '--format', 'json' }, sourceName = 'eslint', parseJson = { errorsRoot = '[0].messages', line = 'line', column = 'column', endLine = 'endLine', endColumn = 'endColumn', message = '[eslint] ${message} [${ruleId}]', security = 'severity' }, securities = { ['1'] = 'warning', ['2'] = 'error', } }, markdownlint = { command = 'markdownlint', rootPatterns = { '.git' }, isStderr = true, debounce = 100, args = { '--stdin' }, offsetLine = 0, offsetColumn = 0, sourceName = 'markdownlint', securities = { undefined = 'hint' }, formatLines = 1, formatPattern = { '^.*:(\\d+)\\s+(.*)$', { line = 1, column = -1, message = 2, } } } }, filetypes = { javascript = 'eslint', javascriptreact = 'eslint', typescript = 'eslint', typescriptreact = 'eslint', markdown = 'markdownlint', pandoc = 'markdownlint' }, formatters = { prettier = { command = 'prettier', args = { '--stdin-filepath', '%filename' } } }, formatFiletypes = { css = 'prettier', javascript = 'prettier', javascriptreact = 'prettier', json = 'prettier', scss = 'prettier', typescript = 'prettier', typescriptreact = 'prettier', markdown = 'prettier', -- This implies that you have installed a prisma-supporting plugin for -- prettier. You could instead configure this formatter to be `npx prisma format` -- directly, but that command doesn't seem to output in the way this -- diagnostic server expects. prisma = 'prettier' } } }); vim.lsp.enable("diagnosticls"); vim.lsp.config("elmls", {}) local capabilitiesWithoutFomatting = vim.lsp.protocol.make_client_capabilities() capabilitiesWithoutFomatting.textDocument.formatting = false capabilitiesWithoutFomatting.textDocument.rangeFormatting = false capabilitiesWithoutFomatting.textDocument.range_formatting = false vim.lsp.config("ts_ls", { cmd = { "typescript-language-server", '--stdio' }, init_options = { hostInfo = "neovim", maxTsServerMemory = "8192", preferences = { quotePreference = "single", allowIncompleteCompletions = false }, capabilities = capabilitiesWithoutFomatting } }) vim.lsp.config("elixirls", { cmd = { "elixir-ls" }, }) vim.lsp.config("nixd", { cmd = { "@nixd@/bin/nixd" }, }); vim.lsp.enable("nixd"); vim.lsp.config("rust_analyzer", {}) vim.lsp.config("lua_ls", { cmd = { "@lua_ls@/bin/lua-language-server" }, single_file_support = true, flags = { debounce_text_changes = 150, }, settings = { Lua = { diagnostics = { globals = { 'vim' } } } }, }) vim.lsp.config("texlab", {}) vim.lsp.config("gleam", {}) vim.lsp.config("dartls", {})