50 lines
1.2 KiB
Nix
50 lines
1.2 KiB
Nix
{ nix2lua, vim, ... }:
|
|
|
|
{ configs ? { }
|
|
, keymaps ? [
|
|
{ mode = "n"; bind = "<leader>nt"; command = "<CMD>NvimTreeToggle<CR>"; }
|
|
{ mode = "n"; bind = "<leader>nf"; command = "<CMD>NvimTreeFindFile<CR>"; }
|
|
]
|
|
}:
|
|
|
|
with nix2lua.lib;
|
|
let isEmptyVar = name: eq "" (var name); in
|
|
{
|
|
nvim-web-devicons = true;
|
|
|
|
nvim-tree-lua = (
|
|
[
|
|
(pipe1 (require "nvim-tree") (call "setup" configs))
|
|
|
|
(local (func "open_nvim_tree" [ "data" ] [
|
|
# buffer is a [No Name]
|
|
(local (set "isNoNameBuffer"
|
|
(and
|
|
(isEmptyVar "data.file")
|
|
(isEmptyVar "vim.bo[data.buf].buftype")
|
|
)
|
|
))
|
|
|
|
# buffer is a directory
|
|
(local (set "isDirectory"
|
|
(eq 1 (vim.fn.isdirectory "data.file"))
|
|
))
|
|
|
|
(if' (not (and (var "isNoNameBuffer") (var "isDirectory")))
|
|
return_void
|
|
)
|
|
|
|
# change to the directory
|
|
(if' (var "isDirectory")
|
|
(vim.cmd.cd "data.file")
|
|
)
|
|
|
|
# open the tree
|
|
(pipe1 (require "nvim-tree.api") (call0 "tree.open"))
|
|
]))
|
|
|
|
(vim.api.nvim_create_autocmd [ "VimEnter" ] { callback = var "open_nvim_tree"; })
|
|
]
|
|
++ (map vim.keymap.set keymaps)
|
|
);
|
|
}
|