mirror of
https://github.com/marianozunino/nvim.git
synced 2025-10-28 11:20:41 -03:00
109 lines
3.7 KiB
Lua
109 lines
3.7 KiB
Lua
local M = {
|
|
{
|
|
"echasnovski/mini.icons",
|
|
init = function()
|
|
package.preload["nvim-web-devicons"] = function()
|
|
require("mini.icons").mock_nvim_web_devicons()
|
|
return package.loaded["nvim-web-devicons"]
|
|
end
|
|
end,
|
|
},
|
|
{
|
|
"echasnovski/mini.ai",
|
|
config = function()
|
|
-- - va) - [V]isually select [A]round [)]paren
|
|
-- - yinq - [Y]ank [I]nside [N]ext [Q]uote
|
|
-- - ci' - [C]hange [I]nside [']quote
|
|
require("mini.ai").setup({ n_lines = 500 })
|
|
end,
|
|
},
|
|
{
|
|
"echasnovski/mini.surround",
|
|
config = function()
|
|
-- Add/delete/replace surroundings (brackets, quotes, etc.)
|
|
--
|
|
-- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren
|
|
-- - sd' - [S]urround [D]elete [']quotes
|
|
-- - sr)' - [S]urround [R]eplace [)] [']
|
|
require("mini.surround").setup({})
|
|
end,
|
|
},
|
|
|
|
{
|
|
"echasnovski/mini.statusline",
|
|
version = false,
|
|
config = function()
|
|
require("mini.statusline").setup({})
|
|
|
|
MiniStatusline.section_codeium = function(args)
|
|
args = args or {}
|
|
local trunc_width = args.trunc_width or 75
|
|
if MiniStatusline.is_truncated(trunc_width) then
|
|
return ""
|
|
end
|
|
local status = vim.fn["codeium#GetStatusString"]()
|
|
if status and status ~= "" then
|
|
local icon = args.icon or " "
|
|
return icon .. status
|
|
end
|
|
return ""
|
|
end
|
|
|
|
MiniStatusline.section_worktree = function(args)
|
|
args = args or {}
|
|
local trunc_width = args.trunc_width or 75
|
|
if MiniStatusline.is_truncated(trunc_width) then
|
|
return ""
|
|
end
|
|
|
|
-- Get current directory
|
|
local cwd = vim.fn.getcwd()
|
|
|
|
-- Run git worktree list to check if we're in a worktree
|
|
local handle = io.popen("git worktree list 2>/dev/null")
|
|
if not handle then
|
|
return ""
|
|
end
|
|
|
|
local output = handle:read("*a")
|
|
handle:close()
|
|
|
|
for line in output:gmatch("[^\n]+") do
|
|
local path, branch = line:match("^([^%s]+)%s+%[?([^%]]*)")
|
|
if path and path == cwd and branch and branch ~= "" then
|
|
local icon = args.icon or "🌿 "
|
|
return icon .. branch
|
|
end
|
|
end
|
|
|
|
return ""
|
|
end
|
|
|
|
MiniStatusline.config.content.active = function()
|
|
local mode, mode_hl = MiniStatusline.section_mode({ trunc_width = 120 })
|
|
local git = MiniStatusline.section_git({ trunc_width = 40 })
|
|
local diff = MiniStatusline.section_diff({ trunc_width = 75 })
|
|
local diagnostics = MiniStatusline.section_diagnostics({ trunc_width = 75 })
|
|
local lsp = MiniStatusline.section_lsp({ trunc_width = 75 })
|
|
local filename = MiniStatusline.section_filename({ trunc_width = 140 })
|
|
local fileinfo = MiniStatusline.section_fileinfo({ trunc_width = 120 })
|
|
local location = MiniStatusline.section_location({ trunc_width = 75 })
|
|
local search = MiniStatusline.section_searchcount({ trunc_width = 75 })
|
|
local codeium = MiniStatusline.section_codeium({ trunc_width = 75 })
|
|
local worktree = MiniStatusline.section_worktree({ trunc_width = 75 })
|
|
|
|
return MiniStatusline.combine_groups({
|
|
{ hl = mode_hl, strings = { mode } },
|
|
{ hl = "MiniStatuslineDevinfo", strings = { git, diff, diagnostics, lsp } },
|
|
"%<", -- Mark general truncate point
|
|
{ hl = "MiniStatuslineFilename", strings = { filename } },
|
|
"%=", -- End left alignment
|
|
{ hl = "MiniStatuslineFileinfo", strings = { fileinfo, worktree } },
|
|
{ hl = mode_hl, strings = { codeium, search, location } },
|
|
})
|
|
end
|
|
end,
|
|
},
|
|
}
|
|
|
|
return M
|