my neovim config, who would've thought
at main 1.7 kB view raw
1local u = require "core.utils" 2 3vim.lsp.enable { 4 "elmls", 5 "gleam", 6 "golangci_lint_ls", 7 "gopls", 8 "jsonls", 9 "lua_ls", 10 "markdown_oxide", 11 "ts_ls", 12 "yamlls", 13} 14 15vim.api.nvim_create_user_command("LspRestart", function(opts) 16 vim.lsp.enable(opts.args, false) 17 vim.lsp.enable(opts.args, true) 18end, { nargs = 1, complete = u.lsp.get_clients }) 19 20u.aucmd("LspAttach", { 21 group = u.augroup "lsp", 22 callback = function(args) 23 local bufnr = args.buf 24 local client = vim.lsp.get_client_by_id(args.data.client_id) 25 if not client then 26 error "couldn't get an lsp server" 27 end 28 29 if 30 client:supports_method(vim.lsp.protocol.Methods.textDocument_codeLens) 31 then 32 vim.lsp.codelens.refresh { bufnr = bufnr } 33 end 34 35 u.map("n", "<leader>lf", function() 36 vim.lsp.buf.format { async = true } 37 end, bufnr) 38 39 u.map("n", "gd", Snacks.picker.lsp_definitions, bufnr) 40 u.map("n", "gr", Snacks.picker.lsp_references, bufnr) 41 u.map("n", "gi", Snacks.picker.lsp_implementations, bufnr) 42 u.map("n", "gl", vim.diagnostic.open_float, bufnr) 43 u.map("n", "<leader>la", vim.lsp.buf.code_action, bufnr) 44 u.map("n", "<leader>lr", vim.lsp.buf.rename, bufnr) 45 u.map("n", "<leader>ll", vim.lsp.codelens.run, bufnr) 46 u.map("n", "<leader>ls", Snacks.picker.lsp_symbols) 47 u.map("n", "<leader>lS", Snacks.picker.lsp_workspace_symbols) 48 u.map("n", "<leader>li", function() 49 if vim.lsp.inlay_hint.is_enabled { bufnr = bufnr } then 50 vim.lsp.inlay_hint.enable(false, { bufnr = bufnr }) 51 vim.print "Inlay hints disabled" 52 else 53 vim.lsp.inlay_hint.enable(true, { bufnr = bufnr }) 54 vim.print "Inlay hints enabled" 55 end 56 end, bufnr) 57 end, 58})