add small arrows before folders (#427)

This commit is contained in:
Kiyan 2021-06-02 18:45:25 +02:00 committed by GitHub
parent 45c331230c
commit d51ed722ed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 30 additions and 4 deletions

View File

@ -56,10 +56,13 @@ let g:nvim_tree_show_icons = {
\ 'git': 1,
\ 'folders': 0,
\ 'files': 0,
\ 'folder_arrows': 0,
\ }
"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
"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 shows no icon by default
@ -76,6 +79,8 @@ let g:nvim_tree_icons = {
\ 'ignored': "◌"
\ },
\ 'folder': {
\ 'arrow_open': "",
\ 'arrow_closed': "",
\ 'default': "",
\ 'open': "",
\ 'empty': "",

View File

@ -87,13 +87,17 @@ can disable icons per type:
let g:nvim_tree_show_icons = {
\ 'git': 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
to render the icons. The `files` key can only work if `nvim-web-devicons`
is installed and in your |runtimepath|
(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*
@ -127,6 +131,8 @@ You can set icons for:
\ 'deleted': "",
\ },
\ 'folder': {
\ 'arrow_open': "",
\ 'arrow_closed': "",
\ 'default': "",
\ 'open': "",
\ 'empty': "",

View File

@ -1,7 +1,7 @@
local M = {}
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 = {
default = "",
symlink = "",
@ -15,6 +15,8 @@ function M.get_icon_state()
ignored = ""
},
folder_icons = {
arrow_closed = "",
arrow_open = "",
default = "",
open = "",
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_folder_icon = show_icons.folders == 1,
show_git_icon = show_icons.git == 1,
show_folder_arrows = show_icons.folder_arrows == 1,
icons = icons
}
end

View File

@ -215,6 +215,16 @@ local get_padding = function(depth)
return string.rep(' ', depth)
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
get_padding = function(depth, idx, tree, _, markers)
local padding = ""
@ -354,7 +364,9 @@ function M.draw(tree, reload)
index = 0
lines = {}
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
api.nvim_buf_set_option(view.View.bufnr, 'modifiable', true)