feat: add highlights for the current line

This commit is contained in:
Anton Rybianov 2024-07-24 02:00:09 +03:00 committed by Lewis Russell
parent f4928ba14e
commit b29cb58126
4 changed files with 122 additions and 1 deletions

View file

@ -572,6 +572,7 @@ signs *gitsigns-config-signs*
• `GitSignsAdd` (for normal text signs)
• `GitSignsAddNr` (for signs when `config.numhl == true`)
• `GitSignsAddLn `(for signs when `config.linehl == true`)
• `GitSignsAddCul `(for signs when `config.culhl == true`)
See |gitsigns-highlight-groups|.
@ -686,6 +687,16 @@ linehl *gitsigns-config-linehl*
the highlight group does not exist, then it is automatically defined
and linked to the corresponding highlight group in `signs.*.hl`.
culhl *gitsigns-config-culhl*
Type: `boolean`, Default: `false`
Enable/disable highlights for the sign column when the cursor is on
the same line.
When enabled the highlights defined in `signs.*.culhl` are used. If
the highlight group does not exist, then it is automatically defined
and linked to the corresponding highlight group in `signs.*.hl`.
show_deleted *gitsigns-config-show_deleted*
Type: `boolean`, Default: `false`
@ -1041,6 +1052,36 @@ GitSignsUntrackedLn
Used for buffer line (when `config.linehl == true`) of 'untracked' signs.
Fallbacks: `GitSignsAddLn`
*hl-GitSignsAddCul*
GitSignsAddCul
Used for the text of 'add' signs when the cursor is on the same line as the sign.
Fallbacks: `GitSignsAdd`
*hl-GitSignsChangeCul*
GitSignsChangeCul
Used for the text of 'change' signs when the cursor is on the same line as the sign.
Fallbacks: `GitSignsChange`
*hl-GitSignsDeleteCul*
GitSignsDeleteCul
Used for the text of 'delete' signs when the cursor is on the same line as the sign.
Fallbacks: `GitSignsDelete`
*hl-GitSignsChangedeleteCul*
GitSignsChangedeleteCul
Used for the text of 'changedelete' signs when the cursor is on the same line as the sign.
Fallbacks: `GitSignsChangeCul`
*hl-GitSignsTopdeleteCul*
GitSignsTopdeleteCul
Used for the text of 'topdelete' signs when the cursor is on the same line as the sign.
Fallbacks: `GitSignsDeleteCul`
*hl-GitSignsUntrackedCul*
GitSignsUntrackedCul
Used for the text of 'untracked' signs when the cursor is on the same line as the sign.
Fallbacks: `GitSignsAddCul`
*hl-GitSignsAddPreview*
GitSignsAddPreview
Used for added lines in previews.

View file

@ -25,6 +25,7 @@
--- @field text string
--- @field numhl string
--- @field linehl string
--- @field culhl string
--- @alias Gitsigns.SignType
--- | 'add'
@ -60,6 +61,7 @@
--- @field signcolumn boolean
--- @field numhl boolean
--- @field linehl boolean
--- @field culhl boolean
--- @field show_deleted boolean
--- @field sign_priority integer
--- @field _on_attach_pre fun(bufnr: integer, callback: fun(_: table))
@ -212,36 +214,47 @@ M.schema = {
type = validate_signs,
deep_extend = true,
default = {
add = { hl = 'GitSignsAdd', text = '', numhl = 'GitSignsAddNr', linehl = 'GitSignsAddLn' },
add = {
hl = 'GitSignsAdd',
text = '',
numhl = 'GitSignsAddNr',
linehl = 'GitSignsAddLn',
culhl = 'GitSignsAddCul',
},
change = {
hl = 'GitSignsChange',
text = '',
numhl = 'GitSignsChangeNr',
linehl = 'GitSignsChangeLn',
culhl = 'GitSignsChangeCul',
},
delete = {
hl = 'GitSignsDelete',
text = '',
numhl = 'GitSignsDeleteNr',
linehl = 'GitSignsDeleteLn',
culhl = 'GitSignsDeleteCul',
},
topdelete = {
hl = 'GitSignsTopdelete',
text = '',
numhl = 'GitSignsTopdeleteNr',
linehl = 'GitSignsTopdeleteLn',
culhl = 'GitSignsTopdeleteCul',
},
changedelete = {
hl = 'GitSignsChangedelete',
text = '~',
numhl = 'GitSignsChangedeleteNr',
linehl = 'GitSignsChangedeleteLn',
culhl = 'GitSignsChangedeleteCul',
},
untracked = {
hl = 'GitSignsUntracked',
text = '',
numhl = 'GitSignsUntrackedNr',
linehl = 'GitSignsUntrackedLn',
culhl = 'GitSignsUntrackedCul',
},
},
default_help = [[{
@ -263,6 +276,7 @@ M.schema = {
`GitSignsAdd` (for normal text signs)
`GitSignsAddNr` (for signs when `config.numhl == true`)
`GitSignsAddLn `(for signs when `config.linehl == true`)
`GitSignsAddCul `(for signs when `config.culhl == true`)
See |gitsigns-highlight-groups|.
]],
@ -277,30 +291,35 @@ M.schema = {
text = '',
numhl = 'GitSignsStagedAddNr',
linehl = 'GitSignsStagedAddLn',
culhl = 'GitSignsStagedAddCul',
},
change = {
hl = 'GitSignsStagedChange',
text = '',
numhl = 'GitSignsStagedChangeNr',
linehl = 'GitSignsStagedChangeLn',
culhl = 'GitSignsStagedChangeCul',
},
delete = {
hl = 'GitSignsStagedDelete',
text = '',
numhl = 'GitSignsStagedDeleteNr',
linehl = 'GitSignsStagedDeleteLn',
culhl = 'GitSignsStagedDeleteCul',
},
topdelete = {
hl = 'GitSignsStagedTopdelete',
text = '',
numhl = 'GitSignsStagedTopdeleteNr',
linehl = 'GitSignsStagedTopdeleteLn',
culhl = 'GitSignsStagedTopdeleteCul',
},
changedelete = {
hl = 'GitSignsStagedChangedelete',
text = '~',
numhl = 'GitSignsStagedChangedeleteNr',
linehl = 'GitSignsStagedChangedeleteLn',
culhl = 'GitSignsStagedChangedeleteCul',
},
},
default_help = [[{
@ -458,6 +477,19 @@ M.schema = {
]],
},
culhl = {
type = 'boolean',
default = false,
description = [[
Enable/disable highlights for the sign column when the cursor is on
the same line.
When enabled the highlights defined in `signs.*.culhl` are used. If
the highlight group does not exist, then it is automatically defined
and linked to the corresponding highlight group in `signs.*.hl`.
]],
},
show_deleted = {
type = 'boolean',
default = false,

View file

@ -135,6 +135,48 @@ M.hls = {
},
},
{
GitSignsAddCul = {
'GitSignsAdd',
desc = "Used for the text of 'add' signs when the cursor is on the same line as the sign.",
},
},
{
GitSignsChangeCul = {
'GitSignsChange',
desc = "Used for the text of 'change' signs when the cursor is on the same line as the sign.",
},
},
{
GitSignsDeleteCul = {
'GitSignsDelete',
desc = "Used for the text of 'delete' signs when the cursor is on the same line as the sign.",
},
},
{
GitSignsChangedeleteCul = {
'GitSignsChangeCul',
desc = "Used for the text of 'changedelete' signs when the cursor is on the same line as the sign.",
},
},
{
GitSignsTopdeleteCul = {
'GitSignsDeleteCul',
desc = "Used for the text of 'topdelete' signs when the cursor is on the same line as the sign.",
},
},
{
GitSignsUntrackedCul = {
'GitSignsAddCul',
desc = "Used for the text of 'untracked' signs when the cursor is on the same line as the sign.",
},
},
-- Don't set GitSignsDeleteLn by default
-- {GitSignsDeleteLn = {}},
@ -153,6 +195,11 @@ M.hls = {
{ GitSignsStagedDeleteLn = { 'GitSignsDeleteLn', fg_factor = 0.5, hidden = true } },
{ GitSignsStagedChangedeleteLn = { 'GitSignsChangedeleteLn', fg_factor = 0.5, hidden = true } },
{ GitSignsStagedTopdeleteLn = { 'GitSignsTopdeleteLn', fg_factor = 0.5, hidden = true } },
{ GitSignsStagedAddCul = { 'GitSignsAddCul', fg_factor = 0.5, hidden = true } },
{ GitSignsStagedChangeCul = { 'GitSignsChangeCul', fg_factor = 0.5, hidden = true } },
{ GitSignsStagedDeleteCul = { 'GitSignsDeleteCul', fg_factor = 0.5, hidden = true } },
{ GitSignsStagedChangedeleteCul = { 'GitSignsStagedChangeCul', fg_factor = 0.5, hidden = true } },
{ GitSignsStagedTopdeleteCul = { 'GitSignsStagedDeleteCul', fg_factor = 0.5, hidden = true } },
{
GitSignsAddPreview = {

View file

@ -65,6 +65,7 @@ function M:add(bufnr, signs)
sign_hl_group = hls.hl,
number_hl_group = config.numhl and hls.numhl or nil,
line_hl_group = config.linehl and hls.linehl or nil,
cursorline_hl_group = config.culhl and hls.culhl or nil,
})
if not ok and config.debug_mode then