You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
`
local M = {
"hrsh7th/nvim-cmp",
event = "InsertEnter",
dependencies = {
{
"hrsh7th/cmp-nvim-lsp",
event = "InsertEnter",
},
{
"hrsh7th/cmp-emoji",
event = "InsertEnter",
},
{
"hrsh7th/cmp-buffer",
event = "InsertEnter",
},
{
"hrsh7th/cmp-path",
event = "InsertEnter",
},
{
"hrsh7th/cmp-cmdline",
event = "InsertEnter",
},
{
"saadparwaiz1/cmp_luasnip",
event = "InsertEnter",
},
{
"L3MON4D3/LuaSnip",
event = "InsertEnter",
dependencies = {
"rafamadriz/friendly-snippets",
},
},
{
"hrsh7th/cmp-nvim-lua",
},
},
}
function M.config()
local cmp = require "cmp"
local luasnip = require "luasnip"
require("luasnip/loaders/from_vscode").lazy_load()
vim.api.nvim_set_hl(0, "CmpItemKindCopilot", { fg = "#6CC644" })
vim.api.nvim_set_hl(0, "CmpItemKindTabnine", { fg = "#CA42F0" })
vim.api.nvim_set_hl(0, "CmpItemKindEmoji", { fg = "#FDE030" })
local check_backspace = function()
local col = vim.fn.col "." - 1
return col == 0 or vim.fn.getline("."):sub(col, col):match "%s"
end
local icons = require "user.icons"
cmp.setup {
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body) -- For
luasnip
users.end,
},
mapping = cmp.mapping.preset.insert {
[""] = cmp.mapping(cmp.mapping.select_prev_item(), { "i", "c" }),
[""] = cmp.mapping(cmp.mapping.select_next_item(), { "i", "c" }),
[""] = cmp.mapping(cmp.mapping.select_next_item(), { "i", "c" }),
[""] = cmp.mapping(cmp.mapping.select_prev_item(), { "i", "c" }),
[""] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }),
[""] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }),
[""] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }),
[""] = cmp.mapping {
i = cmp.mapping.abort(),
c = cmp.mapping.close(),
},
-- Accept currently selected item. If none selected,
select
first item.-- Set
select
tofalse
to only confirm explicitly selected items.[""] = cmp.mapping.confirm { select = true },
[""] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expandable() then
luasnip.expand()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
elseif check_backspace() then
fallback()
-- require("neotab").tabout()
else
fallback()
-- require("neotab").tabout()
end
end, {
"i",
"s",
}),
[""] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, {
"i",
"s",
}),
},
formatting = {
fields = { "kind", "abbr", "menu" },
format = function(entry, vim_item)
vim_item.kind = icons.kind[vim_item.kind]
vim_item.menu = ({
nvim_lsp = "",
nvim_lua = "",
luasnip = "",
buffer = "",
path = "",
emoji = "",
})[entry.source.name]
}
end
return M
`
Beta Was this translation helpful? Give feedback.
All reactions