Skip to content

Commit a7e61ac

Browse files
committed
feat(#2415): granular highlight_git, normalise git groups (#2487)
* docs: update CONTRIBUTING.md (#2485) * feat(#2415): granular highlight_git, normalise git groups
1 parent 82c00d1 commit a7e61ac

File tree

8 files changed

+189
-140
lines changed

8 files changed

+189
-140
lines changed

doc/nvim-tree-lua.txt

Lines changed: 57 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ Following is the default configuration. See |nvim-tree-opts| for details.
388388
indent_width = 2,
389389
special_files = { "Cargo.toml", "Makefile", "README.md", "readme.md" },
390390
symlink_destination = true,
391-
highlight_git = false,
391+
highlight_git = "none",
392392
highlight_diagnostics = "none",
393393
highlight_opened_files = "none",
394394
highlight_modified = "none",
@@ -833,12 +833,13 @@ Whether to show the destination of the symlink.
833833
Type: `boolean`, Default: `true`
834834

835835
*nvim-tree.renderer.highlight_git*
836-
Enable highlight for git attributes using `NvimTreeGit*` highlight groups.
836+
Enable highlight for git attributes using `NvimTreeGit*HL` highlight groups.
837837
Requires |nvim-tree.git.enable|
838-
Type: `boolean`, Default: `false`
838+
Value can be `"none"`, `"icon"`, `"name"` or `"all"`.
839+
Type: `string`, Default: `"none"`
839840

840841
*nvim-tree.renderer.highlight_diagnostics*
841-
Enable highlight for diagnostics using `NvimTreeDiagnostic*HL` highlight groups.
842+
Enable highlight for diagnostics using `NvimTreeDiagnostic*HL` highlight groups.
842843
Requires |nvim-tree.diagnostics.enable|
843844
Value can be `"none"`, `"icon"`, `"name"` or `"all"`.
844845
Type: `string`, Default: `"none"`
@@ -2256,7 +2257,7 @@ Folder Text: >
22562257
NvimTreeSymlinkFolderName Directory
22572258
<
22582259
Icon: >
2259-
NvimTreeFolderIcon "guifg=#8094b4 ctermfg=Blue"
2260+
NvimTreeFolderIcon guifg=#8094b4 ctermfg=Blue
22602261
NvimTreeFileIcon NvimTreeNormal
22612262
NvimTreeSymlinkIcon NvimTreeNormal
22622263
NvimTreeOpenedFileIcon NvimTreeOpenedFile
@@ -2279,38 +2280,38 @@ Bookmark Highlight: >
22792280
NvimTreeBookmarkHL SpellLocal
22802281
<
22812282
Picker: >
2282-
NvimTreeWindowPicker "guifg=#ededed guibg=#4493c8 gui=bold ctermfg=White ctermbg=Cyan"
2283+
NvimTreeWindowPicker guifg=#ededed guibg=#4493c8 gui=bold ctermfg=White ctermbg=Cyan
22832284
<
22842285
Live Filter: >
22852286
NvimTreeLiveFilterPrefix PreProc
22862287
NvimTreeLiveFilterValue ModeMsg
22872288
<
22882289
Git Icon: >
2289-
NvimTreeGitDeleted Statement
2290-
NvimTreeGitDirty Statement
2291-
NvimTreeGitIgnored Comment
2292-
NvimTreeGitMerge Constant
2293-
NvimTreeGitNew PreProc
2294-
NvimTreeGitRenamed PreProc
2295-
NvimTreeGitStaged Constant
2290+
NvimTreeGitDeletedIcon Statement
2291+
NvimTreeGitDirtyIcon Statement
2292+
NvimTreeGitIgnoredIcon Comment
2293+
NvimTreeGitMergeIcon Constant
2294+
NvimTreeGitNewIcon PreProc
2295+
NvimTreeGitRenamedIcon PreProc
2296+
NvimTreeGitStagedIcon Constant
22962297
<
22972298
Git File Text: >
2298-
NvimTreeFileDirty NvimTreeGitDirty
2299-
NvimTreeFileStaged NvimTreeGitStaged
2300-
NvimTreeFileMerge NvimTreeGitMerge
2301-
NvimTreeFileRenamed NvimTreeGitRenamed
2302-
NvimTreeFileNew NvimTreeGitNew
2303-
NvimTreeFileDeleted NvimTreeGitDeleted
2304-
NvimTreeFileIgnored NvimTreeGitIgnored
2299+
NvimTreeGitFileDeletedHL NvimTreeGitDeletedIcon
2300+
NvimTreeGitFileDirtyHL NvimTreeGitDirtyIcon
2301+
NvimTreeGitFileIgnoredHL NvimTreeGitIgnoredIcon
2302+
NvimTreeGitFileMergeHL NvimTreeGitMergeIcon
2303+
NvimTreeGitFileNewHL NvimTreeGitNewIcon
2304+
NvimTreeGitFileRenamedHL NvimTreeGitRenamedIcon
2305+
NvimTreeGitFileStagedHL NvimTreeGitStagedIcon
23052306
<
23062307
Git Folder Text: >
2307-
NvimTreeFolderDirty NvimTreeFileDirty
2308-
NvimTreeFolderStaged NvimTreeFileStaged
2309-
NvimTreeFolderMerge NvimTreeFileMerge
2310-
NvimTreeFolderRenamed NvimTreeFileRenamed
2311-
NvimTreeFolderNew NvimTreeFileNew
2312-
NvimTreeFolderDeleted NvimTreeFileDeleted
2313-
NvimTreeFolderIgnored NvimTreeFileIgnored
2308+
NvimTreeGitFolderDeletedHL NvimTreeGitFileDeletedHL
2309+
NvimTreeGitFolderDirtyHL NvimTreeGitFileDirtyHL
2310+
NvimTreeGitFolderIgnoredHL NvimTreeGitFileIgnoredHL
2311+
NvimTreeGitFolderMergeHL NvimTreeGitFileMergeHL
2312+
NvimTreeGitFolderNewHL NvimTreeGitFileNewHL
2313+
NvimTreeGitFolderRenamedHL NvimTreeGitFileRenamedHL
2314+
NvimTreeGitFolderStagedHL NvimTreeGitFileStagedHL
23142315
<
23152316
Diagnostics Icon: >
23162317
NvimTreeDiagnosticErrorIcon DiagnosticError
@@ -2325,12 +2326,11 @@ Diagnostics File Highlight: >
23252326
NvimTreeDiagnosticHintFileHL DiagnosticUnderlineHint
23262327
<
23272328
Diagnostics Folder Highlight: >
2328-
NvimTreeDiagnosticErrorFolderHL DiagnosticUnderlineError
2329-
NvimTreeDiagnosticWarnFolderHL DiagnosticUnderlineWarn
2330-
NvimTreeDiagnosticInfoFolderHL DiagnosticUnderlineInfo
2331-
NvimTreeDiagnosticHintFolderHL DiagnosticUnderlineHint
2329+
NvimTreeDiagnosticErrorFolderHL NvimTreeDiagnosticErrorFileHL
2330+
NvimTreeDiagnosticWarnFolderHL NvimTreeDiagnosticWarnFileHL
2331+
NvimTreeDiagnosticInfoFolderHL NvimTreeDiagnosticInfoFileHL
2332+
NvimTreeDiagnosticHintFolderHL NvimTreeDiagnosticHintFileHL
23322333
<
2333-
23342334
==============================================================================
23352335
8.1 HIGHLIGHT OVERHAUL *nvim-tree-highlight-overhaul*
23362336

@@ -2346,7 +2346,7 @@ Diagnostics Folder Highlight: >
23462346
- `highlight_xxx` is additive instead of overwriting. See
23472347
|nvim-tree-opts-renderer| for precedence.
23482348

2349-
Legacy style may be applied: >
2349+
Legacy diagnostic HL style may be applied: >
23502350
23512351
:hi link NvimTreeDiagnosticErrorFileHL DiagnosticError
23522352
:hi link NvimTreeDiagnosticWarnFileHL DiagnosticWarn
@@ -2361,6 +2361,30 @@ Legacy style may be applied: >
23612361
Legacy highlight group are still obeyed when they are defined and the current
23622362
highlight group is not, hard linking as follows: >
23632363
2364+
NvimTreeGitDeletedIcon NvimTreeGitDeleted
2365+
NvimTreeGitDirtyIcon NvimTreeGitDirty
2366+
NvimTreeGitIgnoredIcon NvimTreeGitIgnored
2367+
NvimTreeGitMergeIcon NvimTreeGitMerge
2368+
NvimTreeGitNewIcon NvimTreeGitNew
2369+
NvimTreeGitRenamedIcon NvimTreeGitRenamed
2370+
NvimTreeGitStagedIcon NvimTreeGitStaged
2371+
2372+
NvimTreeGitFileDeletedHL NvimTreeFileDeleted
2373+
NvimTreeGitFileDirtyHL NvimTreeFileDirty
2374+
NvimTreeGitFileIgnoredHL NvimTreeFileIgnored
2375+
NvimTreeGitFileMergeHL NvimTreeFileMerge
2376+
NvimTreeGitFileNewHL NvimTreeFileNew
2377+
NvimTreeGitFileRenamedHL NvimTreeFileRenamed
2378+
NvimTreeGitFileStagedHL NvimTreeFileStaged
2379+
2380+
NvimTreeGitFolderDeletedHL NvimTreeFolderDeleted
2381+
NvimTreeGitFolderDirtyHL NvimTreeFolderDirty
2382+
NvimTreeGitFolderIgnoredHL NvimTreeFolderIgnored
2383+
NvimTreeGitFolderMergeHL NvimTreeFolderMerge
2384+
NvimTreeGitFolderNewHL NvimTreeFolderNew
2385+
NvimTreeGitFolderRenamedHL NvimTreeFolderRenamed
2386+
NvimTreeGitFolderStagedHL NvimTreeFolderStaged
2387+
23642388
NvimTreeLspDiagnosticsError NvimTreeDiagnosticErrorIcon
23652389
NvimTreeLspDiagnosticsWarning NvimTreeDiagnosticWarnIcon
23662390
NvimTreeLspDiagnosticsInformation NvimTreeDiagnosticInfoIcon

lua/nvim-tree.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ local DEFAULT_OPTS = { -- BEGIN_DEFAULT_OPTS
386386
indent_width = 2,
387387
special_files = { "Cargo.toml", "Makefile", "README.md", "readme.md" },
388388
symlink_destination = true,
389-
highlight_git = false,
389+
highlight_git = "none",
390390
highlight_diagnostics = "none",
391391
highlight_opened_files = "none",
392392
highlight_modified = "none",

lua/nvim-tree/colors.lua

Lines changed: 51 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -70,31 +70,31 @@ local DEFAULT_LINKS = {
7070
NvimTreeLiveFilterValue = "ModeMsg",
7171

7272
-- Git Icon
73-
NvimTreeGitDeleted = "Statement",
74-
NvimTreeGitDirty = "Statement",
75-
NvimTreeGitIgnored = "Comment",
76-
NvimTreeGitMerge = "Constant",
77-
NvimTreeGitNew = "PreProc",
78-
NvimTreeGitRenamed = "PreProc",
79-
NvimTreeGitStaged = "Constant",
73+
NvimTreeGitDeletedIcon = "Statement",
74+
NvimTreeGitDirtyIcon = "Statement",
75+
NvimTreeGitIgnoredIcon = "Comment",
76+
NvimTreeGitMergeIcon = "Constant",
77+
NvimTreeGitNewIcon = "PreProc",
78+
NvimTreeGitRenamedIcon = "PreProc",
79+
NvimTreeGitStagedIcon = "Constant",
8080

8181
-- Git File Text
82-
NvimTreeFileDirty = "NvimTreeGitDirty",
83-
NvimTreeFileStaged = "NvimTreeGitStaged",
84-
NvimTreeFileMerge = "NvimTreeGitMerge",
85-
NvimTreeFileRenamed = "NvimTreeGitRenamed",
86-
NvimTreeFileNew = "NvimTreeGitNew",
87-
NvimTreeFileDeleted = "NvimTreeGitDeleted",
88-
NvimTreeFileIgnored = "NvimTreeGitIgnored",
82+
NvimTreeGitFileDeletedHL = "NvimTreeGitDeletedIcon",
83+
NvimTreeGitFileDirtyHL = "NvimTreeGitDirtyIcon",
84+
NvimTreeGitFileIgnoredHL = "NvimTreeGitIgnoredIcon",
85+
NvimTreeGitFileMergeHL = "NvimTreeGitMergeIcon",
86+
NvimTreeGitFileNewHL = "NvimTreeGitNewIcon",
87+
NvimTreeGitFileRenamedHL = "NvimTreeGitRenamedIcon",
88+
NvimTreeGitFileStagedHL = "NvimTreeGitStagedIcon",
8989

9090
-- Git Folder Text
91-
NvimTreeFolderDirty = "NvimTreeFileDirty",
92-
NvimTreeFolderStaged = "NvimTreeFileStaged",
93-
NvimTreeFolderMerge = "NvimTreeFileMerge",
94-
NvimTreeFolderRenamed = "NvimTreeFileRenamed",
95-
NvimTreeFolderNew = "NvimTreeFileNew",
96-
NvimTreeFolderDeleted = "NvimTreeFileDeleted",
97-
NvimTreeFolderIgnored = "NvimTreeFileIgnored",
91+
NvimTreeGitFolderDeletedHL = "NvimTreeGitFileDeletedHL",
92+
NvimTreeGitFolderDirtyHL = "NvimTreeGitFileDirtyHL",
93+
NvimTreeGitFolderIgnoredHL = "NvimTreeGitFileIgnoredHL",
94+
NvimTreeGitFolderMergeHL = "NvimTreeGitFileMergeHL",
95+
NvimTreeGitFolderNewHL = "NvimTreeGitFileNewHL",
96+
NvimTreeGitFolderRenamedHL = "NvimTreeGitFileRenamedHL",
97+
NvimTreeGitFolderStagedHL = "NvimTreeGitFileStagedHL",
9898

9999
-- Diagnostics Icon
100100
NvimTreeDiagnosticErrorIcon = "DiagnosticError",
@@ -109,22 +109,48 @@ local DEFAULT_LINKS = {
109109
NvimTreeDiagnosticHintFileHL = "DiagnosticUnderlineHint",
110110

111111
-- Diagnostics Folder Highlight
112-
NvimTreeDiagnosticErrorFolderHL = "DiagnosticUnderlineError",
113-
NvimTreeDiagnosticWarnFolderHL = "DiagnosticUnderlineWarn",
114-
NvimTreeDiagnosticInfoFolderHL = "DiagnosticUnderlineInfo",
115-
NvimTreeDiagnosticHintFolderHL = "DiagnosticUnderlineHint",
112+
NvimTreeDiagnosticErrorFolderHL = "NvimTreeDiagnosticErrorFileHL",
113+
NvimTreeDiagnosticWarnFolderHL = "NvimTreeDiagnosticWarnFileHL",
114+
NvimTreeDiagnosticInfoFolderHL = "NvimTreeDiagnosticInfoFileHL",
115+
NvimTreeDiagnosticHintFolderHL = "NvimTreeDiagnosticHintFileHL",
116116
}
117117

118118
-- nvim-tree highlight groups to legacy
119119
local LEGACY_LINKS = {
120+
NvimTreeGitDeletedIcon = "NvimTreeGitDeleted",
121+
NvimTreeGitDirtyIcon = "NvimTreeGitDirty",
122+
NvimTreeGitIgnoredIcon = "NvimTreeGitIgnored",
123+
NvimTreeGitMergeIcon = "NvimTreeGitMerge",
124+
NvimTreeGitNewIcon = "NvimTreeGitNew",
125+
NvimTreeGitRenamedIcon = "NvimTreeGitRenamed",
126+
NvimTreeGitStagedIcon = "NvimTreeGitStaged",
127+
128+
NvimTreeGitFileDeletedHL = "NvimTreeFileDeleted",
129+
NvimTreeGitFileDirtyHL = "NvimTreeFileDirty",
130+
NvimTreeGitFileIgnoredHL = "NvimTreeFileIgnored",
131+
NvimTreeGitFileMergeHL = "NvimTreeFileMerge",
132+
NvimTreeGitFileNewHL = "NvimTreeFileNew",
133+
NvimTreeGitFileRenamedHL = "NvimTreeFileRenamed",
134+
NvimTreeGitFileStagedHL = "NvimTreeFileStaged",
135+
136+
NvimTreeGitFolderDeletedHL = "NvimTreeFolderDeleted",
137+
NvimTreeGitFolderDirtyHL = "NvimTreeFolderDirty",
138+
NvimTreeGitFolderIgnoredHL = "NvimTreeFolderIgnored",
139+
NvimTreeGitFolderMergeHL = "NvimTreeFolderMerge",
140+
NvimTreeGitFolderNewHL = "NvimTreeFolderNew",
141+
NvimTreeGitFolderRenamedHL = "NvimTreeFolderRenamed",
142+
NvimTreeGitFolderStagedHL = "NvimTreeFolderStaged",
143+
120144
NvimTreeDiagnosticErrorIcon = "NvimTreeLspDiagnosticsError",
121145
NvimTreeDiagnosticWarnIcon = "NvimTreeLspDiagnosticsWarning",
122146
NvimTreeDiagnosticInfoIcon = "NvimTreeLspDiagnosticsInformation",
123147
NvimTreeDiagnosticHintIcon = "NvimTreeLspDiagnosticsHint",
148+
124149
NvimTreeDiagnosticErrorFileHL = "NvimTreeLspDiagnosticsErrorText",
125150
NvimTreeDiagnosticWarnFileHL = "NvimTreeLspDiagnosticsWarningText",
126151
NvimTreeDiagnosticInfoFileHL = "NvimTreeLspDiagnosticsInformationText",
127152
NvimTreeDiagnosticHintFileHL = "NvimTreeLspDiagnosticsHintText",
153+
128154
NvimTreeDiagnosticErrorFolderHL = "NvimTreeLspDiagnosticsErrorFolderText",
129155
NvimTreeDiagnosticWarnFolderHL = "NvimTreeLspDiagnosticsWarningFolderText",
130156
NvimTreeDiagnosticInfoFolderHL = "NvimTreeLspDiagnosticsInformationFolderText",

lua/nvim-tree/legacy.lua

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,12 @@ local function refactored(opts)
4444

4545
-- 2023/10/08
4646
if type(opts.renderer) == "table" and type(opts.renderer.highlight_diagnostics) == "boolean" then
47-
if opts.renderer.highlight_diagnostics then
48-
opts.renderer.highlight_diagnostics = "name"
49-
else
50-
opts.renderer.highlight_diagnostics = "none"
51-
end
47+
opts.renderer.highlight_diagnostics = opts.renderer.highlight_diagnostics and "name" or "none"
48+
end
49+
50+
-- 2023/10/21
51+
if type(opts.renderer) == "table" and type(opts.renderer.highlight_git) == "boolean" then
52+
opts.renderer.highlight_git = opts.renderer.highlight_git and "name" or "none"
5253
end
5354
end
5455

lua/nvim-tree/renderer/builder.lua

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -303,12 +303,6 @@ end
303303
function Builder:_get_highlight_override(node, unloaded_bufnr)
304304
local name_hl, icon_hl
305305

306-
-- git
307-
local git_highlight = git.get_highlight(node)
308-
if git_highlight then
309-
name_hl = git_highlight
310-
end
311-
312306
-- opened file
313307
if self.highlight_opened_files and vim.fn.bufloaded(node.absolute_path) > 0 and vim.fn.bufnr(node.absolute_path) ~= unloaded_bufnr then
314308
if self.highlight_opened_files == "all" or self.highlight_opened_files == "name" then
@@ -445,6 +439,7 @@ function Builder:_build_line(node, idx, num_children, unloaded_bufnr)
445439
end
446440

447441
-- extra highighting
442+
self:_append_highlight(node, git.get_highlight, icon.hl, name.hl)
448443
self:_append_highlight(node, bookmarks.get_highlight, icon.hl, name.hl)
449444
self:_append_highlight(node, diagnostics.get_highlight, icon.hl, name.hl)
450445
self:_append_highlight(node, copy_paste.get_highlight, icon.hl, name.hl)

lua/nvim-tree/renderer/components/bookmarks.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ local M = {
77
hl_pos = HL_POSITION.none,
88
}
99

10-
---Bookmark highlight group and position when highlight_bookmark.
10+
---Bookmark highlight group and position when highlight_bookmark
1111
---@param node table
1212
---@return HL_POSITION position none when clipboard empty
1313
---@return string|nil group only when node present in clipboard

lua/nvim-tree/renderer/components/diagnostics.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ local M = {
1313
HL_POS = HL_POSITION.none,
1414
}
1515

16-
---Diagnostics text highlight group when highlight_diagnostics.
16+
---Diagnostics highlight group and position when highlight_diagnostics.
1717
---@param node table
1818
---@return HL_POSITION position none when no status
1919
---@return string|nil group only when status

0 commit comments

Comments
 (0)