lsp.lua 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. --
  2. -- lsp plugin setup
  3. --
  4. local lsp_zero = require('lsp-zero')
  5. lsp_zero.preset('recommended')
  6. lsp_zero.on_attach(function(client, bufnr)
  7. -- see :help lsp-zero-keybindings
  8. -- to learn the available actions
  9. lsp_zero.default_keymaps({buffer = bufnr})
  10. vim.keymap.set("i", "<C-h>", function() vim.lsp.buf.signature_help() end, opts)
  11. end)
  12. require('mason').setup({})
  13. require('mason-lspconfig').setup({
  14. -- Replace the language servers listed here
  15. -- with the ones you want to install
  16. ensure_installed = {'tsserver', 'rust_analyzer'},
  17. handlers = {
  18. lsp_zero.default_setup,
  19. lua_ls = function()
  20. local lua_opts = lsp_zero.nvim_lua_ls()
  21. require('lspconfig').lua_ls.setup(lua_opts)
  22. end,
  23. },
  24. })
  25. local cmp = require('cmp')
  26. local cmp_action = require('lsp-zero').cmp_action()
  27. cmp.setup({
  28. sources = {
  29. {name = 'nvim_lsp'},
  30. {name = 'buffer'},
  31. {name = 'path'},
  32. },
  33. window = {
  34. completion = cmp.config.window.bordered(),
  35. documentation = cmp.config.window.bordered(),
  36. },
  37. mapping = cmp.mapping.preset.insert({
  38. ['<C-p>'] = cmp.mapping.complete(),
  39. ['<C-f>'] = cmp_action.luasnip_jump_forward(),
  40. ['<C-b>'] = cmp_action.luasnip_jump_backward(),
  41. ['<C-u>'] = cmp.mapping.scroll_docs(-4),
  42. ["<CR>"] = cmp.mapping.confirm({
  43. behavior = cmp.ConfirmBehavior.Replace,
  44. select = true,
  45. }),
  46. ["<Tab>"] = cmp.mapping(cmp.mapping.select_next_item(), { "i", "s" }),
  47. ["<S-Tab>"] = cmp.mapping(cmp.mapping.select_prev_item(), { "i", "s" }),
  48. })
  49. })