225 lines
6.2 KiB
Lua
225 lines
6.2 KiB
Lua
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', '<C-t>', 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 = {
|
|
{
|
|
"<leader>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 <cr>",
|
|
},
|
|
{
|
|
";;",
|
|
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,
|
|
["<C-u>"] = function(prompt_bufnr)
|
|
for i = 1, 10 do
|
|
actions.move_selection_previous(prompt_bufnr)
|
|
end
|
|
end,
|
|
["<C-d>"] = function(prompt_bufnr)
|
|
for i = 1, 10 do
|
|
actions.move_selection_next(prompt_bufnr)
|
|
end
|
|
end,
|
|
["<PageUp>"] = actions.preview_scrolling_up,
|
|
["<PageDown>"] = actions.preview_scrolling_down,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
telescope.setup(opts)
|
|
require("telescope").load_extension("fzf")
|
|
require("telescope").load_extension("file_browser")
|
|
end,
|
|
},
|
|
} |