-- LANGUAGE SERVERS local lsp_zero = require('lsp-zero') local lsp_capabilities = require("cmp_nvim_lsp").default_capabilities() lsp_zero.on_attach(function(client, bufnr) -- see :help lsp-zero-keybindings -- to learn the available actions lsp_zero.default_keymaps({buffer = bufnr}) end) -- LUA vim.lsp.config('lua_ls', { settings = { Lua = { diagnostics = { -- Making sure that lua recognizes the global variable 'vim' globals = { 'vim', 'xplr' }, }, }, }, }) vim.lsp.enable('lua_ls') vim.g.zig_fmt_autosave = 0 -- RUST -- Must run `rustup default stable` and then `rustup component add rust-analyzer` -- upon first install vim.lsp.config('rust_analyzer', {}) vim.lsp.enable('rust_analyzer') vim.lsp.config('clangd', { capabilities = lsp_capabilities, }) vim.lsp.enable('clangd') vim.lsp.config('gopls', { settings = { gopls = { analyses = { unusedparams = true, }, staticcheck = true, gofumpt = true, }, }, }) vim.lsp.enable('gopls') vim.lsp.config('pylsp', { settings = { pylsp = { pylint = { enabled = true, executable = "pylint" }, }, }, }) vim.lsp.enable('pylsp') vim.keymap.set("n", "gf", ":GoFmt", { noremap = true, silent = true, desc = "Go Format" } ) -- AUTOCOMPLETION local cmp = require('cmp') local cmp_action = require('lsp-zero').cmp_action() cmp.setup({ sources = { { name = "luasnip", option = { show_autosnippets = true } }, { name = "nvim_lua" }, { name = "nvim_lsp" }, { name = "path" }, -- Auto complete paths }, mapping = { -- Navigate between completion item [''] = cmp.mapping.select_prev_item(), [''] = cmp.mapping.select_next_item(), -- toggle completion [''] = cmp_action.toggle_completion(), -- navigate between snippet placeholder [''] = cmp_action.luasnip_jump_backward(), [''] = cmp_action.luasnip_jump_forward(), -- Confirm item [''] = cmp.mapping.confirm({select = true}), } }) -- Show all diagnostics on current line in floating window vim.keymap.set("n", "gl", ":lua vim.diagnostic.open_float()", { noremap = true, silent = true }) vim.keymap.set("n", "le", ":LspStop", { desc = "LSP Stop" }) vim.keymap.set("n", "ls", ":LspStart", { desc = "LSP Start" }) vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, { desc = "Jump to definition" }) vim.keymap.set("n", "gD", function() vim.lsp.buf.declaration() end, { desc = "Jump to declaration" }) vim.keymap.set("n", "gt", function() vim.lsp.buf.type_definition() end, { desc = "Jump to type definition" })