local function my_on_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 -- default mappings api.config.mappings.default_on_attach(bufnr) -- custom mappings vim.keymap.set('n', '', api.tree.change_root_to_parent, opts('Up')) vim.keymap.set('n', '?', api.tree.toggle_help, opts('Help')) vim.keymap.set('n', 'l', api.node.open.edit, opts('Edit')) vim.keymap.set('n', 'h', api.node.navigate.parent_close, opts('Parent Close')) vim.keymap.set('n', 's', api.node.open.horizontal, opts('Horizontal Split')) vim.keymap.set('n', 'v', api.node.open.vertical, opts('Vertical Split')) end vim.g.nvim_tree_indent_markers = 1 -- "0 by default, this option shows indent markers when folders are open vim.g.nvim_tree_auto_ignore_ft = 'startify' --empty by default, don't auto open tree on specific filetypes. vim.g.nvim_tree_icons = { default = '', symlink = '', git = {unstaged = "", staged = "✓", unmerged = "", renamed = "➜", untracked = ""}, folder = {default = "", open = "", empty = "", empty_open = "", symlink = ""} } return { { 'nvim-tree/nvim-tree.lua', dependencies = { 'nvim-tree/nvim-web-devicons', -- optional }, opts = { on_attach = my_on_attach, disable_netrw = true, hijack_netrw = true, --auto_close = false, filters = { dotfiles = false, custom = {} }, git = { enable = true, ignore = false, timeout = 500, }, update_focused_file = { -- enables the feature enable = true, -- update the root directory of the tree to the one of the folder containing the file if the file is not under the current root directory -- only relevant when `update_focused_file.enable` is true update_cwd = false, -- list of buffer names / filetypes that will not update the cwd if the file isn't found under the current root directory -- only relevant when `update_focused_file.update_cwd` is true and `update_focused_file.enable` is true ignore_list = {} }, }, }, { "telescope.nvim", dependencies = { { "nvim-telescope/telescope-fzf-native.nvim", build = "make", }, "nvim-telescope/telescope-file-browser.nvim", }, keys = { { "fP", function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root, }) end, desc = "Find Plugin File", }, { ";f", function() local builtin = require("telescope.builtin") builtin.find_files({ no_ignore = false, hidden = true, }) end, desc = "Lists files in your current working directory, respects .gitignore", }, { ";r", function() local builtin = require("telescope.builtin") builtin.live_grep({ additional_args = { "--hidden" }, }) end, desc = "Search for a string in your current working directory and get results live as you type, respects .gitignore", }, { "\\\\", function() local builtin = require("telescope.builtin") builtin.buffers() end, desc = "Lists open buffers", }, { ";t", function() local builtin = require("telescope.builtin") builtin.help_tags() end, desc = "Lists available help tags and opens a new window with the relevant help info on ", }, { ";;", function() local builtin = require("telescope.builtin") builtin.resume() end, desc = "Resume the previous telescope picker", }, { ";e", function() local builtin = require("telescope.builtin") builtin.diagnostics() end, desc = "Lists Diagnostics for all open buffers or a specific buffer", }, { ";s", function() local builtin = require("telescope.builtin") builtin.treesitter() end, desc = "Lists Function names, variables, from Treesitter", }, { "sf", function() local telescope = require("telescope") local function telescope_buffer_dir() return vim.fn.expand("%:p:h") end telescope.extensions.file_browser.file_browser({ path = "%:p:h", cwd = telescope_buffer_dir(), respect_gitignore = false, hidden = true, grouped = true, previewer = false, initial_mode = "normal", layout_config = { height = 40 }, }) end, desc = "Open File Browser with the path of the current buffer", }, }, config = function(_, opts) local telescope = require("telescope") local actions = require("telescope.actions") local fb_actions = require("telescope").extensions.file_browser.actions opts.defaults = vim.tbl_deep_extend("force", opts.defaults, { wrap_results = true, layout_strategy = "horizontal", layout_config = { prompt_position = "top" }, sorting_strategy = "ascending", winblend = 0, mappings = { n = {}, }, }) opts.pickers = { diagnostics = { theme = "ivy", initial_mode = "normal", layout_config = { preview_cutoff = 9999, }, }, } opts.extensions = { file_browser = { theme = "dropdown", -- disables netrw and use telescope-file-browser in its place hijack_netrw = true, mappings = { -- your custom insert mode mappings ["n"] = { -- your custom normal mode mappings ["N"] = fb_actions.create, ["h"] = fb_actions.goto_parent_dir, ["/"] = function() vim.cmd("startinsert") end, [""] = function(prompt_bufnr) for i = 1, 10 do actions.move_selection_previous(prompt_bufnr) end end, [""] = function(prompt_bufnr) for i = 1, 10 do actions.move_selection_next(prompt_bufnr) end end, [""] = actions.preview_scrolling_up, [""] = actions.preview_scrolling_down, }, }, }, } telescope.setup(opts) require("telescope").load_extension("fzf") require("telescope").load_extension("file_browser") end, }, }