Advertisement
Rid1-fz-06

Untitled

Nov 17th, 2024
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.36 KB | Source Code | 0 0
  1. return {
  2.     {
  3.         "hrsh7th/cmp-vsnip",
  4.         dependencies = {
  5.             "hrsh7th/vim-vsnip",
  6.             "rafamadriz/friendly-snippets",
  7.         },
  8.     },
  9.     {
  10.         "hrsh7th/nvim-cmp",
  11.         dependencies = {
  12.             "onsails/lspkind.nvim",
  13.             "hrsh7th/cmp-path",
  14.             "hrsh7th/cmp-buffer",
  15.             "hrsh7th/cmp-nvim-lua",
  16.             "hrsh7th/cmp-cmdline",
  17.             "hrsh7th/cmp-nvim-lsp",
  18.         },
  19.         config = function()
  20.             local has_words_before = function()
  21.                 unpack = unpack or table.unpack
  22.                 local line, col = unpack(vim.api.nvim_win_get_cursor(0))
  23.                 return col ~= 0
  24.                     and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
  25.             end
  26.  
  27.             local cmp = require("cmp")
  28.  
  29.             cmp.setup.cmdline(":", {
  30.                 mapping = cmp.mapping.preset.cmdline(),
  31.                 sources = cmp.config.sources({
  32.                     { name = "path" },
  33.                 }, {
  34.                     {
  35.                         name = "cmdline",
  36.                         option = {
  37.                             ignore_cmds = { "Man", "!" },
  38.                         },
  39.                     },
  40.                 }),
  41.             })
  42.             cmp.setup({
  43.                 snippet = {
  44.                     expand = function(args)
  45.                         vim.snippet.expand(args.body)
  46.                     end,
  47.                 },
  48.  
  49.                 formatting = {
  50.                     format = function(entry, vim_item)
  51.                         if vim.tbl_contains({ "path" }, entry.source.name) then
  52.                             local icon, hl_group =
  53.                                 require("nvim-web-devicons").get_icon(entry:get_completion_item().label)
  54.                             if icon then
  55.                                 vim_item.kind = icon
  56.                                 vim_item.kind_hl_group = hl_group
  57.                                 return vim_item
  58.                             end
  59.                         end
  60.                         return require("lspkind").cmp_format({ with_text = false })(entry, vim_item)
  61.                     end,
  62.                 },
  63.  
  64.                 window = {
  65.                     completion = cmp.config.window.bordered(),
  66.                     documentation = cmp.config.window.bordered(),
  67.                 },
  68.  
  69.                 mapping = cmp.mapping.preset.insert({
  70.                     ["<CR>"] = cmp.mapping({
  71.                         i = function(fallback)
  72.                             if cmp.visible() and cmp.get_active_entry() then
  73.                                 cmp.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = false })
  74.                             else
  75.                                 fallback()
  76.                             end
  77.                         end,
  78.                         s = cmp.mapping.confirm({ select = true }),
  79.                         c = function(fallback)
  80.                             if cmp.visible() and cmp.get_active_entry() then
  81.                                 cmp.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = false })
  82.                             else
  83.                                 fallback()
  84.                             end
  85.                         end,
  86.                     }),
  87.                     ["<Tab>"] = {
  88.                         i = function(fallback)
  89.                             if not cmp.select_next_item() then
  90.                                 if vim.bo.buftype ~= "prompt" and has_words_before() then
  91.                                     cmp.complete()
  92.                                 else
  93.                                     fallback()
  94.                                 end
  95.                             end
  96.                         end,
  97.                         c = function(_)
  98.                             if cmp.visible() then
  99.                                 if #cmp.get_entries() == 1 then
  100.                                     cmp.confirm({ select = true })
  101.                                 else
  102.                                     cmp.select_next_item()
  103.                                 end
  104.                             else
  105.                                 cmp.complete()
  106.                                 if #cmp.get_entries() == 1 then
  107.                                     cmp.confirm({ select = true })
  108.                                 end
  109.                             end
  110.                         end,
  111.                     },
  112.  
  113.                     ["<S-Tab>"] = function(fallback)
  114.                         if not cmp.select_prev_item() then
  115.                             if vim.bo.buftype ~= "prompt" and has_words_before() then
  116.                                 cmp.complete()
  117.                             else
  118.                                 fallback()
  119.                             end
  120.                         end
  121.                     end,
  122.                 }),
  123.  
  124.                 sources = cmp.config.sources({
  125.                     { name = "nvim_lsp" },
  126.                     { name = "vsnip" },
  127.                     { name = "nvim_lua" },
  128.                     {
  129.                         name = "path",
  130.                         option = {
  131.                             trailing_slash = false,
  132.                             label_trailing_slash = false,
  133.                         },
  134.                     },
  135.                 }, { { name = "buffer" } }),
  136.             })
  137.         end,
  138.     },
  139. }
  140.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement