Skip to content

Commit 6b7a563

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 c380ea4 commit 6b7a563

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
@@ -387,7 +387,7 @@ Following is the default configuration. See |nvim-tree-opts| for details.
387387
indent_width = 2,
388388
special_files = { "Cargo.toml", "Makefile", "README.md", "readme.md" },
389389
symlink_destination = true,
390-
highlight_git = false,
390+
highlight_git = "none",
391391
highlight_diagnostics = "none",
392392
highlight_opened_files = "none",
393393
highlight_modified = "none",
@@ -832,12 +832,13 @@ Whether to show the destination of the symlink.
832832
Type: `boolean`, Default: `true`
833833

834834
*nvim-tree.renderer.highlight_git*
835-
Enable highlight for git attributes using `NvimTreeGit*` highlight groups.
835+
Enable highlight for git attributes using `NvimTreeGit*HL` highlight groups.
836836
Requires |nvim-tree.git.enable|
837-
Type: `boolean`, Default: `false`
837+
Value can be `"none"`, `"icon"`, `"name"` or `"all"`.
838+
Type: `string`, Default: `"none"`
838839

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

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

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

lua/nvim-tree.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ local DEFAULT_OPTS = { -- BEGIN_DEFAULT_OPTS
390390
indent_width = 2,
391391
special_files = { "Cargo.toml", "Makefile", "README.md", "readme.md" },
392392
symlink_destination = true,
393-
highlight_git = false,
393+
highlight_git = "none",
394394
highlight_diagnostics = "none",
395395
highlight_opened_files = "none",
396396
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
@@ -12,7 +12,7 @@ local M = {
1212
HL_POS = HL_POSITION.none,
1313
}
1414

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

0 commit comments

Comments
 (0)