mirror of
				https://github.com/marianozunino/nvim.git
				synced 2025-10-29 11:50: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
 |