completions.lua 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. return {
  2. {
  3. "hrsh7th/cmp-nvim-lsp",
  4. lazy = false,
  5. config = true,
  6. },
  7. {
  8. "L3MON4D3/LuaSnip",
  9. lazy = false,
  10. dependencies = {
  11. "saadparwaiz1/cmp_luasnip",
  12. "rafamadriz/friendly-snippets",
  13. },
  14. config = function()
  15. require("luasnip.loaders.from_vscode").lazy_load()
  16. require("luasnip.loaders.from_vscode").load({ paths = { "~/.config/nvim/snippets" } })
  17. end,
  18. },
  19. {
  20. "hrsh7th/nvim-cmp",
  21. lazy = false,
  22. config = function()
  23. local cmp = require("cmp")
  24. cmp.setup({
  25. snippet = {
  26. expand = function(args)
  27. require("luasnip").lsp_expand(args.body)
  28. end,
  29. },
  30. window = {
  31. completion = cmp.config.window.bordered(),
  32. documentation = cmp.config.window.bordered(),
  33. },
  34. mapping = cmp.mapping.preset.insert({
  35. ["<Tab>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
  36. ["<S-Tab>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
  37. ["<C-b>"] = cmp.mapping.scroll_docs(-4),
  38. ["<C-f>"] = cmp.mapping.scroll_docs(4),
  39. ["<C-Space>"] = cmp.mapping.complete(),
  40. ["<C-e>"] = cmp.mapping.abort(),
  41. ["<CR>"] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
  42. }),
  43. sources = cmp.config.sources({
  44. { name = "nvim_lsp" },
  45. { name = "luasnip" },
  46. }, {
  47. { name = "buffer" },
  48. }),
  49. })
  50. end,
  51. },
  52. }