nvim/lua/pika/plugins/ui.lua

366 lines
12 KiB
Lua

return {
-- ╭───────────────────────────────────────╮
-- │ bufferline - for mistakes and stuff.. │
-- ╰───────────────────────────────────────╯
{
"akinsho/bufferline.nvim",
dependencies = { "echasnovski/mini.icons" },
version = "*",
opts = {
options = {
diagnostics = "nvim_lsp",
diagnostics_update_on_event = true, -- use nvim's diagnostic handler
diagnostics_indicator = function(count, level)
local icon = level:match("error") and "" or ""
return " " .. icon .. count
end,
offsets = { { filetype = "neo-tree", text = "File Explorer", highlight = "Directory" } },
-- ─< style >───────────────────────────────────────────────────────────────────────────
indicator = {
icon = "", -- this should be omitted if indicator style is not 'icon'
style = "icon",
},
move_wraps_at_ends = true, -- whether or not the move command "wraps" at the first or last position
separator_style = "slope",
-- ─< icons >───────────────────────────────────────────────────────────────────────────
modified_icon = "󱞇 ",
left_trunc_marker = "󰬩 ",
right_trunc_marker = "󰬫 ",
themable = true, -- allows highlight groups to be overriden i.e. sets highlights as default
close_icon = "󱄊 ",
buffer_close_icon = "󱄊 ",
show_buffer_icons = true, -- disable filetype icons for buffers
show_buffer_close_icons = true,
show_close_icon = true,
show_tab_indicators = true,
hover = {
enabled = true,
delay = 30,
reveal = { "close" },
hide = { "nvim_lsp" },
},
-- You can set buffer_mode to "list" or "tabbed" based on your preference.
buffer_mode = "list",
color_icons = true, -- whether or not to add the filetype icon highlights
},
},
config = function(_, opts)
require("bufferline").setup(opts)
-- Remap the tab key for buffer navigation (you can adjust the keys as needed)
vim.keymap.set("n", "<Tab>", "<cmd>BufferLineCycleNext<CR>")
vim.keymap.set("n", "<S-Tab>", "<cmd>BufferLineCyclePrev<CR>")
end,
},
-- ╭───────────────────────────────────╮
-- │ cmdline - for nice command inputs │
-- ╰───────────────────────────────────╯
{
"VonHeikemen/fine-cmdline.nvim",
dependencies = {
{ "MunifTanjim/nui.nvim" },
},
config = function()
require("fine-cmdline").setup({
cmdline = {
enable_keymaps = true,
smart_history = true,
prompt = "",
},
popup = {
position = {
row = "10%",
col = "50%",
},
size = {
width = "60%",
},
border = {
style = "rounded",
},
win_options = {
winhighlight = "Normal:Normal,FloatBorder:FloatBorder",
},
},
-- hooks = {
-- before_mount = function(input)
-- -- code
-- end,
-- after_mount = function(input)
-- -- code
-- end,
-- set_keymaps = function(imap, feedkeys)
-- -- code
-- end,
-- },
})
end,
vim.api.nvim_set_keymap("n", ":", "<cmd>FineCmdline<CR>", { noremap = true }),
vim.keymap.set("n", "T", "<cmd>FineCmdline<CR>"),
},
-- ╭───────────────────────────────────────╮
-- │ barbecue - for a nice breadcrump menu │
-- ╰───────────────────────────────────────╯
{
"utilyre/barbecue.nvim",
name = "barbecue",
version = "*",
dependencies = {
"SmiteshP/nvim-navic",
"echasnovski/mini.icons", -- optional dependency
},
opts = {
theme = {
-- this highlight is used to override other highlights
-- you can take advantage of its `bg` and set a background throughout your winbar
-- (e.g. basename will look like this: { fg = "#c0caf5", bold = true })
normal = { fg = "#c0caf5" },
-- these highlights correspond to symbols table from config
ellipsis = { fg = "#737aa2" },
separator = { fg = "#737aa2" },
modified = { fg = "#737aa2" },
-- these highlights represent the _text_ of three main parts of barbecue
dirname = { fg = "#737aa2" },
basename = { bold = true },
context = {},
-- these highlights are used for context/navic icons
context_file = { fg = "#ac8fe4" },
context_module = { fg = "#ac8fe4" },
context_namespace = { fg = "#ac8fe4" },
context_package = { fg = "#ac8fe4" },
context_class = { fg = "#ac8fe4" },
context_method = { fg = "#ac8fe4" },
context_property = { fg = "#ac8fe4" },
context_field = { fg = "#ac8fe4" },
context_constructor = { fg = "#ac8fe4" },
context_enum = { fg = "#ac8fe4" },
context_interface = { fg = "#ac8fe4" },
context_function = { fg = "#ac8fe4" },
context_variable = { fg = "#ac8fe4" },
context_constant = { fg = "#ac8fe4" },
context_string = { fg = "#ac8fe4" },
context_number = { fg = "#ac8fe4" },
context_boolean = { fg = "#ac8fe4" },
context_array = { fg = "#ac8fe4" },
context_object = { fg = "#ac8fe4" },
context_key = { fg = "#ac8fe4" },
context_null = { fg = "#ac8fe4" },
context_enum_member = { fg = "#ac8fe4" },
context_struct = { fg = "#ac8fe4" },
context_event = { fg = "#ac8fe4" },
context_operator = { fg = "#ac8fe4" },
context_type_parameter = { fg = "#ac8fe4" },
},
},
},
-- ╭─────────────────────────────────╮
-- │ indentlines - nice indent lines │
-- ╰─────────────────────────────────╯
{
"lukas-reineke/indent-blankline.nvim",
event = { "BufReadPre", "BufNewFile" },
main = "ibl",
opts = {
indent = {
char = "",
tab_char = "",
-- char = "│",
-- tab_char = "│",
},
scope = { enabled = true },
},
},
-- ╭──────────────────╮
-- │ markdown plugins │
-- ╰──────────────────╯
{
"MeanderingProgrammer/render-markdown.nvim",
opts = {},
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.nvim' }, -- if you use the mini.nvim suite
dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.icons" }, -- if you use standalone mini plugins
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons
},
-- ╭────────────────────────────────────╮
-- │ notify for excellent notifications │
-- ╰────────────────────────────────────╯
{
"rcarriga/nvim-notify",
config = function()
require("notify").setup({
stages = "slide",
background_colour = "FloatShadow",
max_width = 120,
timeout = 2750,
render = "wrapped-compact",
-- Minimum/Maximum width for notification windows
minimum_width = 30,
maximum_width = 120,
-- Function called when a new window is opened, use for changing win settings/config
on_open = nil,
-- Function called when a window is closed
on_close = nil,
icons = {
ERROR = "", -- alternate symbol 
WARN = "",
INFO = "",
DEBUG = "",
TRACE = "",
},
})
vim.notify = require("notify")
end,
vim.keymap.set("n", "<leader>tn", "<cmd>Telescope notify<CR>", { desc = "Telescope show Notifications" }),
},
-- ╭────────────────────────────────╮
-- │ lualine - another bar for nvim │
-- ╰────────────────────────────────╯
{
"nvim-lualine/lualine.nvim",
opts = {
options = {
theme = bubbles_theme,
component_separators = "",
section_separators = { left = "", right = "" },
},
sections = {
lualine_a = { { "mode", separator = { left = "" }, right_padding = 4 } },
lualine_b = { "filename", "branch" },
lualine_c = {
"%=",
"cwd",
},
lualine_x = {},
lualine_y = { "filetype", "progress" },
lualine_z = {
{ "location", separator = { right = "" }, left_padding = 4 },
},
},
inactive_sections = {
lualine_a = { "filename" },
lualine_b = {},
lualine_c = {},
lualine_x = {},
lualine_y = {},
lualine_z = { "location" },
},
tabline = {},
extensions = {},
},
},
-- ╭──────────────────────────────╮
-- │ slimline - nice bar for nvim │
-- ╰──────────────────────────────╯
-- {
-- "sschleemilch/slimline.nvim",
-- opts = {
-- bold = true, -- makes primary parts and mode bold
-- verbose_mode = false, -- Mode as single letter or as a word
-- style = "bg", -- or "fg". Whether highlights should be applied to bg or fg of components
-- mode_follow_style = true, -- Whether the mode color components should follow the style option
-- spaces = {
-- components = "─",
-- left = "─",
-- right = "─",
-- },
-- configs = {
-- path = {
-- hl = {
-- primary = "Define",
-- },
-- },
-- git = {
-- hl = {
-- primary = "Function",
-- },
-- },
-- diagnostics = {
-- hl = {
-- primary = "Statement",
-- },
-- },
-- filetype_lsp = {
-- hl = {
-- primary = "String",
-- },
-- },
-- },
-- components = { -- Choose components and their location
-- left = {
-- "mode",
-- "progress",
-- -- "path",
-- -- "git",
-- },
-- center = {
-- "path",
-- "git",
-- },
-- right = {
-- "diagnostics",
-- "filetype_lsp",
-- "progress",
-- },
-- },
-- sep = {
-- hide = {
-- first = false, -- hides the first separator
-- last = false, -- hides the last separator
-- },
-- left = "", -- left separator of components
-- right = "", -- right separator of components
-- },
-- hl = {
-- modes = {
-- normal = "Type", -- highlight base of modes
-- insert = "Function",
-- pending = "Boolean",
-- visual = "Keyword",
-- command = "String",
-- },
-- base = "Comment", -- highlight of everything in in between components
-- primary = "Normal", -- highlight of primary parts (e.g. filename)
-- secondary = "Comment", -- highlight of secondary parts (e.g. filepath)
-- },
-- icons = {
-- diagnostics = {
-- ERROR = " ",
-- WARN = " ",
-- HINT = " ",
-- INFO = " ",
-- },
-- git = {
-- branch = "",
-- },
-- folder = " ",
-- lines = " ",
-- },
-- },
-- },
-- ╭────────────────────────────────────────╮
-- │ which key - to know what to press next │
-- ╰────────────────────────────────────────╯
{
"folke/which-key.nvim",
event = "VeryLazy",
init = function()
vim.o.timeout = false
vim.o.timeoutlen = 0
end,
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
},
},
}