diff --git a/lua/core/keymaps/async/project-tree.lua b/lua/core/keymaps/async/project-tree.lua new file mode 100644 index 00000000..45f859ab --- /dev/null +++ b/lua/core/keymaps/async/project-tree.lua @@ -0,0 +1,24 @@ +-- Neotree mappings + +return function(buffer) + local api = require "nvim-tree.api" + + local nmap = require("core.utils").createNmap({ + buffer = buffer, + desc = 'nvim-tree: : ', + noremap = true, + silent = true, + nowait = true + }) + + -- default mappings + api.config.mappings.default_on_attach(buffer) + + nmap('', api.tree.toggle, 'File Tree') + nmap('t', api.node.open.tab, 'Toggle Node') + nmap('f', function() + api.tree.open({ + find_file = true + }) + end, 'Reveal File In Tree') +end diff --git a/lua/core/keymaps/init.lua b/lua/core/keymaps/init.lua index 2f3e516c..7f334577 100644 --- a/lua/core/keymaps/init.lua +++ b/lua/core/keymaps/init.lua @@ -1,6 +1,5 @@ local import = require('core.utils').createImporter("core.keymaps") import('general') -import('project-tree') import('file-search') import('diagnostics') diff --git a/lua/core/keymaps/project-tree.lua b/lua/core/keymaps/project-tree.lua deleted file mode 100644 index 27484d16..00000000 --- a/lua/core/keymaps/project-tree.lua +++ /dev/null @@ -1,4 +0,0 @@ --- Neotree mappings - -vim.keymap.set('n', '', ':Neotree toggle', { desc = 'File tree' }) -vim.keymap.set('n', 'nf', ':Neotree filesystem reveal', { desc = 'Reveal in file tree' }) diff --git a/lua/core/plugins/init.lua b/lua/core/plugins/init.lua index b5aa71aa..54fb2800 100644 --- a/lua/core/plugins/init.lua +++ b/lua/core/plugins/init.lua @@ -129,7 +129,8 @@ local plugins = { require 'core.plugins.todo-comments', - require 'core.plugins.neo-tree', + -- require 'core.plugins.neo-tree', + require 'core.plugins.project-tree', require 'core.plugins.nvim-ufo', diff --git a/lua/core/plugins/neo-tree.lua b/lua/core/plugins/neo-tree.lua deleted file mode 100644 index 3a1999d1..00000000 --- a/lua/core/plugins/neo-tree.lua +++ /dev/null @@ -1,20 +0,0 @@ -return { - "nvim-neo-tree/neo-tree.nvim", - branch = "v3.x", - dependencies = { - "nvim-lua/plenary.nvim", - "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended - "MunifTanjim/nui.nvim", - }, - config = function() - require('neo-tree').setup { - filesystem = { - filtered_items = { - visible = true, - hide_hidden = false, - hide_gitignored = true, - } - }, - } - end, -} diff --git a/lua/core/plugins/project-tree.lua b/lua/core/plugins/project-tree.lua new file mode 100644 index 00000000..0cf706f6 --- /dev/null +++ b/lua/core/plugins/project-tree.lua @@ -0,0 +1,11 @@ +local setup = require "core.setup.async.project-tree" + +return { + { + 'nvim-tree/nvim-tree.lua', + dependencies = { 'nvim-tree/nvim-web-devicons' }, + init = function() + setup() + end + } +} diff --git a/lua/core/settings/init.lua b/lua/core/settings/init.lua index 7c9f8c4c..6a62126c 100644 --- a/lua/core/settings/init.lua +++ b/lua/core/settings/init.lua @@ -4,6 +4,14 @@ vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' +-- As in nvim-tree docs + +-- disable netrw at the very start of your init.lua +vim.g.loaded_netrw = 1 +vim.g.loaded_netrwPlugin = 1 +-- set termguicolors to enable highlight groups +vim.opt.termguicolors = true + -- Disale Swap Files vim.opt.swapfile = false diff --git a/lua/core/setup/async/project-tree.lua b/lua/core/setup/async/project-tree.lua new file mode 100644 index 00000000..829de31a --- /dev/null +++ b/lua/core/setup/async/project-tree.lua @@ -0,0 +1,21 @@ +local keymaps = require('core.keymaps.async.project-tree') + +return function() + local on_attach = function(bufnr) + keymaps(bufnr) + end + + -- HACK A temporary way to subscribe to the fact that + -- the setup is complete + vim.api.nvim_create_autocmd("User", { + pattern = "NvimTreeSetup", + callback = function(data) + on_attach(data.buf) + end, + }) + + require("nvim-tree").setup({ + -- TODO uncomment this in a version that it actually works + -- on_attach = on_attach + }) +end