* feat(#2197): add git folder highlight groups * feat(#2197): add diagnostics folder highlight groups
This commit is contained in:
parent
8f48426c88
commit
b7f6600bc2
@ -2180,28 +2180,43 @@ Git Icon: >
|
||||
NvimTreeGitRenamed
|
||||
NvimTreeGitNew
|
||||
NvimTreeGitDeleted
|
||||
NvimTreeGitIgnored Comment
|
||||
NvimTreeGitIgnored Comment
|
||||
<
|
||||
Git Text: >
|
||||
NvimTreeFileDirty NvimTreeGitDirty
|
||||
NvimTreeFileStaged NvimTreeGitStaged
|
||||
NvimTreeFileMerge NvimTreeGitMerge
|
||||
NvimTreeFileRenamed NvimTreeGitRenamed
|
||||
NvimTreeFileNew NvimTreeGitNew
|
||||
NvimTreeFileDeleted NvimTreeGitDeleted
|
||||
NvimTreeFileIgnored NvimTreeGitIgnored
|
||||
Git File Text: >
|
||||
NvimTreeFileDirty NvimTreeGitDirty
|
||||
NvimTreeFileStaged NvimTreeGitStaged
|
||||
NvimTreeFileMerge NvimTreeGitMerge
|
||||
NvimTreeFileRenamed NvimTreeGitRenamed
|
||||
NvimTreeFileNew NvimTreeGitNew
|
||||
NvimTreeFileDeleted NvimTreeGitDeleted
|
||||
NvimTreeFileIgnored NvimTreeGitIgnored
|
||||
<
|
||||
Git Folder Text: >
|
||||
NvimTreeFolderDirty NvimTreeFileDirty
|
||||
NvimTreeFolderStaged NvimTreeFileStaged
|
||||
NvimTreeFolderMerge NvimTreeFileMerge
|
||||
NvimTreeFolderRenamed NvimTreeFileRenamed
|
||||
NvimTreeFolderNew NvimTreeFileNew
|
||||
NvimTreeFolderDeleted NvimTreeFileDeleted
|
||||
NvimTreeFolderIgnored NvimTreeFileIgnored
|
||||
<
|
||||
Diagnostics Icon: >
|
||||
NvimTreeLspDiagnosticsError DiagnosticError
|
||||
NvimTreeLspDiagnosticsWarning DiagnosticWarn
|
||||
NvimTreeLspDiagnosticsInformation DiagnosticInfo
|
||||
NvimTreeLspDiagnosticsHint DiagnosticHint
|
||||
NvimTreeLspDiagnosticsError DiagnosticError
|
||||
NvimTreeLspDiagnosticsWarning DiagnosticWarn
|
||||
NvimTreeLspDiagnosticsInformation DiagnosticInfo
|
||||
NvimTreeLspDiagnosticsHint DiagnosticHint
|
||||
<
|
||||
Diagnostics Text: >
|
||||
NvimTreeLspDiagnosticsErrorText NvimTreeLspDiagnosticsError
|
||||
NvimTreeLspDiagnosticsWarningText NvimTreeLspDiagnosticsWarning
|
||||
NvimTreeLspDiagnosticsInfoText NvimTreeLspDiagnosticsInformation
|
||||
NvimTreeLspDiagnosticsHintText NvimTreeLspDiagnosticsHint
|
||||
Diagnostics File Text: >
|
||||
NvimTreeLspDiagnosticsErrorText NvimTreeLspDiagnosticsError
|
||||
NvimTreeLspDiagnosticsWarningText NvimTreeLspDiagnosticsWarning
|
||||
NvimTreeLspDiagnosticsInfoText NvimTreeLspDiagnosticsInformation
|
||||
NvimTreeLspDiagnosticsHintText NvimTreeLspDiagnosticsHint
|
||||
<
|
||||
Diagnostics Folder Text: >
|
||||
NvimTreeLspDiagnosticsErrorFolderText NvimTreeLspDiagnosticsErrorText
|
||||
NvimTreeLspDiagnosticsWarningFolderText NvimTreeLspDiagnosticsWarningText
|
||||
NvimTreeLspDiagnosticsInfoFolderText NvimTreeLspDiagnosticsInfoText
|
||||
NvimTreeLspDiagnosticsHintFolderText NvimTreeLspDiagnosticsHintText
|
||||
<
|
||||
==============================================================================
|
||||
9. EVENTS *nvim-tree-events*
|
||||
|
||||
@ -82,6 +82,13 @@ local function get_links()
|
||||
FileStaged = "NvimTreeGitStaged",
|
||||
FileDeleted = "NvimTreeGitDeleted",
|
||||
FileIgnored = "NvimTreeGitIgnored",
|
||||
FolderDirty = "NvimTreeFileDirty",
|
||||
FolderNew = "NvimTreeFileNew",
|
||||
FolderRenamed = "NvimTreeFileRenamed",
|
||||
FolderMerge = "NvimTreeFileMerge",
|
||||
FolderStaged = "NvimTreeFileStaged",
|
||||
FolderDeleted = "NvimTreeFileDeleted",
|
||||
FolderIgnored = "NvimTreeFileIgnored",
|
||||
LspDiagnosticsError = "DiagnosticError",
|
||||
LspDiagnosticsWarning = "DiagnosticWarn",
|
||||
LspDiagnosticsInformation = "DiagnosticInfo",
|
||||
@ -90,6 +97,10 @@ local function get_links()
|
||||
LspDiagnosticsWarningText = "NvimTreeLspDiagnosticsWarning",
|
||||
LspDiagnosticsInformationText = "NvimTreeLspDiagnosticsInformation",
|
||||
LspDiagnosticsHintText = "NvimTreeLspDiagnosticsHintFile",
|
||||
LspDiagnosticsErrorFolderText = "NvimTreeLspDiagnosticsErrorText",
|
||||
LspDiagnosticsWarningFolderText = "NvimTreeLspDiagnosticsWarningText",
|
||||
LspDiagnosticsInformationFolderText = "NvimTreeLspDiagnosticsInformationText",
|
||||
LspDiagnosticsHintFolderText = "NvimTreeLspDiagnosticsHintFileText",
|
||||
Popup = "Normal",
|
||||
GitIgnored = "Comment",
|
||||
StatusLine = "StatusLine",
|
||||
|
||||
@ -1,14 +1,19 @@
|
||||
local M = {}
|
||||
|
||||
local H = {}
|
||||
local I = {}
|
||||
local HS_FILE = {}
|
||||
local HS_FOLDER = {}
|
||||
local ICON = {}
|
||||
|
||||
---diagnostics text highlight group if there is a status
|
||||
---@param node table
|
||||
---@return string|nil highlight
|
||||
function M.get_highlight(node)
|
||||
if M.config.diagnostics.enable and M.config.renderer.highlight_diagnostics then
|
||||
return H[node.diag_status]
|
||||
if node and M.config.diagnostics.enable and M.config.renderer.highlight_diagnostics then
|
||||
if node.nodes then
|
||||
return HS_FOLDER[node.diag_status]
|
||||
else
|
||||
return HS_FILE[node.diag_status]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -16,8 +21,8 @@ end
|
||||
---@param node table
|
||||
---@return HighlightedString|nil modified icon
|
||||
function M.get_icon(node)
|
||||
if M.config.diagnostics.enable and M.config.renderer.icons.show.diagnostics then
|
||||
return I[node.diag_status]
|
||||
if node and M.config.diagnostics.enable and M.config.renderer.icons.show.diagnostics then
|
||||
return ICON[node.diag_status]
|
||||
end
|
||||
end
|
||||
|
||||
@ -27,30 +32,35 @@ function M.setup(opts)
|
||||
renderer = opts.renderer,
|
||||
}
|
||||
|
||||
H[vim.diagnostic.severity.ERROR] = "NvimTreeLspDiagnosticsErrorText"
|
||||
H[vim.diagnostic.severity.WARN] = "NvimTreeLspDiagnosticsWarningText"
|
||||
H[vim.diagnostic.severity.INFO] = "NvimTreeLspDiagnosticsInfoText"
|
||||
H[vim.diagnostic.severity.HINT] = "NvimTreeLspDiagnosticsHintText"
|
||||
HS_FILE[vim.diagnostic.severity.ERROR] = "NvimTreeLspDiagnosticsErrorText"
|
||||
HS_FILE[vim.diagnostic.severity.WARN] = "NvimTreeLspDiagnosticsWarningText"
|
||||
HS_FILE[vim.diagnostic.severity.INFO] = "NvimTreeLspDiagnosticsInfoText"
|
||||
HS_FILE[vim.diagnostic.severity.HINT] = "NvimTreeLspDiagnosticsHintText"
|
||||
|
||||
I[vim.diagnostic.severity.ERROR] = {
|
||||
HS_FOLDER[vim.diagnostic.severity.ERROR] = "NvimTreeLspDiagnosticsErrorFolderText"
|
||||
HS_FOLDER[vim.diagnostic.severity.WARN] = "NvimTreeLspDiagnosticsWarningFolderText"
|
||||
HS_FOLDER[vim.diagnostic.severity.INFO] = "NvimTreeLspDiagnosticsInfoFolderText"
|
||||
HS_FOLDER[vim.diagnostic.severity.HINT] = "NvimTreeLspDiagnosticsHintFolderText"
|
||||
|
||||
ICON[vim.diagnostic.severity.ERROR] = {
|
||||
str = M.config.diagnostics.icons.error,
|
||||
hl = "NvimTreeLspDiagnosticsError",
|
||||
}
|
||||
|
||||
I[vim.diagnostic.severity.WARN] = {
|
||||
ICON[vim.diagnostic.severity.WARN] = {
|
||||
str = M.config.diagnostics.icons.warning,
|
||||
hl = "NvimTreeLspDiagnosticsWarning",
|
||||
}
|
||||
I[vim.diagnostic.severity.INFO] = {
|
||||
ICON[vim.diagnostic.severity.INFO] = {
|
||||
str = M.config.diagnostics.icons.info,
|
||||
hl = "NvimTreeLspDiagnosticsInfo",
|
||||
}
|
||||
I[vim.diagnostic.severity.HINT] = {
|
||||
ICON[vim.diagnostic.severity.HINT] = {
|
||||
str = M.config.diagnostics.icons.hint,
|
||||
hl = "NvimTreeLspDiagnosticsHint",
|
||||
}
|
||||
|
||||
for _, i in ipairs(I) do
|
||||
for _, i in ipairs(ICON) do
|
||||
vim.fn.sign_define(i.hl, { text = i.str, texthl = i.hl })
|
||||
end
|
||||
end
|
||||
|
||||
@ -49,6 +49,48 @@ local function build_icons_table(i)
|
||||
}
|
||||
end
|
||||
|
||||
local function build_hl_table()
|
||||
local file = {
|
||||
["M "] = "NvimTreeFileStaged",
|
||||
["C "] = "NvimTreeFileStaged",
|
||||
["AA"] = "NvimTreeFileStaged",
|
||||
["AD"] = "NvimTreeFileStaged",
|
||||
["MD"] = "NvimTreeFileStaged",
|
||||
["T "] = "NvimTreeFileStaged",
|
||||
["TT"] = "NvimTreeFileStaged",
|
||||
[" M"] = "NvimTreeFileDirty",
|
||||
["CM"] = "NvimTreeFileDirty",
|
||||
[" C"] = "NvimTreeFileDirty",
|
||||
[" T"] = "NvimTreeFileDirty",
|
||||
["MM"] = "NvimTreeFileDirty",
|
||||
["AM"] = "NvimTreeFileDirty",
|
||||
dirty = "NvimTreeFileDirty",
|
||||
["A "] = "NvimTreeFileNew",
|
||||
["??"] = "NvimTreeFileNew",
|
||||
["AU"] = "NvimTreeFileMerge",
|
||||
["UU"] = "NvimTreeFileMerge",
|
||||
["UD"] = "NvimTreeFileMerge",
|
||||
["DU"] = "NvimTreeFileMerge",
|
||||
["UA"] = "NvimTreeFileMerge",
|
||||
[" D"] = "NvimTreeFileDeleted",
|
||||
["DD"] = "NvimTreeFileDeleted",
|
||||
["RD"] = "NvimTreeFileDeleted",
|
||||
["D "] = "NvimTreeFileDeleted",
|
||||
["R "] = "NvimTreeFileRenamed",
|
||||
["RM"] = "NvimTreeFileRenamed",
|
||||
[" R"] = "NvimTreeFileRenamed",
|
||||
["!!"] = "NvimTreeFileIgnored",
|
||||
[" A"] = "none",
|
||||
}
|
||||
|
||||
local folder = {}
|
||||
for k, v in pairs(file) do
|
||||
folder[k] = v:gsub("File", "Folder")
|
||||
end
|
||||
|
||||
return file, folder
|
||||
end
|
||||
|
||||
local function nil_() end
|
||||
|
||||
local function warn_status(git_status)
|
||||
@ -101,39 +143,6 @@ local function get_icons_(node)
|
||||
return iconss
|
||||
end
|
||||
|
||||
local git_hl = {
|
||||
["M "] = "NvimTreeFileStaged",
|
||||
["C "] = "NvimTreeFileStaged",
|
||||
["AA"] = "NvimTreeFileStaged",
|
||||
["AD"] = "NvimTreeFileStaged",
|
||||
["MD"] = "NvimTreeFileStaged",
|
||||
["T "] = "NvimTreeFileStaged",
|
||||
["TT"] = "NvimTreeFileStaged",
|
||||
[" M"] = "NvimTreeFileDirty",
|
||||
["CM"] = "NvimTreeFileDirty",
|
||||
[" C"] = "NvimTreeFileDirty",
|
||||
[" T"] = "NvimTreeFileDirty",
|
||||
["MM"] = "NvimTreeFileDirty",
|
||||
["AM"] = "NvimTreeFileDirty",
|
||||
dirty = "NvimTreeFileDirty",
|
||||
["A "] = "NvimTreeFileNew",
|
||||
["??"] = "NvimTreeFileNew",
|
||||
["AU"] = "NvimTreeFileMerge",
|
||||
["UU"] = "NvimTreeFileMerge",
|
||||
["UD"] = "NvimTreeFileMerge",
|
||||
["DU"] = "NvimTreeFileMerge",
|
||||
["UA"] = "NvimTreeFileMerge",
|
||||
[" D"] = "NvimTreeFileDeleted",
|
||||
["DD"] = "NvimTreeFileDeleted",
|
||||
["RD"] = "NvimTreeFileDeleted",
|
||||
["D "] = "NvimTreeFileDeleted",
|
||||
["R "] = "NvimTreeFileRenamed",
|
||||
["RM"] = "NvimTreeFileRenamed",
|
||||
[" R"] = "NvimTreeFileRenamed",
|
||||
["!!"] = "NvimTreeFileIgnored",
|
||||
[" A"] = "none",
|
||||
}
|
||||
|
||||
function M.setup_signs(i)
|
||||
vim.fn.sign_define("NvimTreeGitDirty", { text = i.unstaged, texthl = "NvimTreeGitDirty" })
|
||||
vim.fn.sign_define("NvimTreeGitStaged", { text = i.staged, texthl = "NvimTreeGitStaged" })
|
||||
@ -150,7 +159,11 @@ local function get_highlight_(node)
|
||||
return
|
||||
end
|
||||
|
||||
return git_hl[git_status[1]]
|
||||
if node.nodes then
|
||||
return M.folder_hl[git_status[1]]
|
||||
else
|
||||
return M.file_hl[git_status[1]]
|
||||
end
|
||||
end
|
||||
|
||||
function M.setup(opts)
|
||||
@ -158,6 +171,8 @@ function M.setup(opts)
|
||||
|
||||
M.git_icons = build_icons_table(opts.renderer.icons.glyphs.git)
|
||||
|
||||
M.file_hl, M.folder_hl = build_hl_table()
|
||||
|
||||
if opts.renderer.icons.git_placement == "signcolumn" then
|
||||
M.setup_signs(opts.renderer.icons.glyphs.git)
|
||||
end
|
||||
|
||||
Loading…
Reference in New Issue
Block a user