nvim/lua/plugins/core.lua
2024-09-23 15:37:07 -04:00

120 lines
3.7 KiB
Lua

-- local cmp = require("cmp")
return {
{
"folke/which-key.nvim",
opts = {
win = {
border = "single",
},
delay = 1000,
},
},
{
"LazyVim/LazyVim",
opts = {
colorscheme = "catppuccin",
},
},
{
"nvim-lualine/lualine.nvim",
opts = {
sections = {
lualine_z = {},
},
},
},
{
"nvim-neo-tree/neo-tree.nvim",
opts = {
window = {
mappings = {
["l"] = "open", -- open folders and files with l
-- ["h"] = "close",
},
},
use_popups_for_input = false,
},
},
{
"L3MON4D3/LuaSnip",
dependencies = { "rafamadriz/friendly-snippets" },
opts = {
region_check_events = "CursorHold,InsertLeave",
delete_check_events = "TextChanged,InsertEnter,InsertLeave",
},
},
{
"hrsh7th/nvim-cmp",
-- dependencies = {
-- "hrsh7th/cmp-emoji",
-- },
--@param opts cmp.ConfigSchema
opts = function(_, opts)
local cmp = require("cmp")
local luasnip = require("luasnip")
local has_words_before = function()
unpack = unpack or table.unpack
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
end
-- opts.sources = cmp.config.sources(vim.list_extend(opts.sources, { { name = "emoji" } }))
opts.window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
}
opts.formatting = {
format = function(entry, vim_item)
vim_item.abbr = string.sub(vim_item.abbr, 1, 40)
return vim_item
end,
}
opts.preselect = cmp.PreselectMode.None
opts.completion = {
completeopt = "menuone,noselect,preview",
}
opts.mapping = cmp.mapping.preset.insert({
["<C-n>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
["<C-p>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
["<C-b>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.abort(),
["<CR>"] = cmp.mapping.confirm({ select = false }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
-- ["<CR>"] = cmp.config.disable,
["<S-CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = true,
}), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
["<C-CR>"] = function(fallback)
cmp.abort()
fallback()
end,
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
-- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable()
-- this way you will only jump inside the snippet region
-- elseif luasnip.expand_or_locally_jumpable() then
-- luasnip.expand_or_jump()
elseif luasnip.expandable() then
luasnip.expand()
elseif has_words_before() then
cmp.complete()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
-- elseif luasnip.in_snippet() and luasnip.jumpable(-1) then
-- luasnip.jump(-1)
else
fallback()
end
end, { "i", "s" }),
})
end,
},
}