Skip to content

feat(#2415): granular highlight_diagnostics, normalise groups #2487

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Oct 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

Thank you for contributing.

See [Development](https://github.com/nvim-tree/nvim-tree.lua/wiki/Development) for environment setup, tips and tools.

## Styling and formatting

Code is formatted using luacheck, and linted using stylua.
Expand All @@ -24,7 +26,7 @@ Once you did, you should run the `scripts/update-help.sh`.
When adding new options, you should declare the defaults in the main `nvim-tree.lua` file.
Once you did, you should run the `scripts/update-help.sh`.

Documentation for options should also be added, see how this is done after `nvim-tree.disable_netrw` in the `nvim-tree-lua.txt` file.
Documentation for options should also be added to `nvim-tree-opts` in `doc/nvim-tree-lua.txt`

## Pull Request

Expand Down
90 changes: 57 additions & 33 deletions doc/nvim-tree-lua.txt
Original file line number Diff line number Diff line change
Expand Up @@ -385,7 +385,7 @@ Following is the default configuration. See |nvim-tree-opts| for details.
indent_width = 2,
special_files = { "Cargo.toml", "Makefile", "README.md", "readme.md" },
symlink_destination = true,
highlight_git = false,
highlight_git = "none",
highlight_diagnostics = "none",
highlight_opened_files = "none",
highlight_modified = "none",
Expand Down Expand Up @@ -822,12 +822,13 @@ Whether to show the destination of the symlink.
Type: `boolean`, Default: `true`

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

*nvim-tree.renderer.highlight_diagnostics*
Enable highlight for diagnostics using `NvimTreeDiagnostic*HL` highlight groups.
Enable highlight for diagnostics using `NvimTreeDiagnostic*HL` highlight groups.
Requires |nvim-tree.diagnostics.enable|
Value can be `"none"`, `"icon"`, `"name"` or `"all"`.
Type: `string`, Default: `"none"`
Expand Down Expand Up @@ -2195,7 +2196,7 @@ Folder Text: >
NvimTreeSymlinkFolderName Directory
<
Icon: >
NvimTreeFolderIcon "guifg=#8094b4 ctermfg=Blue"
NvimTreeFolderIcon guifg=#8094b4 ctermfg=Blue
NvimTreeFileIcon NvimTreeNormal
NvimTreeSymlinkIcon NvimTreeNormal
NvimTreeOpenedFileIcon NvimTreeOpenedFile
Expand All @@ -2218,38 +2219,38 @@ Bookmark Highlight: >
NvimTreeBookmarkHL SpellLocal
<
Picker: >
NvimTreeWindowPicker "guifg=#ededed guibg=#4493c8 gui=bold ctermfg=White ctermbg=Cyan"
NvimTreeWindowPicker guifg=#ededed guibg=#4493c8 gui=bold ctermfg=White ctermbg=Cyan
<
Live Filter: >
NvimTreeLiveFilterPrefix PreProc
NvimTreeLiveFilterValue ModeMsg
<
Git Icon: >
NvimTreeGitDeleted Statement
NvimTreeGitDirty Statement
NvimTreeGitIgnored Comment
NvimTreeGitMerge Constant
NvimTreeGitNew PreProc
NvimTreeGitRenamed PreProc
NvimTreeGitStaged Constant
NvimTreeGitDeletedIcon Statement
NvimTreeGitDirtyIcon Statement
NvimTreeGitIgnoredIcon Comment
NvimTreeGitMergeIcon Constant
NvimTreeGitNewIcon PreProc
NvimTreeGitRenamedIcon PreProc
NvimTreeGitStagedIcon Constant
<
Git File Text: >
NvimTreeFileDirty NvimTreeGitDirty
NvimTreeFileStaged NvimTreeGitStaged
NvimTreeFileMerge NvimTreeGitMerge
NvimTreeFileRenamed NvimTreeGitRenamed
NvimTreeFileNew NvimTreeGitNew
NvimTreeFileDeleted NvimTreeGitDeleted
NvimTreeFileIgnored NvimTreeGitIgnored
NvimTreeGitFileDeletedHL NvimTreeGitDeletedIcon
NvimTreeGitFileDirtyHL NvimTreeGitDirtyIcon
NvimTreeGitFileIgnoredHL NvimTreeGitIgnoredIcon
NvimTreeGitFileMergeHL NvimTreeGitMergeIcon
NvimTreeGitFileNewHL NvimTreeGitNewIcon
NvimTreeGitFileRenamedHL NvimTreeGitRenamedIcon
NvimTreeGitFileStagedHL NvimTreeGitStagedIcon
<
Git Folder Text: >
NvimTreeFolderDirty NvimTreeFileDirty
NvimTreeFolderStaged NvimTreeFileStaged
NvimTreeFolderMerge NvimTreeFileMerge
NvimTreeFolderRenamed NvimTreeFileRenamed
NvimTreeFolderNew NvimTreeFileNew
NvimTreeFolderDeleted NvimTreeFileDeleted
NvimTreeFolderIgnored NvimTreeFileIgnored
NvimTreeGitFolderDeletedHL NvimTreeGitFileDeletedHL
NvimTreeGitFolderDirtyHL NvimTreeGitFileDirtyHL
NvimTreeGitFolderIgnoredHL NvimTreeGitFileIgnoredHL
NvimTreeGitFolderMergeHL NvimTreeGitFileMergeHL
NvimTreeGitFolderNewHL NvimTreeGitFileNewHL
NvimTreeGitFolderRenamedHL NvimTreeGitFileRenamedHL
NvimTreeGitFolderStagedHL NvimTreeGitFileStagedHL
<
Diagnostics Icon: >
NvimTreeDiagnosticErrorIcon DiagnosticError
Expand All @@ -2264,12 +2265,11 @@ Diagnostics File Highlight: >
NvimTreeDiagnosticHintFileHL DiagnosticUnderlineHint
<
Diagnostics Folder Highlight: >
NvimTreeDiagnosticErrorFolderHL DiagnosticUnderlineError
NvimTreeDiagnosticWarnFolderHL DiagnosticUnderlineWarn
NvimTreeDiagnosticInfoFolderHL DiagnosticUnderlineInfo
NvimTreeDiagnosticHintFolderHL DiagnosticUnderlineHint
NvimTreeDiagnosticErrorFolderHL NvimTreeDiagnosticErrorFileHL
NvimTreeDiagnosticWarnFolderHL NvimTreeDiagnosticWarnFileHL
NvimTreeDiagnosticInfoFolderHL NvimTreeDiagnosticInfoFileHL
NvimTreeDiagnosticHintFolderHL NvimTreeDiagnosticHintFileHL
<

==============================================================================
8.1 HIGHLIGHT OVERHAUL *nvim-tree-highlight-overhaul*

Expand All @@ -2285,7 +2285,7 @@ Diagnostics Folder Highlight: >
- `highlight_xxx` is additive instead of overwriting. See
|nvim-tree-opts-renderer| for precedence.

Legacy style may be applied: >
Legacy diagnostic HL style may be applied: >

:hi link NvimTreeDiagnosticErrorFileHL DiagnosticError
:hi link NvimTreeDiagnosticWarnFileHL DiagnosticWarn
Expand All @@ -2300,6 +2300,30 @@ Legacy style may be applied: >
Legacy highlight group are still obeyed when they are defined and the current
highlight group is not, hard linking as follows: >

NvimTreeGitDeletedIcon NvimTreeGitDeleted
NvimTreeGitDirtyIcon NvimTreeGitDirty
NvimTreeGitIgnoredIcon NvimTreeGitIgnored
NvimTreeGitMergeIcon NvimTreeGitMerge
NvimTreeGitNewIcon NvimTreeGitNew
NvimTreeGitRenamedIcon NvimTreeGitRenamed
NvimTreeGitStagedIcon NvimTreeGitStaged

NvimTreeGitFileDeletedHL NvimTreeFileDeleted
NvimTreeGitFileDirtyHL NvimTreeFileDirty
NvimTreeGitFileIgnoredHL NvimTreeFileIgnored
NvimTreeGitFileMergeHL NvimTreeFileMerge
NvimTreeGitFileNewHL NvimTreeFileNew
NvimTreeGitFileRenamedHL NvimTreeFileRenamed
NvimTreeGitFileStagedHL NvimTreeFileStaged

NvimTreeGitFolderDeletedHL NvimTreeFolderDeleted
NvimTreeGitFolderDirtyHL NvimTreeFolderDirty
NvimTreeGitFolderIgnoredHL NvimTreeFolderIgnored
NvimTreeGitFolderMergeHL NvimTreeFolderMerge
NvimTreeGitFolderNewHL NvimTreeFolderNew
NvimTreeGitFolderRenamedHL NvimTreeFolderRenamed
NvimTreeGitFolderStagedHL NvimTreeFolderStaged

NvimTreeLspDiagnosticsError NvimTreeDiagnosticErrorIcon
NvimTreeLspDiagnosticsWarning NvimTreeDiagnosticWarnIcon
NvimTreeLspDiagnosticsInformation NvimTreeDiagnosticInfoIcon
Expand Down
2 changes: 1 addition & 1 deletion lua/nvim-tree.lua
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,7 @@ local DEFAULT_OPTS = { -- BEGIN_DEFAULT_OPTS
indent_width = 2,
special_files = { "Cargo.toml", "Makefile", "README.md", "readme.md" },
symlink_destination = true,
highlight_git = false,
highlight_git = "none",
highlight_diagnostics = "none",
highlight_opened_files = "none",
highlight_modified = "none",
Expand Down
76 changes: 51 additions & 25 deletions lua/nvim-tree/colors.lua
Original file line number Diff line number Diff line change
Expand Up @@ -70,31 +70,31 @@ local DEFAULT_LINKS = {
NvimTreeLiveFilterValue = "ModeMsg",

-- Git Icon
NvimTreeGitDeleted = "Statement",
NvimTreeGitDirty = "Statement",
NvimTreeGitIgnored = "Comment",
NvimTreeGitMerge = "Constant",
NvimTreeGitNew = "PreProc",
NvimTreeGitRenamed = "PreProc",
NvimTreeGitStaged = "Constant",
NvimTreeGitDeletedIcon = "Statement",
NvimTreeGitDirtyIcon = "Statement",
NvimTreeGitIgnoredIcon = "Comment",
NvimTreeGitMergeIcon = "Constant",
NvimTreeGitNewIcon = "PreProc",
NvimTreeGitRenamedIcon = "PreProc",
NvimTreeGitStagedIcon = "Constant",

-- Git File Text
NvimTreeFileDirty = "NvimTreeGitDirty",
NvimTreeFileStaged = "NvimTreeGitStaged",
NvimTreeFileMerge = "NvimTreeGitMerge",
NvimTreeFileRenamed = "NvimTreeGitRenamed",
NvimTreeFileNew = "NvimTreeGitNew",
NvimTreeFileDeleted = "NvimTreeGitDeleted",
NvimTreeFileIgnored = "NvimTreeGitIgnored",
NvimTreeGitFileDeletedHL = "NvimTreeGitDeletedIcon",
NvimTreeGitFileDirtyHL = "NvimTreeGitDirtyIcon",
NvimTreeGitFileIgnoredHL = "NvimTreeGitIgnoredIcon",
NvimTreeGitFileMergeHL = "NvimTreeGitMergeIcon",
NvimTreeGitFileNewHL = "NvimTreeGitNewIcon",
NvimTreeGitFileRenamedHL = "NvimTreeGitRenamedIcon",
NvimTreeGitFileStagedHL = "NvimTreeGitStagedIcon",

-- Git Folder Text
NvimTreeFolderDirty = "NvimTreeFileDirty",
NvimTreeFolderStaged = "NvimTreeFileStaged",
NvimTreeFolderMerge = "NvimTreeFileMerge",
NvimTreeFolderRenamed = "NvimTreeFileRenamed",
NvimTreeFolderNew = "NvimTreeFileNew",
NvimTreeFolderDeleted = "NvimTreeFileDeleted",
NvimTreeFolderIgnored = "NvimTreeFileIgnored",
NvimTreeGitFolderDeletedHL = "NvimTreeGitFileDeletedHL",
NvimTreeGitFolderDirtyHL = "NvimTreeGitFileDirtyHL",
NvimTreeGitFolderIgnoredHL = "NvimTreeGitFileIgnoredHL",
NvimTreeGitFolderMergeHL = "NvimTreeGitFileMergeHL",
NvimTreeGitFolderNewHL = "NvimTreeGitFileNewHL",
NvimTreeGitFolderRenamedHL = "NvimTreeGitFileRenamedHL",
NvimTreeGitFolderStagedHL = "NvimTreeGitFileStagedHL",

-- Diagnostics Icon
NvimTreeDiagnosticErrorIcon = "DiagnosticError",
Expand All @@ -109,22 +109,48 @@ local DEFAULT_LINKS = {
NvimTreeDiagnosticHintFileHL = "DiagnosticUnderlineHint",

-- Diagnostics Folder Highlight
NvimTreeDiagnosticErrorFolderHL = "DiagnosticUnderlineError",
NvimTreeDiagnosticWarnFolderHL = "DiagnosticUnderlineWarn",
NvimTreeDiagnosticInfoFolderHL = "DiagnosticUnderlineInfo",
NvimTreeDiagnosticHintFolderHL = "DiagnosticUnderlineHint",
NvimTreeDiagnosticErrorFolderHL = "NvimTreeDiagnosticErrorFileHL",
NvimTreeDiagnosticWarnFolderHL = "NvimTreeDiagnosticWarnFileHL",
NvimTreeDiagnosticInfoFolderHL = "NvimTreeDiagnosticInfoFileHL",
NvimTreeDiagnosticHintFolderHL = "NvimTreeDiagnosticHintFileHL",
}

-- nvim-tree highlight groups to legacy
local LEGACY_LINKS = {
NvimTreeGitDeletedIcon = "NvimTreeGitDeleted",
NvimTreeGitDirtyIcon = "NvimTreeGitDirty",
NvimTreeGitIgnoredIcon = "NvimTreeGitIgnored",
NvimTreeGitMergeIcon = "NvimTreeGitMerge",
NvimTreeGitNewIcon = "NvimTreeGitNew",
NvimTreeGitRenamedIcon = "NvimTreeGitRenamed",
NvimTreeGitStagedIcon = "NvimTreeGitStaged",

NvimTreeGitFileDeletedHL = "NvimTreeFileDeleted",
NvimTreeGitFileDirtyHL = "NvimTreeFileDirty",
NvimTreeGitFileIgnoredHL = "NvimTreeFileIgnored",
NvimTreeGitFileMergeHL = "NvimTreeFileMerge",
NvimTreeGitFileNewHL = "NvimTreeFileNew",
NvimTreeGitFileRenamedHL = "NvimTreeFileRenamed",
NvimTreeGitFileStagedHL = "NvimTreeFileStaged",

NvimTreeGitFolderDeletedHL = "NvimTreeFolderDeleted",
NvimTreeGitFolderDirtyHL = "NvimTreeFolderDirty",
NvimTreeGitFolderIgnoredHL = "NvimTreeFolderIgnored",
NvimTreeGitFolderMergeHL = "NvimTreeFolderMerge",
NvimTreeGitFolderNewHL = "NvimTreeFolderNew",
NvimTreeGitFolderRenamedHL = "NvimTreeFolderRenamed",
NvimTreeGitFolderStagedHL = "NvimTreeFolderStaged",

NvimTreeDiagnosticErrorIcon = "NvimTreeLspDiagnosticsError",
NvimTreeDiagnosticWarnIcon = "NvimTreeLspDiagnosticsWarning",
NvimTreeDiagnosticInfoIcon = "NvimTreeLspDiagnosticsInformation",
NvimTreeDiagnosticHintIcon = "NvimTreeLspDiagnosticsHint",

NvimTreeDiagnosticErrorFileHL = "NvimTreeLspDiagnosticsErrorText",
NvimTreeDiagnosticWarnFileHL = "NvimTreeLspDiagnosticsWarningText",
NvimTreeDiagnosticInfoFileHL = "NvimTreeLspDiagnosticsInformationText",
NvimTreeDiagnosticHintFileHL = "NvimTreeLspDiagnosticsHintText",

NvimTreeDiagnosticErrorFolderHL = "NvimTreeLspDiagnosticsErrorFolderText",
NvimTreeDiagnosticWarnFolderHL = "NvimTreeLspDiagnosticsWarningFolderText",
NvimTreeDiagnosticInfoFolderHL = "NvimTreeLspDiagnosticsInformationFolderText",
Expand Down
11 changes: 6 additions & 5 deletions lua/nvim-tree/legacy.lua
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,12 @@ local function refactored(opts)

-- 2023/10/08
if type(opts.renderer) == "table" and type(opts.renderer.highlight_diagnostics) == "boolean" then
if opts.renderer.highlight_diagnostics then
opts.renderer.highlight_diagnostics = "name"
else
opts.renderer.highlight_diagnostics = "none"
end
opts.renderer.highlight_diagnostics = opts.renderer.highlight_diagnostics and "name" or "none"
end

-- 2023/10/21
if type(opts.renderer) == "table" and type(opts.renderer.highlight_git) == "boolean" then
opts.renderer.highlight_git = opts.renderer.highlight_git and "name" or "none"
end
end

Expand Down
7 changes: 1 addition & 6 deletions lua/nvim-tree/renderer/builder.lua
Original file line number Diff line number Diff line change
Expand Up @@ -285,12 +285,6 @@ end
function Builder:_get_highlight_override(node, unloaded_bufnr)
local name_hl, icon_hl

-- git
local git_highlight = git.get_highlight(node)
if git_highlight then
name_hl = git_highlight
end

-- opened file
if self.highlight_opened_files and vim.fn.bufloaded(node.absolute_path) > 0 and vim.fn.bufnr(node.absolute_path) ~= unloaded_bufnr then
if self.highlight_opened_files == "all" or self.highlight_opened_files == "name" then
Expand Down Expand Up @@ -427,6 +421,7 @@ function Builder:_build_line(node, idx, num_children, unloaded_bufnr)
end

-- extra highighting
self:_append_highlight(node, git.get_highlight, icon.hl, name.hl)
self:_append_highlight(node, bookmarks.get_highlight, icon.hl, name.hl)
self:_append_highlight(node, diagnostics.get_highlight, icon.hl, name.hl)
self:_append_highlight(node, copy_paste.get_highlight, icon.hl, name.hl)
Expand Down
2 changes: 1 addition & 1 deletion lua/nvim-tree/renderer/components/bookmarks.lua
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ local M = {
hl_pos = HL_POSITION.none,
}

---Bookmark highlight group and position when highlight_bookmark.
---Bookmark highlight group and position when highlight_bookmark
---@param node table
---@return HL_POSITION position none when clipboard empty
---@return string|nil group only when node present in clipboard
Expand Down
2 changes: 1 addition & 1 deletion lua/nvim-tree/renderer/components/diagnostics.lua
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ local M = {
HL_POS = HL_POSITION.none,
}

---Diagnostics text highlight group when highlight_diagnostics.
---Diagnostics highlight group and position when highlight_diagnostics.
---@param node table
---@return HL_POSITION position none when no status
---@return string|nil group only when status
Expand Down
Loading