completion.lua 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. vim.api.nvim_create_autocmd("LspAttach", {
  56. callback = function(args)
  57. local client = vim.lsp.get_client_by_id(args.data.client_id)
  58. if client == nil then return end
  59. if client:supports_method('textDocument/completion') then
  60. vim.lsp.completion.enable(true, client.id, args.buf,
  61. { autotrigger = false })
  62. end
  63. end
  64. })
  65. end
  66. }