From b2b495ceb71f986f62ab8ba1075b7eff46ed43db Mon Sep 17 00:00:00 2001 From: Philip Gaudreau Date: Tue, 30 Jan 2024 16:41:12 -0500 Subject: [PATCH] feat(count_chars): add config option to specify count chars for the top line --- doc/gitsigns.txt | 9 +++++++++ lua/gitsigns/config.lua | 20 ++++++++++++++++++++ lua/gitsigns/signs/extmarks.lua | 2 +- lua/gitsigns/signs/vimfn.lua | 2 +- 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/doc/gitsigns.txt b/doc/gitsigns.txt index 1c2c98c0a..048166a0c 100644 --- a/doc/gitsigns.txt +++ b/doc/gitsigns.txt @@ -681,6 +681,15 @@ count_chars *gitsigns-config-count_chars* • to specify unicode characters for the counts instead of 1-9. • to define characters to be used for counts greater than 9. +top_count_chars *gitsigns-config-top_count_chars* + Type: `table` + Default: > + `{ "1", "2", "3", "4", "5", "6", "7", "8", "9", + ["+"] = ">" + }` +< + Same as count_chars, but for top line. + status_formatter *gitsigns-config-status_formatter* Type: `function` Default: > diff --git a/lua/gitsigns/config.lua b/lua/gitsigns/config.lua index 02fb6ecab..8579afc2d 100644 --- a/lua/gitsigns/config.lua +++ b/lua/gitsigns/config.lua @@ -53,6 +53,7 @@ --- @field _signs_staged table --- @field _signs_staged_enable boolean --- @field count_chars table +--- @field top_count_chars table --- @field signcolumn boolean --- @field numhl boolean --- @field linehl boolean @@ -508,6 +509,25 @@ M.schema = { ]], }, + top_count_chars = { + type = 'table', + default = { + [1] = '1', -- '¹', + [2] = '2', -- '²', + [3] = '3', -- '³', + [4] = '4', -- '⁴', + [5] = '5', -- '⁵', + [6] = '6', -- '⁶', + [7] = '7', -- '⁷', + [8] = '8', -- '⁸', + [9] = '9', -- '⁹', + ['+'] = '>', -- '⁺', + }, + description = [[ + Same as count_chars, but for top line. + ]], + }, + status_formatter = { type = 'function', --- @param status Gitsigns.StatusObj diff --git a/lua/gitsigns/signs/extmarks.lua b/lua/gitsigns/signs/extmarks.lua index f029c616c..373a6b06b 100644 --- a/lua/gitsigns/signs/extmarks.lua +++ b/lua/gitsigns/signs/extmarks.lua @@ -56,7 +56,7 @@ function M:add(bufnr, signs) local text = cs.text if config.signcolumn and cs.show_count and s.count then local count = s.count - local cc = config.count_chars + local cc = s.type == 'topdelete' and config.top_count_chars or config.count_chars local count_char = cc[count] or cc['+'] or '' text = cs.text .. count_char end diff --git a/lua/gitsigns/signs/vimfn.lua b/lua/gitsigns/signs/vimfn.lua index 5d5d3b698..623cff92e 100644 --- a/lua/gitsigns/signs/vimfn.lua +++ b/lua/gitsigns/signs/vimfn.lua @@ -133,7 +133,7 @@ function M:add(bufnr, signs) local cs = self.config[s.type] if config.signcolumn and cs.show_count and s.count then local count = s.count - local cc = config.count_chars + local cc = s.type == 'topdelete' and config.top_count_chars or config.count_chars local count_suffix = cc[count] and tostring(count) or (cc['+'] and 'Plus') or '' local count_char = cc[count] or cc['+'] or '' local hls = self.hls[s.type]