From 0887b2549d4815d856e3522d0243ccc5bd2f2302 Mon Sep 17 00:00:00 2001 From: Xavier Logerais Date: Wed, 2 Jul 2025 09:50:23 +0000 Subject: [PATCH] feat: Add plugin b0o/incline.nvim Incline is a plugin for creating lightweight floating statuslines. --- lua/plugins/incline.lua | 63 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 lua/plugins/incline.lua diff --git a/lua/plugins/incline.lua b/lua/plugins/incline.lua new file mode 100644 index 0000000..3408b75 --- /dev/null +++ b/lua/plugins/incline.lua @@ -0,0 +1,63 @@ +return { + { + -- Incline is a plugin for creating lightweight floating statuslines. + -- It works great with Neovim's global statusline (:set laststatus=3) + 'b0o/incline.nvim', + config = function() + local devicons = require 'nvim-web-devicons' + require('incline').setup { + render = function(props) + local filename = vim.fn.fnamemodify(vim.api.nvim_buf_get_name(props.buf), ':t') + if filename == '' then + filename = '[No Name]' + end + local ft_icon, ft_color = devicons.get_icon_color(filename) + + local function get_git_diff() + local icons = { removed = '', changed = '', added = '' } + local signs = vim.b[props.buf].gitsigns_status_dict + local labels = {} + if signs == nil then + return labels + end + for name, icon in pairs(icons) do + if tonumber(signs[name]) and signs[name] > 0 then + table.insert(labels, { icon .. signs[name] .. ' ', group = 'Diff' .. name }) + end + end + if #labels > 0 then + table.insert(labels, { '┊ ' }) + end + return labels + end + + local function get_diagnostic_label() + local icons = { error = '', warn = '', info = '', hint = '' } + local label = {} + + for severity, icon in pairs(icons) do + local n = #vim.diagnostic.get(props.buf, { severity = vim.diagnostic.severity[string.upper(severity)] }) + if n > 0 then + table.insert(label, { icon .. n .. ' ', group = 'DiagnosticSign' .. severity }) + end + end + if #label > 0 then + table.insert(label, { '┊ ' }) + end + return label + end + + return { + { get_diagnostic_label() }, + { get_git_diff() }, + { (ft_icon or '') .. ' ', guifg = ft_color, guibg = 'none' }, + { filename .. ' ', gui = vim.bo[props.buf].modified and 'bold,italic' or 'bold' }, + { '┊  ' .. vim.api.nvim_win_get_number(props.win), group = 'DevIconWindows' }, + } + end, + } + end, + -- Optional: Lazy load Incline + event = 'VeryLazy', + }, +}