diff options
| author | triethyl <triethylammonium@pm.me> | 2025-08-16 20:20:21 -0400 |
|---|---|---|
| committer | triethyl <triethylammonium@pm.me> | 2025-08-16 20:20:21 -0400 |
| commit | 58ceb817bb6ba195d1189160878f318f3bcda0ef (patch) | |
| tree | 6c17c013c92af8c6e410bb1d4fe3a2557841d0d3 /pkgs/custom-neovim/config/lua/statusline.lua | |
| parent | 94980b0be13a690128992d98a2ed5db3ab592642 (diff) | |
neovim: restarted config
Diffstat (limited to 'pkgs/custom-neovim/config/lua/statusline.lua')
| -rw-r--r-- | pkgs/custom-neovim/config/lua/statusline.lua | 249 |
1 files changed, 0 insertions, 249 deletions
diff --git a/pkgs/custom-neovim/config/lua/statusline.lua b/pkgs/custom-neovim/config/lua/statusline.lua deleted file mode 100644 index 08bbe50..0000000 --- a/pkgs/custom-neovim/config/lua/statusline.lua +++ /dev/null @@ -1,249 +0,0 @@ --- Custom Statusline - --- About 1/3 of this code is from https://github.com/MariaSolOs/dotfiles/blob/f1d6229f4a4675745aff95c540dc8f1b9007a77a/.config/nvim/lua/statusline.lua - --- Highlight pattern -local hi_pattern = '%%#%s#%s%%*' - --- Convert mode to string -local mode_to_str = { - ['n'] = 'NORMAL', - ['no'] = 'OP-PENDING', - ['nov'] = 'OP-PENDING', - ['noV'] = 'OP-PENDING', - ['no\22'] = 'OP-PENDING', - ['niI'] = 'NORMAL', - ['niR'] = 'NORMAL', - ['niV'] = 'NORMAL', - ['nt'] = 'NORMAL', - ['ntT'] = 'NORMAL', - ['v'] = 'VISUAL', - ['vs'] = 'VISUAL', - ['V'] = 'VISUAL', - ['Vs'] = 'VISUAL', - ['\22'] = 'VISUAL', - ['\22s'] = 'VISUAL', - ['s'] = 'SELECT', - ['S'] = 'SELECT', - ['\19'] = 'SELECT', - ['i'] = 'INSERT', - ['ic'] = 'INSERT', - ['ix'] = 'INSERT', - ['R'] = 'REPLACE', - ['Rc'] = 'REPLACE', - ['Rx'] = 'REPLACE', - ['Rv'] = 'VIRT REPLACE', - ['Rvc'] = 'VIRT REPLACE', - ['Rvx'] = 'VIRT REPLACE', - ['c'] = 'COMMAND', - ['cv'] = 'VIM EX', - ['ce'] = 'EX', - ['r'] = 'PROMPT', - ['rm'] = 'MORE', - ['r?'] = 'CONFIRM', - ['!'] = 'SHELL', - ['t'] = 'TERMINAL', -} - -local statusline_components = {} - -statusline_components.micro_spacer = function() - return " " -end - -statusline_components.small_spacer = function() - return " " -end - -statusline_components.spacer = function() - return '%=' -end - -statusline_components.diagnostic_status = function() - local diagnostics = {} - - local errors = #vim.diagnostic.get(0, { severity = 1 }) - - if errors > 0 then - table.insert(diagnostics, "%#DiagnosticSignError# " .. tostring(errors)) - end - - local warnings = #vim.diagnostic.get(0, { severity = 2 }) - - if warnings > 0 then - table.insert(diagnostics, "%#DiagnosticSignWarn# " .. tostring(warnings)) - end - - local infos = #vim.diagnostic.get(0, { severity = 3 }) - - if infos > 0 then - table.insert(diagnostics, "%#DiagnosticSignInfo# " .. tostring(infos)) - end - - local hints = #vim.diagnostic.get(0, { severity = 4 }) - - if hints > 0 then - table.insert(diagnostics, "%#DiagnosticSignHint# " .. tostring(hints)) - end - - table.insert(diagnostics, "%#StatusLine#") - - vim.defer_fn(vim.cmd.redrawstatus, 500) - - -- Don't show diagnostics in insert mode. - if mode_to_str[vim.api.nvim_get_mode().mode]:find "INSERT" then - return "" - end - - return table.concat(diagnostics, " ") -end - -statusline_components.mode = function() - -- Get the respective string to display. - local mode = mode_to_str[vim.api.nvim_get_mode().mode] or 'UNKNOWN' - - -- Set the highlight group. - local hl = 'MiniStatuslineModeOther' - if mode:find 'NORMAL' then - hl = 'MiniStatuslineModeNormal' - elseif mode:find 'PENDING' then - hl = 'MiniStatuslineModeNormal' - elseif mode:find 'VISUAL' then - hl = 'MiniStatuslineModeVisual' - elseif mode:find 'REPLACE' then - hl = 'MiniStatuslineModeReplace' - elseif mode:find 'INSERT' or mode:find 'SELECT' then - hl = 'MiniStatuslineModeInsert' - elseif mode:find 'COMMAND' or mode:find 'TERMINAL' or mode:find 'EX' then - hl = 'MiniStatuslineModeCommand' - end - - -- Construct the component. - return hi_pattern:format(hl, string.format(' %s ', mode)) -end - -statusline_components.position = function() - -- Get the respective string to display. - local mode = mode_to_str[vim.api.nvim_get_mode().mode] or 'UNKNOWN' - - -- Set the highlight group. - local hl = 'MiniStatuslineModeOther' - if mode:find 'NORMAL' then - hl = 'MiniStatuslineModeNormal' - elseif mode:find 'PENDING' then - hl = 'MiniStatuslineModeNormal' - elseif mode:find 'VISUAL' then - hl = 'MiniStatuslineModeVisual' - elseif mode:find 'REPLACE' then - hl = 'MiniStatuslineModeReplace' - elseif mode:find 'INSERT' or mode:find 'SELECT' then - hl = 'MiniStatuslineModeInsert' - elseif mode:find 'COMMAND' or mode:find 'TERMINAL' or mode:find 'EX' then - hl = 'MiniStatuslineModeCommand' - end - - -- Construct the component. - return hi_pattern:format(hl, ' %2l:%-2c ') -end - -statusline_components.git_branch = function() - if vim.g.gitsigns_head then - return string.format(' %s', vim.g.gitsigns_head) - else - return '' -- Return an empty string or some default value if the branch name is not available - end -end - -statusline_components.git_status = function() - if not vim.b.gitsigns_status_dict then - return '' - end - - if not vim.b.gitsigns_status_dict.added then - return '' - end - - if not vim.b.gitsigns_status_dict.changed then - return '' - end - - if not vim.b.gitsigns_status_dict.removed then - return '' - end - - local status = {} - - local gitsigns_status = vim.b.gitsigns_status_dict - - if gitsigns_status.added > 0 then - table.insert(status, hi_pattern:format("Added", (" %s"):format(gitsigns_status.added))) - end - - if gitsigns_status.changed > 0 then - table.insert(status, hi_pattern:format("Changed", (" %s"):format(gitsigns_status.changed))) - end - - if gitsigns_status.removed > 0 then - table.insert(status, hi_pattern:format("Removed", (" %s"):format(gitsigns_status.removed))) - end - - return table.concat(status, " ") -end - -statusline_components.working_directory = function() - local text = vim.fn.getcwd() - - local parts = {} - for part in string.gmatch(text, "[^/]+") do - table.insert(parts, part) - end - - -- replace /home/USER with ~/ - if #parts >= 3 then - table.remove(parts, 1) - table.remove(parts, 1) - table.insert(parts, 1, "~") - end - - text = table.concat(parts, "/") - - -- if the cwd takes up more than half the bar width, shorten it. - if text:len() > (vim.api.nvim_win_get_width(0) / 2.5) then - if #parts >= 1 then - text = ".../" .. parts[#parts] - end - end - return string.format('%s', text) -end - -Statusline_component = function(name) - return statusline_components[name]() -end - -local get_component = function(name) - return string.format('%%{%%v:lua.Statusline_component("%s")%%} ', name) -end - -local statusline = { - get_component("micro_spacer"), - - get_component("mode"), - get_component("micro_spacer"), - get_component("working_directory"), - get_component("micro_spacer"), - get_component("git_branch"), - get_component("micro_spacer"), - get_component("git_status"), - get_component("micro_spacer"), - get_component("diagnostic_status"), - - get_component("spacer"), - - '%{&filetype}', -- filetype - get_component("micro_spacer"), - '%2p%%', -- progress % - get_component("micro_spacer"), - get_component("position"), -} - -vim.o.statusline = table.concat(statusline, '') |
