0
0

completion.lua 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. return {
  2. "hrsh7th/nvim-cmp",
  3. dependencies = {
  4. "hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-buffer", "hrsh7th/cmp-path",
  5. "hrsh7th/cmp-cmdline", "hrsh7th/cmp-nvim-lua", "hrsh7th/cmp-calc",
  6. "hrsh7th/cmp-nvim-lsp-signature-help"
  7. },
  8. enabled = true,
  9. lazy = false,
  10. config = function(_, _)
  11. local cmp = require("cmp")
  12. local mapping = {
  13. ["<Tab>"] = function(fallback)
  14. if cmp.visible() then
  15. cmp.select_next_item(
  16. { behavior = cmp.SelectBehavior.Select })
  17. else
  18. fallback()
  19. end
  20. end,
  21. ["<S-Tab>"] = function(fallback)
  22. if cmp.visible() then
  23. cmp.select_prev_item(
  24. { behavior = cmp.SelectBehavior.Select })
  25. else
  26. fallback()
  27. end
  28. end,
  29. ["<CR>"] = function(fallback)
  30. if cmp.visible() and cmp.get_active_entry() then
  31. cmp.confirm({ behavior = cmp.ConfirmBehavior.Replace })
  32. else
  33. fallback()
  34. end
  35. end
  36. }
  37. cmp.setup({
  38. snippet = {},
  39. mapping = mapping,
  40. sources = cmp.config.sources({ { name = "nvim_lsp" } }, {
  41. { name = "buffer" }, { name = "nvim_lua" }, { name = "calc" },
  42. { name = "nvim_lsp_signature_help" }, { name = "path" }
  43. })
  44. })
  45. cmp.setup.cmdline("/", {
  46. mapping = cmp.mapping.preset.cmdline(),
  47. sources = { { name = "buffer" } }
  48. })
  49. cmp.setup.cmdline(":", {
  50. mapping = cmp.mapping.preset.cmdline(),
  51. sources = cmp.config.sources({ { name = "path" } }, {
  52. { name = "cmdline", option = { ignore_cmds = { "Man", "!" } } }
  53. })
  54. })
  55. end
  56. }