90 lines
2.3 KiB
Lua
90 lines
2.3 KiB
Lua
return {
|
|
'nvim-tree/nvim-tree.lua',
|
|
version = '*',
|
|
lazy = false,
|
|
dependencies = {
|
|
'nvim-tree/nvim-web-devicons',
|
|
},
|
|
config = function()
|
|
local function custom_attach(bufnr)
|
|
local api = require 'nvim-tree.api'
|
|
|
|
local function opts(desc)
|
|
return { desc = 'nvim-tree: ' .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true }
|
|
end
|
|
local function edit_or_open()
|
|
local node = api.tree.get_node_under_cursor()
|
|
|
|
if node.nodes ~= nil then
|
|
-- expand or collapse folder
|
|
api.node.open.edit()
|
|
else
|
|
-- open file
|
|
api.node.open.edit()
|
|
-- Close the tree if file was opened
|
|
api.tree.close()
|
|
end
|
|
end
|
|
|
|
-- open as vsplit on current node
|
|
local function vsplit_preview()
|
|
local node = api.tree.get_node_under_cursor()
|
|
|
|
if node.nodes ~= nil then
|
|
-- expand or collapse folder
|
|
api.node.open.edit()
|
|
else
|
|
-- open file as vsplit
|
|
api.node.open.vertical()
|
|
end
|
|
|
|
-- Finally refocus on tree if it was lost
|
|
api.tree.focus()
|
|
end
|
|
|
|
-- default mappings
|
|
api.config.mappings.default_on_attach(bufnr)
|
|
|
|
-- custom mappings
|
|
vim.keymap.set('n', '<C-t>', api.tree.change_root_to_parent, opts 'Up')
|
|
vim.keymap.set('n', '?', api.tree.toggle_help, opts 'Help')
|
|
--
|
|
-- global
|
|
vim.api.nvim_set_keymap('n', '<C-h>', ':NvimTreeToggle<cr>', { silent = true, noremap = true })
|
|
|
|
-- on_attach
|
|
vim.keymap.set('n', 'l', edit_or_open, opts 'Edit Or Open')
|
|
vim.keymap.set('n', 'L', vsplit_preview, opts 'Vsplit Preview')
|
|
vim.keymap.set('n', 'h', api.tree.close, opts 'Close')
|
|
vim.keymap.set('n', 'H', api.tree.collapse_all, opts 'Collapse All')
|
|
end
|
|
|
|
require('nvim-tree').setup {
|
|
on_attach = custom_attach,
|
|
sort = {
|
|
sorter = 'case_sensitive',
|
|
},
|
|
view = {
|
|
width = 30,
|
|
},
|
|
renderer = {
|
|
group_empty = true,
|
|
},
|
|
filters = {
|
|
dotfiles = true,
|
|
},
|
|
}
|
|
end,
|
|
}
|
|
-- return {
|
|
-- 'nvim-tree/nvim-tree.lua',
|
|
-- version = '*',
|
|
-- lazy = false,
|
|
-- dependencies = {
|
|
-- 'nvim-tree/nvim-web-devicons',
|
|
-- },
|
|
-- config = function()
|
|
-- require('nvim-tree').setup {}
|
|
-- end,
|
|
-- }
|