Something went wrong. Try again.
nvim dot files
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141return { { "williamboman/mason.nvim", config = function() require('mason').setup() end },
{ "williamboman/mason-lspconfig.nvim", dependencies = { "williamboman/mason.nvim" }, opts = { ensure_installed = { "pyright", "rust_analyzer", "zls", "intelephense", "clangd", "lua_ls", "gopls" }, automatic_enable = false, }, },
{ "neovim/nvim-lspconfig", config = function() local lspconfig = require('lspconfig') local capabilities = require('cmp_nvim_lsp').default_capabilities()
local on_attach = function(client, bufnr) local bufopts = { noremap = true, silent = true, buffer = bufnr } vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts) vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts) vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, bufopts)
vim.keymap.set({'n','v'}, '<space>ca', vim.lsp.buf.code_action, bufopts)
vim.keymap.set({'n','v'}, '<space>f', function() vim.lsp.buf.format({ async = true, bufnr = bufnr }) end, bufopts) end
lspconfig.pyright.setup({ on_attach = on_attach, capabilities = capabilities }) lspconfig.intelephense.setup({ on_attach = on_attach, capabilities = capabilities }) lspconfig.clangd.setup({ on_attach = on_attach, capabilities = capabilities,
-- let clangd handle nix devshells injecting -isystem paths through $NIX_CFLAGS_COMPILE cmd = { "clangd", "--background-index", "--query-driver=/nix/store/**" }, }) lspconfig.lua_ls.setup({ on_attach = on_attach, capabilities = capabilities })
lspconfig.gopls.setup({ on_attach = on_attach, capabilities = capabilities, settings = { gopls = { analyses = { unusedparams = true, }, staticcheck = true, gofumpt = true, }, }, })
lspconfig.rust_analyzer.setup({ on_attach = on_attach, capabilities = capabilities, settings = { ["rust-analyzer"] = { imports = { granularity = { group = "module", }, prefix = "self", }, cargo = { buildScripts = { enable = true, }, }, procMacro = { enable = true }, } } })
lspconfig.zls.setup({ on_attach = on_attach, capabilities = capabilities, settings = { zls = { zig_exe_path = vim.fn.exepath('zig') ~= '' and vim.fn.exepath('zig') or nil, } } }) end, },
{ 'hrsh7th/nvim-cmp', dependencies = { 'hrsh7th/cmp-nvim-lsp', 'hrsh7th/cmp-buffer', 'hrsh7th/cmp-path', 'L3MON4D3/LuaSnip', }, config = function() local cmp = require('cmp') local luasnip = require('luasnip')
cmp.setup({ snippet = { expand = function(args) luasnip.lsp_expand(args.body) end, }, mapping = cmp.mapping.preset.insert({ ['<C-b>'] = cmp.mapping.scroll_docs(-4), ['<C-f>'] = cmp.mapping.scroll_docs(4), ['<C-Space>'] = cmp.mapping.complete(), ['<C-e>'] = cmp.mapping.abort(), ['<CR>'] = cmp.mapping.confirm({ select = true }), ['<C-p>'] = cmp.mapping.select_prev_item(), ['<C-n>'] = cmp.mapping.select_next_item(), }), sources = cmp.config.sources({ {name = 'nvim_lsp' }, {name = 'luasnip' }, {name = 'buffer' }, {name = 'path' }, }) }) end, },}