feat(ui): improve ui (cmp) and add gruvbox theme

This commit is contained in:
doryan 2025-04-13 22:18:47 +04:00
parent 5a533becb0
commit 813671fcb0
4 changed files with 93 additions and 85 deletions

View File

@ -8,6 +8,7 @@ local vanila_vim_autostart_commands = {
"set clipboard=unnamedplus" "set clipboard=unnamedplus"
} }
vim.opt.termguicolors = true
vim.opt.fillchars = { eob = " " } vim.opt.fillchars = { eob = " " }
for _, cmd in pairs(vanila_vim_autostart_commands) do for _, cmd in pairs(vanila_vim_autostart_commands) do
@ -40,7 +41,6 @@ require("config.plugins.prettier")
require("config.plugins.rustaceanvim") require("config.plugins.rustaceanvim")
require("huez").setup({}) require("huez").setup({})
vim.api.nvim_create_autocmd("BufWritePre", { vim.api.nvim_create_autocmd("BufWritePre", {
buffer = buffer, buffer = buffer,
callback = function() callback = function()

View File

@ -1,96 +1,99 @@
local cmp = require "cmp" local cmp = require "cmp"
local kind_icons = { local kind_icons = {
Text = "", Text = "",
Method = "󰆧", Method = "󰆧",
Function = "󰊕", Function = "󰊕",
Constructor = "", Constructor = "",
Field = "", Field = "",
Variable = "", Variable = "",
Class = "", Class = "",
Interface = "", Interface = "",
Module = "", Module = "",
Property = "󰜢", Property = "󰜢",
Unit = "", Unit = "",
Value = "󰎠", Value = "󰎠",
Enum = "", Enum = "",
Keyword = "󰌋", Keyword = "󰌋",
Snippet = "", Snippet = "",
Color = "󰏘", Color = "󰏘",
File = "󰈙", File = "󰈙",
Reference = "", Reference = "",
Folder = "󰉋", Folder = "󰉋",
EnumMember = "", EnumMember = "",
Constant = "󰏿", Constant = "󰏿",
Struct = "", Struct = "",
Event = "", Event = "",
Operator = "󰆕", Operator = "󰆕",
TypeParameter = "󰅲", TypeParameter = "󰅲",
} }
cmp.setup{ cmp.setup {
completion = { completeopt = "menu,menuone" }, completion = { completeopt = "menu,menuone" },
snippet = { snippet = {
expand = function(args) expand = function(args)
require("luasnip").lsp_expand(args.body) require("luasnip").lsp_expand(args.body)
end, end,
}, },
window = {
completion = {
-- winhighlight = "Normal:Pmenu,FloatBorder:Pmenu,Search:None",
col_offset = -3,
side_padding = 0,
},
},
formatting = { formatting = {
format = function(entry, vim_item) fields = { "kind", "abbr", "menu" },
-- Kind icons format = function(entry, vim_item)
vim_item.kind = string.format('\t%s %s\t', kind_icons[vim_item.kind], vim_item.kind) -- This concatenates the icons with the name of the item kind local kind = require("lspkind").cmp_format({ mode = "symbol_text", maxwidth = 50 })(entry, vim_item)
-- Source local strings = vim.split(kind.kind, "%s", { trimempty = true })
vim_item.menu = ({ kind.kind = " " .. (strings[1] or "") .. " "
buffer = "[Buffer]", kind.menu = " " .. (strings[2] or "")
nvim_lsp = "[LSP]",
luasnip = "[LuaSnip]",
nvim_lua = "[Lua]",
latex_symbols = "[LaTeX]",
})[entry.source.name]
return vim_item
end
},
mapping = { return kind
["<C-p>"] = cmp.mapping.select_prev_item(), end
["<C-n>"] = cmp.mapping.select_next_item(), },
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.close(),
["<CR>"] = cmp.mapping.confirm { mapping = {
behavior = cmp.ConfirmBehavior.Insert, ["<C-p>"] = cmp.mapping.select_prev_item(),
select = true, ["<C-n>"] = cmp.mapping.select_next_item(),
}, ["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.close(),
["<Tab>"] = cmp.mapping(function(fallback) ["<CR>"] = cmp.mapping.confirm {
if cmp.visible() then behavior = cmp.ConfirmBehavior.Insert,
cmp.select_next_item() select = true,
elseif require("luasnip").expand_or_jumpable() then },
require("luasnip").expand_or_jump()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback) ["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then if cmp.visible() then
cmp.select_prev_item() cmp.select_next_item()
elseif require("luasnip").jumpable(-1) then elseif require("luasnip").expand_or_jumpable() then
require("luasnip").jump(-1) require("luasnip").expand_or_jump()
else else
fallback() fallback()
end end
end, { "i", "s" }), end, { "i", "s" }),
},
sources = { ["<S-Tab>"] = cmp.mapping(function(fallback)
{ name = "nvim_lsp" }, if cmp.visible() then
{ name = "luasnip" }, cmp.select_prev_item()
{ name = "buffer" }, elseif require("luasnip").jumpable(-1) then
{ name = "path" }, require("luasnip").jump(-1)
}, else
fallback()
end
end, { "i", "s" }),
},
sources = {
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "buffer" },
{ name = "path" },
},
} }

View File

@ -1,5 +1,4 @@
return { return {
{ {
'simrat39/inlay-hints.nvim', 'simrat39/inlay-hints.nvim',
}, },
@ -9,6 +8,9 @@ return {
{ {
"akinsho/bufferline.nvim", "akinsho/bufferline.nvim",
}, },
{
"onsails/lspkind.nvim"
},
{ {
"lewis6991/gitsigns.nvim" "lewis6991/gitsigns.nvim"
}, },

View File

@ -22,6 +22,9 @@ return {
"lukas-reineke/indent-blankline.nvim", "lukas-reineke/indent-blankline.nvim",
main = "ibl", main = "ibl",
}, },
{
"sainnhe/gruvbox-material",
},
{ {
"savq/melange-nvim" "savq/melange-nvim"
}, },