Skip to content

Commit edbda99

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 e389c55 commit edbda99

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"`
@@ -2280,7 +2281,7 @@ Folder Text: >
22802281
NvimTreeSymlinkFolderName Directory
22812282
<
22822283
Icon: >
2283-
NvimTreeFolderIcon "guifg=#8094b4 ctermfg=Blue"
2284+
NvimTreeFolderIcon guifg=#8094b4 ctermfg=Blue
22842285
NvimTreeFileIcon NvimTreeNormal
22852286
NvimTreeSymlinkIcon NvimTreeNormal
22862287
NvimTreeOpenedFileIcon NvimTreeOpenedFile
@@ -2303,38 +2304,38 @@ Bookmark Highlight: >
23032304
NvimTreeBookmarkHL SpellLocal
23042305
<
23052306
Picker: >
2306-
NvimTreeWindowPicker "guifg=#ededed guibg=#4493c8 gui=bold ctermfg=White ctermbg=Cyan"
2307+
NvimTreeWindowPicker guifg=#ededed guibg=#4493c8 gui=bold ctermfg=White ctermbg=Cyan
23072308
<
23082309
Live Filter: >
23092310
NvimTreeLiveFilterPrefix PreProc
23102311
NvimTreeLiveFilterValue ModeMsg
23112312
<
23122313
Git Icon: >
2313-
NvimTreeGitDeleted Statement
2314-
NvimTreeGitDirty Statement
2315-
NvimTreeGitIgnored Comment
2316-
NvimTreeGitMerge Constant
2317-
NvimTreeGitNew PreProc
2318-
NvimTreeGitRenamed PreProc
2319-
NvimTreeGitStaged Constant
2314+
NvimTreeGitDeletedIcon Statement
2315+
NvimTreeGitDirtyIcon Statement
2316+
NvimTreeGitIgnoredIcon Comment
2317+
NvimTreeGitMergeIcon Constant
2318+
NvimTreeGitNewIcon PreProc
2319+
NvimTreeGitRenamedIcon PreProc
2320+
NvimTreeGitStagedIcon Constant
23202321
<
23212322
Git File Text: >
2322-
NvimTreeFileDirty NvimTreeGitDirty
2323-
NvimTreeFileStaged NvimTreeGitStaged
2324-
NvimTreeFileMerge NvimTreeGitMerge
2325-
NvimTreeFileRenamed NvimTreeGitRenamed
2326-
NvimTreeFileNew NvimTreeGitNew
2327-
NvimTreeFileDeleted NvimTreeGitDeleted
2328-
NvimTreeFileIgnored NvimTreeGitIgnored
2323+
NvimTreeGitFileDeletedHL NvimTreeGitDeletedIcon
2324+
NvimTreeGitFileDirtyHL NvimTreeGitDirtyIcon
2325+
NvimTreeGitFileIgnoredHL NvimTreeGitIgnoredIcon
2326+
NvimTreeGitFileMergeHL NvimTreeGitMergeIcon
2327+
NvimTreeGitFileNewHL NvimTreeGitNewIcon
2328+
NvimTreeGitFileRenamedHL NvimTreeGitRenamedIcon
2329+
NvimTreeGitFileStagedHL NvimTreeGitStagedIcon
23292330
<
23302331
Git Folder Text: >
2331-
NvimTreeFolderDirty NvimTreeFileDirty
2332-
NvimTreeFolderStaged NvimTreeFileStaged
2333-
NvimTreeFolderMerge NvimTreeFileMerge
2334-
NvimTreeFolderRenamed NvimTreeFileRenamed
2335-
NvimTreeFolderNew NvimTreeFileNew
2336-
NvimTreeFolderDeleted NvimTreeFileDeleted
2337-
NvimTreeFolderIgnored NvimTreeFileIgnored
2332+
NvimTreeGitFolderDeletedHL NvimTreeGitFileDeletedHL
2333+
NvimTreeGitFolderDirtyHL NvimTreeGitFileDirtyHL
2334+
NvimTreeGitFolderIgnoredHL NvimTreeGitFileIgnoredHL
2335+
NvimTreeGitFolderMergeHL NvimTreeGitFileMergeHL
2336+
NvimTreeGitFolderNewHL NvimTreeGitFileNewHL
2337+
NvimTreeGitFolderRenamedHL NvimTreeGitFileRenamedHL
2338+
NvimTreeGitFolderStagedHL NvimTreeGitFileStagedHL
23382339
<
23392340
Diagnostics Icon: >
23402341
NvimTreeDiagnosticErrorIcon DiagnosticError
@@ -2349,12 +2350,11 @@ Diagnostics File Highlight: >
23492350
NvimTreeDiagnosticHintFileHL DiagnosticUnderlineHint
23502351
<
23512352
Diagnostics Folder Highlight: >
2352-
NvimTreeDiagnosticErrorFolderHL DiagnosticUnderlineError
2353-
NvimTreeDiagnosticWarnFolderHL DiagnosticUnderlineWarn
2354-
NvimTreeDiagnosticInfoFolderHL DiagnosticUnderlineInfo
2355-
NvimTreeDiagnosticHintFolderHL DiagnosticUnderlineHint
2353+
NvimTreeDiagnosticErrorFolderHL NvimTreeDiagnosticErrorFileHL
2354+
NvimTreeDiagnosticWarnFolderHL NvimTreeDiagnosticWarnFileHL
2355+
NvimTreeDiagnosticInfoFolderHL NvimTreeDiagnosticInfoFileHL
2356+
NvimTreeDiagnosticHintFolderHL NvimTreeDiagnosticHintFileHL
23562357
<
2357-
23582358
==============================================================================
23592359
8.1 HIGHLIGHT OVERHAUL *nvim-tree-highlight-overhaul*
23602360

@@ -2370,7 +2370,7 @@ Diagnostics Folder Highlight: >
23702370
- `highlight_xxx` is additive instead of overwriting. See
23712371
|nvim-tree-opts-renderer| for precedence.
23722372

2373-
Legacy style may be applied: >
2373+
Legacy diagnostic HL style may be applied: >
23742374
23752375
:hi link NvimTreeDiagnosticErrorFileHL DiagnosticError
23762376
:hi link NvimTreeDiagnosticWarnFileHL DiagnosticWarn
@@ -2385,6 +2385,30 @@ Legacy style may be applied: >
23852385
Legacy highlight group are still obeyed when they are defined and the current
23862386
highlight group is not, hard linking as follows: >
23872387
2388+
NvimTreeGitDeletedIcon NvimTreeGitDeleted
2389+
NvimTreeGitDirtyIcon NvimTreeGitDirty
2390+
NvimTreeGitIgnoredIcon NvimTreeGitIgnored
2391+
NvimTreeGitMergeIcon NvimTreeGitMerge
2392+
NvimTreeGitNewIcon NvimTreeGitNew
2393+
NvimTreeGitRenamedIcon NvimTreeGitRenamed
2394+
NvimTreeGitStagedIcon NvimTreeGitStaged
2395+
2396+
NvimTreeGitFileDeletedHL NvimTreeFileDeleted
2397+
NvimTreeGitFileDirtyHL NvimTreeFileDirty
2398+
NvimTreeGitFileIgnoredHL NvimTreeFileIgnored
2399+
NvimTreeGitFileMergeHL NvimTreeFileMerge
2400+
NvimTreeGitFileNewHL NvimTreeFileNew
2401+
NvimTreeGitFileRenamedHL NvimTreeFileRenamed
2402+
NvimTreeGitFileStagedHL NvimTreeFileStaged
2403+
2404+
NvimTreeGitFolderDeletedHL NvimTreeFolderDeleted
2405+
NvimTreeGitFolderDirtyHL NvimTreeFolderDirty
2406+
NvimTreeGitFolderIgnoredHL NvimTreeFolderIgnored
2407+
NvimTreeGitFolderMergeHL NvimTreeFolderMerge
2408+
NvimTreeGitFolderNewHL NvimTreeFolderNew
2409+
NvimTreeGitFolderRenamedHL NvimTreeFolderRenamed
2410+
NvimTreeGitFolderStagedHL NvimTreeFolderStaged
2411+
23882412
NvimTreeLspDiagnosticsError NvimTreeDiagnosticErrorIcon
23892413
NvimTreeLspDiagnosticsWarning NvimTreeDiagnosticWarnIcon
23902414
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)