require("lsp-format").setup({}) local on_attach = function(client, bufnr) local bufmap = function(keys, func) vim.keymap.set("n", keys, func, { buffer = bufnr }) end bufmap("r", vim.lsp.buf.rename) bufmap("a", vim.lsp.buf.code_action) bufmap("gd", vim.lsp.buf.definition) bufmap("gD", vim.lsp.buf.declaration) bufmap("gI", vim.lsp.buf.implementation) bufmap("D", vim.lsp.buf.type_definition) bufmap("gr", require("telescope.builtin").lsp_references) bufmap("s", require("telescope.builtin").lsp_document_symbols) bufmap("S", require("telescope.builtin").lsp_dynamic_workspace_symbols) bufmap("K", vim.lsp.buf.hover) vim.api.nvim_buf_create_user_command(bufnr, "Format", function(_) vim.lsp.buf.format() end, {}) end local capabilities = vim.lsp.protocol.make_client_capabilities() capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities) require("neodev").setup() require("lspconfig").nil_ls.setup({ on_attach = on_attach, capabilities = capabilities, }) require("lspconfig").pyright.setup({ on_attach = on_attach, capabilities = capabilities, }) require("lspconfig").gopls.setup({ on_attach = on_attach, capabilities = capabilities, }) require("lspconfig").terraformls.setup({ on_attach = on_attach, capabilities = capabilities, }) -- require'lspconfig'.efm.setup { -- on_attach = require("lsp-format").on_attach, -- init_options = {documentFormatting = true}, -- settings = { -- languages = { -- lua = {{formatCommand = "lua-format -i", formatStdin = true}}, -- nix = {{formatCommand = "nixfmt", formatStdin = true}} -- } -- }, -- filetypes = {"lua", "nix"} -- }