dotfiles/modules/common/neovim/config/tree.nix

78 lines
2.3 KiB
Nix
Raw Normal View History

2022-11-29 05:11:57 +00:00
{ pkgs, dsl, ... }: {
2023-07-31 00:26:23 +00:00
# This plugin creates a side drawer for navigating the current project
2022-11-29 05:11:57 +00:00
plugins = [ pkgs.vimPlugins.nvim-tree-lua pkgs.vimPlugins.nvim-web-devicons ];
# Disable netrw eagerly
# https://github.com/kyazdani42/nvim-tree.lua/commit/fb8735e96cecf004fbefb086ce85371d003c5129
2022-11-29 16:35:39 +00:00
vim.g = {
loaded = 1;
loaded_netrwPlugin = 1;
};
2022-11-29 05:11:57 +00:00
setup.nvim-tree = {
2023-07-31 00:26:23 +00:00
disable_netrw = true; # Disable the built-in file manager
hijack_netrw = true; # Works as the file manager
sync_root_with_cwd = true; # Change project whenever currend dir changes
respect_buf_cwd = true; # Change to exact location of focused buffer
update_focused_file = { # Change project based on the focused buffer
2022-11-29 05:11:57 +00:00
enable = true;
update_root = true;
2022-11-29 05:11:57 +00:00
ignore_list = { };
};
2023-07-31 00:26:23 +00:00
diagnostics = { # Enable LSP and linter integration
2022-11-29 05:11:57 +00:00
enable = true;
icons = {
hint = "";
info = "";
warning = "";
error = "";
};
};
2023-07-31 00:26:23 +00:00
renderer = { # Show files with changes vs. current commit
2022-11-29 05:11:57 +00:00
icons = {
glyphs = {
git = {
unstaged = "~";
staged = "+";
unmerged = "";
renamed = "";
deleted = "";
untracked = "?";
ignored = "";
};
};
};
};
2023-07-31 00:26:23 +00:00
# Set keybinds and initialize program
on_attach = dsl.rawLua ''
function (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
api.config.mappings.default_on_attach(bufnr)
vim.keymap.set('n', 'l', api.node.open.edit, opts('Open'))
vim.keymap.set('n', '<CR>', api.node.open.edit, opts('Open'))
vim.keymap.set('n', 'o', api.node.open.edit, opts('Open'))
vim.keymap.set('n', 'h', api.node.navigate.parent_close, opts('Close Directory'))
vim.keymap.set('n', 'v', api.node.open.vertical, opts('Open: Vertical Split'))
end
'';
2023-07-31 00:26:23 +00:00
view = { # Set look and feel
2022-11-29 05:11:57 +00:00
width = 30;
side = "left";
number = false;
relativenumber = false;
};
};
2023-07-31 00:26:23 +00:00
# Toggle the sidebar
2022-11-29 05:11:57 +00:00
lua = ''
vim.keymap.set("n", "<Leader>e", ":NvimTreeFindFileToggle<CR>", { silent = true })
'';
}