1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- local lsp = require("lsp-zero")
- lsp.preset("recommended")
- lsp.ensure_installed({
- 'tsserver',
- 'eslint',
- 'sumneko_lua',
- 'rust_analyzer',
- 'pylsp',
- 'nimls',
- 'bashls',
- 'jsonls',
- 'clangd'
- })
- local cmp = require('cmp')
- local luasnip = require('luasnip')
- local cmp_select = {behavior = cmp.SelectBehavior.Select}
- local cmp_mappings = lsp.defaults.cmp_mappings({
- ['K'] = cmp.mapping.select_prev_item(cmp_select),
- ['J'] = cmp.mapping.select_next_item(cmp_select),
- ['<C-y>'] = cmp.mapping.confirm({select =true}),
- ['<C-Space>'] = cmp.mapping.complete(),
- -- the next two mappings are for usin Tab and S-Tab for
- -- navigating inside of snippets
- ['<Tab>'] = cmp.mapping(function(fallback)
- if cmp.visible() then
- cmp.select_next_item()
- elseif luasnip.expand_or_jumpable() then
- luasnip.expand_or_jump()
- elseif has_words_before() then
- cmp.complete()
- else
- fallback()
- end
- end, { "i", "s" }),
- ["<S-Tab>"] = cmp.mapping(function(fallback)
- if cmp.visible() then
- cmp.select_prev_item()
- elseif luasnip.jumpable(-1) then
- luasnip.jump(-1)
- else
- fallback()
- end
- end, { "i", "s" }),
- })
- lsp.set_preferences({
- sign_icons = {}
- })
- lsp.on_attach(function(client, bufnr)
- local opts = {buffer = bufnr, remap = false}
- vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts)
- vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts)
- vim.keymap.set("n", "gt", function() vim.lsp.buf.type_definition() end, opts)
- vim.keymap.set("n", "gi", function() vim.lsp.buf.implementation() end, opts)
- vim.keymap.set("n", "<leader>r", function() vim.lsp.buf.rename() end, opts)
- end)
- -- Enable the custom keymappings
- lsp.setup_nvim_cmp({
- mapping = cmp_mappings
- })
- lsp.setup()
|