add small arrows before folders (#427)
This commit is contained in:
parent
45c331230c
commit
d51ed722ed
@ -56,10 +56,13 @@ let g:nvim_tree_show_icons = {
|
|||||||
\ 'git': 1,
|
\ 'git': 1,
|
||||||
\ 'folders': 0,
|
\ 'folders': 0,
|
||||||
\ 'files': 0,
|
\ 'files': 0,
|
||||||
|
\ 'folder_arrows': 0,
|
||||||
\ }
|
\ }
|
||||||
"If 0, do not show the icons for one of 'git' 'folder' and 'files'
|
"If 0, do not show the icons for one of 'git' 'folder' and 'files'
|
||||||
"1 by default, notice that if 'files' is 1, it will only display
|
"1 by default, notice that if 'files' is 1, it will only display
|
||||||
"if nvim-web-devicons is installed and on your runtimepath
|
"if nvim-web-devicons is installed and on your runtimepath.
|
||||||
|
"if folder is 1, you can also tell folder_arrows 1 to show small arrows next to the folder icons.
|
||||||
|
"but this will not work when you set indent_markers (because of UI conflict)
|
||||||
|
|
||||||
" default will show icon by default if no icon is provided
|
" default will show icon by default if no icon is provided
|
||||||
" default shows no icon by default
|
" default shows no icon by default
|
||||||
@ -76,6 +79,8 @@ let g:nvim_tree_icons = {
|
|||||||
\ 'ignored': "◌"
|
\ 'ignored': "◌"
|
||||||
\ },
|
\ },
|
||||||
\ 'folder': {
|
\ 'folder': {
|
||||||
|
\ 'arrow_open': "",
|
||||||
|
\ 'arrow_closed': "",
|
||||||
\ 'default': "",
|
\ 'default': "",
|
||||||
\ 'open': "",
|
\ 'open': "",
|
||||||
\ 'empty': "",
|
\ 'empty': "",
|
||||||
|
|||||||
@ -87,13 +87,17 @@ can disable icons per type:
|
|||||||
let g:nvim_tree_show_icons = {
|
let g:nvim_tree_show_icons = {
|
||||||
\ 'git': 1,
|
\ 'git': 1,
|
||||||
\ 'folders': 1,
|
\ 'folders': 1,
|
||||||
\ 'files': 1
|
\ 'files': 1,
|
||||||
|
\ 'folder_arrows': 1,
|
||||||
\}
|
\}
|
||||||
|
|
||||||
Can be one of `1` and `0` for each key. By default the tree will try
|
Can be one of `1` and `0` for each key. By default the tree will try
|
||||||
to render the icons. The `files` key can only work if `nvim-web-devicons`
|
to render the icons. The `files` key can only work if `nvim-web-devicons`
|
||||||
is installed and in your |runtimepath|
|
is installed and in your |runtimepath|
|
||||||
(https://github.com/kyazdani42/nvim-web-devicons)
|
(https://github.com/kyazdani42/nvim-web-devicons)
|
||||||
|
if folder is 1, you can also set `folder_arrows = 1` to show small arrows
|
||||||
|
next to the folder icons but this will not work when you set
|
||||||
|
|g:nvim_tree_indent_markers| (because of UI conflict).
|
||||||
|
|
||||||
|g:nvim_tree_highlight_opened_files| *g:nvim_tree_highlight_opened_files*
|
|g:nvim_tree_highlight_opened_files| *g:nvim_tree_highlight_opened_files*
|
||||||
|
|
||||||
@ -127,6 +131,8 @@ You can set icons for:
|
|||||||
\ 'deleted': "",
|
\ 'deleted': "",
|
||||||
\ },
|
\ },
|
||||||
\ 'folder': {
|
\ 'folder': {
|
||||||
|
\ 'arrow_open': "",
|
||||||
|
\ 'arrow_closed': "",
|
||||||
\ 'default': "",
|
\ 'default': "",
|
||||||
\ 'open': "",
|
\ 'open': "",
|
||||||
\ 'empty': "",
|
\ 'empty': "",
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
function M.get_icon_state()
|
function M.get_icon_state()
|
||||||
local show_icons = vim.g.nvim_tree_show_icons or { git = 1, folders = 1, files = 1 }
|
local show_icons = vim.g.nvim_tree_show_icons or { git = 1, folders = 1, files = 1, folder_arrows = 1 }
|
||||||
local icons = {
|
local icons = {
|
||||||
default = "",
|
default = "",
|
||||||
symlink = "",
|
symlink = "",
|
||||||
@ -15,6 +15,8 @@ function M.get_icon_state()
|
|||||||
ignored = "◌"
|
ignored = "◌"
|
||||||
},
|
},
|
||||||
folder_icons = {
|
folder_icons = {
|
||||||
|
arrow_closed = "",
|
||||||
|
arrow_open = "",
|
||||||
default = "",
|
default = "",
|
||||||
open = "",
|
open = "",
|
||||||
empty = "",
|
empty = "",
|
||||||
@ -60,6 +62,7 @@ function M.get_icon_state()
|
|||||||
show_file_icon = show_icons.files == 1 and vim.g.nvim_web_devicons == 1,
|
show_file_icon = show_icons.files == 1 and vim.g.nvim_web_devicons == 1,
|
||||||
show_folder_icon = show_icons.folders == 1,
|
show_folder_icon = show_icons.folders == 1,
|
||||||
show_git_icon = show_icons.git == 1,
|
show_git_icon = show_icons.git == 1,
|
||||||
|
show_folder_arrows = show_icons.folder_arrows == 1,
|
||||||
icons = icons
|
icons = icons
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|||||||
@ -215,6 +215,16 @@ local get_padding = function(depth)
|
|||||||
return string.rep(' ', depth)
|
return string.rep(' ', depth)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if icon_state.show_folder_icon and icon_state.show_folder_arrows then
|
||||||
|
get_padding = function(depth, _, _, node)
|
||||||
|
if node.entries then
|
||||||
|
local icon = icon_state.icons.folder_icons[node.open and 'arrow_open' or 'arrow_closed']
|
||||||
|
return string.rep(' ', depth - 2)..icon..' '
|
||||||
|
end
|
||||||
|
return string.rep(' ', depth)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if vim.g.nvim_tree_indent_markers == 1 then
|
if vim.g.nvim_tree_indent_markers == 1 then
|
||||||
get_padding = function(depth, idx, tree, _, markers)
|
get_padding = function(depth, idx, tree, _, markers)
|
||||||
local padding = ""
|
local padding = ""
|
||||||
@ -354,7 +364,9 @@ function M.draw(tree, reload)
|
|||||||
index = 0
|
index = 0
|
||||||
lines = {}
|
lines = {}
|
||||||
hl = {}
|
hl = {}
|
||||||
update_draw_data(tree, 0, {})
|
|
||||||
|
local show_arrows = icon_state.show_folder_icon and icon_state.show_folder_arrows
|
||||||
|
update_draw_data(tree, show_arrows and 1 or 0, {})
|
||||||
end
|
end
|
||||||
|
|
||||||
api.nvim_buf_set_option(view.View.bufnr, 'modifiable', true)
|
api.nvim_buf_set_option(view.View.bufnr, 'modifiable', true)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user