* feat(#2415): granular highlight_diagnostics, normalise groups (#2454) * chore: normalise colours and enable cterm (#2471) * feat(#2415): granular highlight_git, normalise git groups (#2487) * docs: update CONTRIBUTING.md (#2485) * feat(#2415): granular highlight_git, normalise git groups * feat(#2415): normalise and add modified groups * feat(#2415): create Decorator class for modified and bookmarks * feat(#2415): create DecoratorDiagnostics * feat(#2415): create DecoratorGit * feat(#2415): create DecoratorGit * add DecoratorCopied DecoratorCut * add DecoratorOpened * remove unloaded_bufnr checks as the view debouncer takes care of it * Add `renderer.highlight_git` to accepted strings * fix(#2415): builder refactor (#2538) * simplify builder signs * decorators take care of themselves and are priority ordered * simplify builder hl groups * refactor builder for icon arrays * builder use decorators generically * fix(#2415): harden sign creation (#2539) * fix(#2415): harden unicode signs * Decorator tidy * normalise git sign creation and tidy * tidy builder * NvimTreeBookmarkIcon * tidy HL doc * tidy HL doc * tidy HL doc * tidy builder doc * standardise on '---@param' * DiagnosticWarning -> DiagnosticWarn * annotate decorators * limit to two highlight groups for line rendering * style * apply #2519 * feat(#2415): combined hl groups (#2601) * feat(#2415): create combined highlight groups * feat(#2415): create combined highlight groups * feat(#2415): create combined highlight groups * ci: allow workflow_dispatch (#2620) * one and only one hl namespace, required winhl removal * small tidies * colors.lua -> appearance.lua * full-name uses one and only namespace * don't highlight fast, just apply to namespace, safer win_set_hl * gut builder (#2622) collapse Builder * fix group_empty function check * feat(#2415): highlight-overhaul release date --------- Co-authored-by: Akmadan23 <azadahmadi@mailo.com>
This commit is contained in:
committed by
GitHub
parent
f24afa2cef
commit
e9c5abe073
217
lua/nvim-tree/appearance.lua
Normal file
217
lua/nvim-tree/appearance.lua
Normal file
@@ -0,0 +1,217 @@
|
||||
local M = {
|
||||
-- namespace for all tree window highlights
|
||||
NS_ID = vim.api.nvim_create_namespace "nvim_tree",
|
||||
}
|
||||
|
||||
-- directly defined groups, please keep these to an absolute minimum
|
||||
local DEFAULT_DEFS = {
|
||||
|
||||
NvimTreeFolderIcon = "guifg=#8094b4 ctermfg=Blue",
|
||||
NvimTreeWindowPicker = "guifg=#ededed guibg=#4493c8 gui=bold ctermfg=White ctermbg=Cyan",
|
||||
}
|
||||
|
||||
-- nvim-tree default highlight group links, please attempt to keep in order with help
|
||||
local DEFAULT_LINKS = {
|
||||
|
||||
-- Standard
|
||||
NvimTreeNormal = "Normal",
|
||||
NvimTreeNormalFloat = "NormalFloat",
|
||||
NvimTreeNormalNC = "NvimTreeNormal",
|
||||
|
||||
NvimTreeLineNr = "LineNr",
|
||||
NvimTreeWinSeparator = "WinSeparator",
|
||||
NvimTreeEndOfBuffer = "EndOfBuffer",
|
||||
NvimTreePopup = "Normal",
|
||||
NvimTreeSignColumn = "NvimTreeNormal",
|
||||
|
||||
NvimTreeCursorColumn = "CursorColumn",
|
||||
NvimTreeCursorLine = "CursorLine",
|
||||
NvimTreeCursorLineNr = "CursorLineNr",
|
||||
|
||||
NvimTreeStatusLine = "StatusLine",
|
||||
NvimTreeStatusLineNC = "StatusLineNC",
|
||||
|
||||
-- File Text
|
||||
NvimTreeExecFile = "Constant",
|
||||
NvimTreeImageFile = "PreProc",
|
||||
NvimTreeOpenedFile = "Constant",
|
||||
NvimTreeSpecialFile = "PreProc",
|
||||
NvimTreeSymlink = "Statement",
|
||||
|
||||
-- Folder Text
|
||||
NvimTreeRootFolder = "PreProc",
|
||||
NvimTreeFolderName = "Directory",
|
||||
NvimTreeEmptyFolderName = "Directory",
|
||||
NvimTreeOpenedFolderName = "Directory",
|
||||
NvimTreeSymlinkFolderName = "Directory",
|
||||
|
||||
-- File Icons
|
||||
NvimTreeFileIcon = "NvimTreeNormal",
|
||||
NvimTreeSymlinkIcon = "NvimTreeNormal",
|
||||
NvimTreeOpenedFileIcon = "NvimTreeOpenedFile",
|
||||
|
||||
-- Folder Icons
|
||||
NvimTreeOpenedFolderIcon = "NvimTreeFolderIcon",
|
||||
NvimTreeClosedFolderIcon = "NvimTreeFolderIcon",
|
||||
NvimTreeFolderArrowClosed = "NvimTreeIndentMarker",
|
||||
NvimTreeFolderArrowOpen = "NvimTreeIndentMarker",
|
||||
|
||||
-- Indent
|
||||
NvimTreeIndentMarker = "NvimTreeFileIcon",
|
||||
|
||||
-- LiveFilter
|
||||
NvimTreeLiveFilterPrefix = "PreProc",
|
||||
NvimTreeLiveFilterValue = "ModeMsg",
|
||||
|
||||
-- Clipboard
|
||||
NvimTreeCutHL = "SpellBad",
|
||||
NvimTreeCopiedHL = "SpellRare",
|
||||
|
||||
-- Bookmark
|
||||
NvimTreeBookmarkIcon = "Constant",
|
||||
NvimTreeBookmarkHL = "SpellLocal",
|
||||
|
||||
-- Modified
|
||||
NvimTreeModifiedIcon = "Constant",
|
||||
NvimTreeModifiedFileHL = "NvimTreeModifiedIcon",
|
||||
NvimTreeModifiedFolderHL = "NvimTreeModifiedFileHL",
|
||||
|
||||
-- Opened
|
||||
NvimTreeOpenedHL = "Constant",
|
||||
|
||||
-- Git Icon
|
||||
NvimTreeGitDeletedIcon = "Statement",
|
||||
NvimTreeGitDirtyIcon = "Statement",
|
||||
NvimTreeGitIgnoredIcon = "Comment",
|
||||
NvimTreeGitMergeIcon = "Constant",
|
||||
NvimTreeGitNewIcon = "PreProc",
|
||||
NvimTreeGitRenamedIcon = "PreProc",
|
||||
NvimTreeGitStagedIcon = "Constant",
|
||||
|
||||
-- Git File Highlight
|
||||
NvimTreeGitFileDeletedHL = "NvimTreeGitDeletedIcon",
|
||||
NvimTreeGitFileDirtyHL = "NvimTreeGitDirtyIcon",
|
||||
NvimTreeGitFileIgnoredHL = "NvimTreeGitIgnoredIcon",
|
||||
NvimTreeGitFileMergeHL = "NvimTreeGitMergeIcon",
|
||||
NvimTreeGitFileNewHL = "NvimTreeGitNewIcon",
|
||||
NvimTreeGitFileRenamedHL = "NvimTreeGitRenamedIcon",
|
||||
NvimTreeGitFileStagedHL = "NvimTreeGitStagedIcon",
|
||||
|
||||
-- Git Folder Highlight
|
||||
NvimTreeGitFolderDeletedHL = "NvimTreeGitFileDeletedHL",
|
||||
NvimTreeGitFolderDirtyHL = "NvimTreeGitFileDirtyHL",
|
||||
NvimTreeGitFolderIgnoredHL = "NvimTreeGitFileIgnoredHL",
|
||||
NvimTreeGitFolderMergeHL = "NvimTreeGitFileMergeHL",
|
||||
NvimTreeGitFolderNewHL = "NvimTreeGitFileNewHL",
|
||||
NvimTreeGitFolderRenamedHL = "NvimTreeGitFileRenamedHL",
|
||||
NvimTreeGitFolderStagedHL = "NvimTreeGitFileStagedHL",
|
||||
|
||||
-- Diagnostics Icon
|
||||
NvimTreeDiagnosticErrorIcon = "DiagnosticError",
|
||||
NvimTreeDiagnosticWarnIcon = "DiagnosticWarn",
|
||||
NvimTreeDiagnosticInfoIcon = "DiagnosticInfo",
|
||||
NvimTreeDiagnosticHintIcon = "DiagnosticHint",
|
||||
|
||||
-- Diagnostics File Highlight
|
||||
NvimTreeDiagnosticErrorFileHL = "DiagnosticUnderlineError",
|
||||
NvimTreeDiagnosticWarnFileHL = "DiagnosticUnderlineWarn",
|
||||
NvimTreeDiagnosticInfoFileHL = "DiagnosticUnderlineInfo",
|
||||
NvimTreeDiagnosticHintFileHL = "DiagnosticUnderlineHint",
|
||||
|
||||
-- Diagnostics Folder Highlight
|
||||
NvimTreeDiagnosticErrorFolderHL = "NvimTreeDiagnosticErrorFileHL",
|
||||
NvimTreeDiagnosticWarnFolderHL = "NvimTreeDiagnosticWarnFileHL",
|
||||
NvimTreeDiagnosticInfoFolderHL = "NvimTreeDiagnosticInfoFileHL",
|
||||
NvimTreeDiagnosticHintFolderHL = "NvimTreeDiagnosticHintFileHL",
|
||||
}
|
||||
|
||||
-- namespace standard links
|
||||
local NS_LINKS = {
|
||||
EndOfBuffer = "NvimTreeEndOfBuffer",
|
||||
CursorLine = "NvimTreeCursorLine",
|
||||
CursorLineNr = "NvimTreeCursorLineNr",
|
||||
LineNr = "NvimTreeLineNr",
|
||||
WinSeparator = "NvimTreeWinSeparator",
|
||||
StatusLine = "NvimTreeStatusLine",
|
||||
StatusLineNC = "NvimTreeStatuslineNC",
|
||||
SignColumn = "NvimTreeSignColumn",
|
||||
Normal = "NvimTreeNormal",
|
||||
NormalNC = "NvimTreeNormalNC",
|
||||
NormalFloat = "NvimTreeNormalFloat",
|
||||
}
|
||||
|
||||
-- nvim-tree highlight groups to legacy
|
||||
local LEGACY_LINKS = {
|
||||
NvimTreeModifiedIcon = "NvimTreeModifiedFile",
|
||||
|
||||
NvimTreeOpenedHL = "NvimTreeOpenedFile",
|
||||
|
||||
NvimTreeBookmarkIcon = "NvimTreeBookmark",
|
||||
|
||||
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",
|
||||
NvimTreeDiagnosticHintFolderHL = "NvimTreeLspDiagnosticsHintFolderText",
|
||||
}
|
||||
|
||||
function M.setup()
|
||||
-- non-linked
|
||||
for k, d in pairs(DEFAULT_DEFS) do
|
||||
vim.api.nvim_command("hi " .. k .. " " .. d)
|
||||
end
|
||||
|
||||
-- hard link override when legacy only is present
|
||||
for from, to in pairs(LEGACY_LINKS) do
|
||||
local hl_from = vim.api.nvim_get_hl(0, { name = from })
|
||||
local hl_to = vim.api.nvim_get_hl(0, { name = to })
|
||||
if vim.tbl_isempty(hl_from) and not vim.tbl_isempty(hl_to) then
|
||||
vim.api.nvim_command("hi link " .. from .. " " .. to)
|
||||
end
|
||||
end
|
||||
|
||||
-- default links
|
||||
for from, to in pairs(DEFAULT_LINKS) do
|
||||
vim.api.nvim_command("hi def link " .. from .. " " .. to)
|
||||
end
|
||||
|
||||
-- window standard; this doesn't appear to clear on ColorScheme however we err on the side of caution
|
||||
for from, to in pairs(NS_LINKS) do
|
||||
vim.api.nvim_set_hl(M.NS_ID, from, { link = to })
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
Reference in New Issue
Block a user