|
1 | 1 | local M = {} |
2 | 2 |
|
3 | | --- nvim-tree default highlight group links |
4 | | -local DEFAULT_LINKS = { |
5 | | - -- File Text |
6 | | - NvimTreeFolderName = "Directory", |
7 | | - NvimTreeEmptyFolderName = "Directory", |
8 | | - NvimTreeOpenedFolderName = "Directory", |
9 | | - NvimTreeSymlinkFolderName = "Directory", |
| 3 | +-- directly defined groups, please keep these to an absolute minimum |
| 4 | +local DEFAULT_DEFS = { |
10 | 5 |
|
11 | | - -- Folder Text |
12 | | - NvimTreeOpenedFileIcon = "NvimTreeOpenedFile", |
13 | | - NvimTreeOpenedFolderIcon = "NvimTreeFolderIcon", |
14 | | - NvimTreeClosedFolderIcon = "NvimTreeFolderIcon", |
| 6 | + NvimTreeFolderIcon = "guifg=#8094b4 ctermfg=Blue", |
| 7 | + NvimTreeWindowPicker = "guifg=#ededed guibg=#4493c8 gui=bold ctermfg=White ctermbg=Cyan", |
| 8 | +} |
| 9 | + |
| 10 | +-- nvim-tree default highlight group links, please attempt to keep in order with help |
| 11 | +local DEFAULT_LINKS = { |
15 | 12 |
|
16 | 13 | -- Standard |
17 | 14 | NvimTreeNormal = "Normal", |
18 | 15 | NvimTreeNormalFloat = "NormalFloat", |
19 | 16 | NvimTreeNormalNC = "NvimTreeNormal", |
| 17 | + |
20 | 18 | NvimTreeLineNr = "LineNr", |
21 | 19 | NvimTreeWinSeparator = "WinSeparator", |
22 | 20 | NvimTreeEndOfBuffer = "EndOfBuffer", |
23 | 21 | NvimTreePopup = "Normal", |
24 | 22 | NvimTreeSignColumn = "NvimTreeNormal", |
25 | | - NvimTreeCursorLine = "CursorLine", |
| 23 | + |
26 | 24 | NvimTreeCursorColumn = "CursorColumn", |
| 25 | + NvimTreeCursorLine = "CursorLine", |
27 | 26 | NvimTreeCursorLineNr = "CursorLineNr", |
| 27 | + |
28 | 28 | NvimTreeStatusLine = "StatusLine", |
29 | 29 | NvimTreeStatusLineNC = "StatusLineNC", |
30 | 30 |
|
| 31 | + -- File Text |
| 32 | + NvimTreeExecFile = "Constant", |
| 33 | + NvimTreeImageFile = "PreProc", |
| 34 | + NvimTreeModifiedFile = "Constant", |
| 35 | + NvimTreeOpenedFile = "Constant", |
| 36 | + NvimTreeSpecialFile = "PreProc", |
| 37 | + NvimTreeSymlink = "Statement", |
| 38 | + |
| 39 | + -- Folder Text |
| 40 | + NvimTreeRootFolder = "PreProc", |
| 41 | + NvimTreeFolderName = "Directory", |
| 42 | + NvimTreeEmptyFolderName = "Directory", |
| 43 | + NvimTreeOpenedFolderName = "Directory", |
| 44 | + NvimTreeSymlinkFolderName = "Directory", |
| 45 | + |
| 46 | + -- Icon |
| 47 | + NvimTreeFileIcon = "NvimTreeNormal", |
| 48 | + NvimTreeSymlinkIcon = "NvimTreeNormal", |
| 49 | + NvimTreeOpenedFileIcon = "NvimTreeOpenedFile", |
| 50 | + NvimTreeOpenedFolderIcon = "NvimTreeFolderIcon", |
| 51 | + NvimTreeClosedFolderIcon = "NvimTreeFolderIcon", |
| 52 | + NvimTreeFolderArrowClosed = "NvimTreeIndentMarker", |
| 53 | + NvimTreeFolderArrowOpen = "NvimTreeIndentMarker", |
| 54 | + |
| 55 | + -- Indent |
| 56 | + NvimTreeIndentMarker = "NvimTreeFileIcon", |
| 57 | + |
31 | 58 | -- Clipboard |
32 | 59 | NvimTreeCutHL = "SpellBad", |
33 | 60 | NvimTreeCopiedHL = "SpellRare", |
34 | 61 |
|
| 62 | + -- Bookmark Icon |
| 63 | + NvimTreeBookmark = "Constant", |
| 64 | + |
35 | 65 | -- Bookmark Highlight |
36 | 66 | NvimTreeBookmarkHL = "SpellLocal", |
37 | 67 |
|
| 68 | + -- LiveFilter |
| 69 | + NvimTreeLiveFilterPrefix = "PreProc", |
| 70 | + NvimTreeLiveFilterValue = "ModeMsg", |
| 71 | + |
38 | 72 | -- Git Icon |
| 73 | + NvimTreeGitDeleted = "Statement", |
| 74 | + NvimTreeGitDirty = "Statement", |
39 | 75 | NvimTreeGitIgnored = "Comment", |
| 76 | + NvimTreeGitMerge = "Constant", |
| 77 | + NvimTreeGitNew = "PreProc", |
| 78 | + NvimTreeGitRenamed = "PreProc", |
| 79 | + NvimTreeGitStaged = "Constant", |
40 | 80 |
|
41 | 81 | -- Git File Text |
42 | 82 | NvimTreeFileDirty = "NvimTreeGitDirty", |
@@ -91,71 +131,10 @@ local LEGACY_LINKS = { |
91 | 131 | NvimTreeDiagnosticHintFolderHL = "NvimTreeLspDiagnosticsHintFolderText", |
92 | 132 | } |
93 | 133 |
|
94 | | -local function get_color_from_hl(hl_name, fallback) |
95 | | - local id = vim.api.nvim_get_hl_id_by_name(hl_name) |
96 | | - if not id then |
97 | | - return fallback |
98 | | - end |
99 | | - |
100 | | - -- TODO this is unreachable as nvim_get_hl_id_by_name returns a new ID if not present |
101 | | - local foreground = vim.fn.synIDattr(vim.fn.synIDtrans(id), "fg") |
102 | | - if not foreground or foreground == "" then |
103 | | - return fallback |
104 | | - end |
105 | | - |
106 | | - return foreground |
107 | | -end |
108 | | - |
109 | | -local function get_colors() |
110 | | - return { |
111 | | - red = vim.g.terminal_color_1 or get_color_from_hl("Keyword", "Red"), |
112 | | - green = vim.g.terminal_color_2 or get_color_from_hl("Character", "Green"), |
113 | | - yellow = vim.g.terminal_color_3 or get_color_from_hl("PreProc", "Yellow"), |
114 | | - blue = vim.g.terminal_color_4 or get_color_from_hl("Include", "Blue"), |
115 | | - purple = vim.g.terminal_color_5 or get_color_from_hl("Define", "Purple"), |
116 | | - cyan = vim.g.terminal_color_6 or get_color_from_hl("Conditional", "Cyan"), |
117 | | - dark_red = vim.g.terminal_color_9 or get_color_from_hl("Keyword", "DarkRed"), |
118 | | - orange = vim.g.terminal_color_11 or get_color_from_hl("Number", "Orange"), |
119 | | - } |
120 | | -end |
121 | | - |
122 | | -local function get_hl_groups() |
123 | | - local colors = get_colors() |
124 | | - |
125 | | - return { |
126 | | - IndentMarker = { fg = "#8094b4" }, |
127 | | - Symlink = { gui = "bold", fg = colors.cyan }, |
128 | | - FolderIcon = { fg = "#8094b4" }, |
129 | | - RootFolder = { fg = colors.purple }, |
130 | | - |
131 | | - ExecFile = { gui = "bold", fg = colors.green }, |
132 | | - SpecialFile = { gui = "bold,underline", fg = colors.yellow }, |
133 | | - ImageFile = { gui = "bold", fg = colors.purple }, |
134 | | - OpenedFile = { gui = "bold", fg = colors.green }, |
135 | | - ModifiedFile = { fg = colors.green }, |
136 | | - |
137 | | - GitDirty = { fg = colors.dark_red }, |
138 | | - GitDeleted = { fg = colors.dark_red }, |
139 | | - GitStaged = { fg = colors.green }, |
140 | | - GitMerge = { fg = colors.orange }, |
141 | | - GitRenamed = { fg = colors.purple }, |
142 | | - GitNew = { fg = colors.yellow }, |
143 | | - |
144 | | - WindowPicker = { gui = "bold", fg = "#ededed", bg = "#4493c8" }, |
145 | | - LiveFilterPrefix = { gui = "bold", fg = colors.purple }, |
146 | | - LiveFilterValue = { gui = "bold", fg = "#fff" }, |
147 | | - |
148 | | - Bookmark = { fg = colors.green }, |
149 | | - } |
150 | | -end |
151 | | - |
152 | 134 | function M.setup() |
153 | | - local highlight_groups = get_hl_groups() |
154 | | - for k, d in pairs(highlight_groups) do |
155 | | - local gui = d.gui and " gui=" .. d.gui or "" |
156 | | - local fg = d.fg and " guifg=" .. d.fg or "" |
157 | | - local bg = d.bg and " guibg=" .. d.bg or "" |
158 | | - vim.api.nvim_command("hi def NvimTree" .. k .. gui .. fg .. bg) |
| 135 | + -- non-linked |
| 136 | + for k, d in pairs(DEFAULT_DEFS) do |
| 137 | + vim.api.nvim_command("hi " .. k .. " " .. d) |
159 | 138 | end |
160 | 139 |
|
161 | 140 | -- hard link override when legacy only is present |
|
0 commit comments