local lsp = require("lsp-zero") lsp.preset("recommended") require('mason').setup({}) require('mason-lspconfig').setup({ ensure_installed = { 'eslint', 'rust_analyzer', }, handlers = { function(server_name) require('lspconfig')[server_name].setup({}) end, }, }) local cmp = require('cmp') local cmp_select = { behavior = cmp.SelectBehavior.Select } cmp.setup({ sources = { {name = 'nvim_lsp'}, {name = 'cmp-buffer'}, {name = 'cmp-path'}, {name = 'copilot'}, }, mapping = cmp.mapping.preset.insert({ [''] = cmp.mapping.select_prev_item(cmp_select), [''] = cmp.mapping.select_next_item(cmp_select), [''] = cmp.mapping.confirm({select = true}), [''] = cmp.mapping.complete(), [''] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = false, }) }) }) lsp.set_preferences({ sign_icons = {} }) lsp.on_attach(function(client, bufnr) local opts = { buffer=bufnr, remap=false } vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts) vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts) vim.keymap.set("n", "vws", function() vim.lsp.workspace_symbol() end, opts) vim.keymap.set("n", "vd", function() vim.diagnostic.open_float() end, opts) vim.keymap.set("n", "[d", function() vim.diagnostic.goto_next() end, opts) vim.keymap.set("n", "]d", function() vim.diagnostic.goto_prev() end, opts) vim.keymap.set("n", "vca", function() vim.lsp.buf.code_action() end, opts) vim.keymap.set("n", "vrr", function() vim.lsp.buf.references() end, opts) vim.keymap.set("n", "vrn", function() vim.lsp.buf.rename() end, opts) vim.keymap.set("i", "", function() vim.lsp.buf.signature_help() end, opts) end) lsp.setup() -- require("lspconfig").gopls.setup({ -- -- your gopls setup -- })