migrated nvim-tree from view.mappings to on_attach.

This commit is contained in:
Gabe Venberg 2023-04-20 14:19:47 -05:00
parent 6d6918ef8e
commit 581b9d62f8

View file

@ -57,8 +57,7 @@ return require('packer').startup(function(use)
}, },
{ {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
after = "mason-lspconfig.nvim", after = {"mason-lspconfig.nvim", "rust-tools.nvim"},
after = "rust-tools.nvim",
config = function() config = function()
require('LSPconfig') require('LSPconfig')
end end
@ -127,224 +126,298 @@ return require('packer').startup(function(use)
'kyazdani42/nvim-web-devicons', -- optional, for file icon 'kyazdani42/nvim-web-devicons', -- optional, for file icon
}, },
config = function() require'nvim-tree'.setup { config = function() require'nvim-tree'.setup {
view={mappings={list={
{ key = {"<CR>", "o", "<2-LeftMouse>"}, action = "edit" }, on_attach = function(bufnr)
{ key = "<C-e>", action = "edit_in_place" }, local api = require('nvim-tree.api')
{ key = {"O"}, action = "edit_no_picker" },
{ key = {"<2-RightMouse>", "<C-]>"}, action = "cd" }, local function opts(desc)
{ key = "<C-v>", action = "vsplit" }, return { desc = 'nvim-tree: ' .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true }
{ key = "<C-x>", action = "split" }, end
{ key = "<C-t>", action = "tabnew" },
{ key = "<", action = "prev_sibling" },
{ key = ">", action = "next_sibling" }, -- Default mappings. Feel free to modify or remove as you wish.
{ key = "P", action = "parent_node" }, --
{ key = "<BS>", action = "close_node" }, -- BEGIN_DEFAULT_ON_ATTACH
{ key = "<Tab>", action = "preview" }, vim.keymap.set('n', '<C-]>', api.tree.change_root_to_node, opts('CD'))
{ key = "K", action = "first_sibling" }, vim.keymap.set('n', '<C-e>', api.node.open.replace_tree_buffer, opts('Open: In Place'))
{ key = "J", action = "last_sibling" }, vim.keymap.set('n', '<C-k>', api.node.show_info_popup, opts('Info'))
{ key = "I", action = "toggle_ignored" }, vim.keymap.set('n', '<C-r>', api.fs.rename_sub, opts('Rename: Omit Filename'))
{ key = "H", action = "toggle_dotfiles" }, vim.keymap.set('n', '<C-t>', api.node.open.tab, opts('Open: New Tab'))
{ key = "R", action = "refresh" }, vim.keymap.set('n', '<C-v>', api.node.open.vertical, opts('Open: Vertical Split'))
{ key = "a", action = "create" }, vim.keymap.set('n', '<C-x>', api.node.open.horizontal, opts('Open: Horizontal Split'))
{ key = "d", action = "remove" }, vim.keymap.set('n', '<BS>', api.node.navigate.parent_close, opts('Close Directory'))
{ key = "D", action = "trash" }, vim.keymap.set('n', '<CR>', api.node.open.edit, opts('Open'))
{ key = "r", action = "rename" }, vim.keymap.set('n', '<Tab>', api.node.open.preview, opts('Open Preview'))
{ key = "<C-r>", action = "full_rename" }, vim.keymap.set('n', '>', api.node.navigate.sibling.next, opts('Next Sibling'))
{ key = "x", action = "cut" }, vim.keymap.set('n', '<', api.node.navigate.sibling.prev, opts('Previous Sibling'))
{ key = "c", action = "copy" }, vim.keymap.set('n', '.', api.node.run.cmd, opts('Run Command'))
{ key = "p", action = "paste" }, vim.keymap.set('n', '-', api.tree.change_root_to_parent, opts('Up'))
{ key = "y", action = "copy_name" }, vim.keymap.set('n', 'a', api.fs.create, opts('Create'))
{ key = "Y", action = "copy_path" }, vim.keymap.set('n', 'bmv', api.marks.bulk.move, opts('Move Bookmarked'))
{ key = "gy", action = "copy_absolute_path" }, vim.keymap.set('n', 'B', api.tree.toggle_no_buffer_filter, opts('Toggle No Buffer'))
{ key = "[c", action = "prev_git_item" }, vim.keymap.set('n', 'c', api.fs.copy.node, opts('Copy'))
{ key = "]c", action = "next_git_item" }, vim.keymap.set('n', 'C', api.tree.toggle_git_clean_filter, opts('Toggle Git Clean'))
{ key = "-", action = "dir_up" }, vim.keymap.set('n', '[c', api.node.navigate.git.prev, opts('Prev Git'))
{ key = "s", action = "system_open" }, vim.keymap.set('n', ']c', api.node.navigate.git.next, opts('Next Git'))
{ key = "q", action = "close" }, vim.keymap.set('n', 'd', api.fs.remove, opts('Delete'))
{ key = "g?", action = "toggle_help" }, vim.keymap.set('n', 'D', api.fs.trash, opts('Trash'))
{ key = "W", action = "collapse_all" } vim.keymap.set('n', 'E', api.tree.expand_all, opts('Expand All'))
}}} vim.keymap.set('n', 'e', api.fs.rename_basename, opts('Rename: Basename'))
vim.keymap.set('n', ']e', api.node.navigate.diagnostics.next, opts('Next Diagnostic'))
vim.keymap.set('n', '[e', api.node.navigate.diagnostics.prev, opts('Prev Diagnostic'))
vim.keymap.set('n', 'F', api.live_filter.clear, opts('Clean Filter'))
vim.keymap.set('n', 'f', api.live_filter.start, opts('Filter'))
vim.keymap.set('n', 'g?', api.tree.toggle_help, opts('Help'))
vim.keymap.set('n', 'gy', api.fs.copy.absolute_path, opts('Copy Absolute Path'))
vim.keymap.set('n', 'H', api.tree.toggle_hidden_filter, opts('Toggle Dotfiles'))
vim.keymap.set('n', 'I', api.tree.toggle_gitignore_filter, opts('Toggle Git Ignore'))
vim.keymap.set('n', 'J', api.node.navigate.sibling.last, opts('Last Sibling'))
vim.keymap.set('n', 'K', api.node.navigate.sibling.first, opts('First Sibling'))
vim.keymap.set('n', 'm', api.marks.toggle, opts('Toggle Bookmark'))
vim.keymap.set('n', 'o', api.node.open.edit, opts('Open'))
vim.keymap.set('n', 'O', api.node.open.no_window_picker, opts('Open: No Window Picker'))
vim.keymap.set('n', 'p', api.fs.paste, opts('Paste'))
vim.keymap.set('n', 'P', api.node.navigate.parent, opts('Parent Directory'))
vim.keymap.set('n', 'q', api.tree.close, opts('Close'))
vim.keymap.set('n', 'r', api.fs.rename, opts('Rename'))
vim.keymap.set('n', 'R', api.tree.reload, opts('Refresh'))
vim.keymap.set('n', 's', api.node.run.system, opts('Run System'))
vim.keymap.set('n', 'S', api.tree.search_node, opts('Search'))
vim.keymap.set('n', 'U', api.tree.toggle_custom_filter, opts('Toggle Hidden'))
vim.keymap.set('n', 'W', api.tree.collapse_all, opts('Collapse'))
vim.keymap.set('n', 'x', api.fs.cut, opts('Cut'))
vim.keymap.set('n', 'y', api.fs.copy.filename, opts('Copy Name'))
vim.keymap.set('n', 'Y', api.fs.copy.relative_path, opts('Copy Relative Path'))
vim.keymap.set('n', '<2-LeftMouse>', api.node.open.edit, opts('Open'))
vim.keymap.set('n', '<2-RightMouse>', api.tree.change_root_to_node, opts('CD'))
-- END_DEFAULT_ON_ATTACH
-- Mappings migrated from view.mappings.list
--
-- You will need to insert "your code goes here" for any mappings with a custom action_cb
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', '<2-LeftMouse>', api.node.open.edit, opts('Open'))
vim.keymap.set('n', '<C-e>', api.node.open.replace_tree_buffer, opts('Open: In Place'))
vim.keymap.set('n', 'O', api.node.open.no_window_picker, opts('Open: No Window Picker'))
vim.keymap.set('n', '<2-RightMouse>', api.tree.change_root_to_node, opts('CD'))
vim.keymap.set('n', '<C-]>', api.tree.change_root_to_node, opts('CD'))
vim.keymap.set('n', '<C-v>', api.node.open.vertical, opts('Open: Vertical Split'))
vim.keymap.set('n', '<C-x>', api.node.open.horizontal, opts('Open: Horizontal Split'))
vim.keymap.set('n', '<C-t>', api.node.open.tab, opts('Open: New Tab'))
vim.keymap.set('n', '<', api.node.navigate.sibling.prev, opts('Previous Sibling'))
vim.keymap.set('n', '>', api.node.navigate.sibling.next, opts('Next Sibling'))
vim.keymap.set('n', 'P', api.node.navigate.parent, opts('Parent Directory'))
vim.keymap.set('n', '<BS>', api.node.navigate.parent_close, opts('Close Directory'))
vim.keymap.set('n', '<Tab>', api.node.open.preview, opts('Open Preview'))
vim.keymap.set('n', 'K', api.node.navigate.sibling.first, opts('First Sibling'))
vim.keymap.set('n', 'J', api.node.navigate.sibling.last, opts('Last Sibling'))
vim.keymap.set('n', 'I', api.tree.toggle_gitignore_filter, opts('Toggle Git Ignore'))
vim.keymap.set('n', 'H', api.tree.toggle_hidden_filter, opts('Toggle Dotfiles'))
vim.keymap.set('n', 'R', api.tree.reload, opts('Refresh'))
vim.keymap.set('n', 'a', api.fs.create, opts('Create'))
vim.keymap.set('n', 'd', api.fs.remove, opts('Delete'))
vim.keymap.set('n', 'D', api.fs.trash, opts('Trash'))
vim.keymap.set('n', 'r', api.fs.rename, opts('Rename'))
vim.keymap.set('n', '<C-r>', api.fs.rename_sub, opts('Rename: Omit Filename'))
vim.keymap.set('n', 'x', api.fs.cut, opts('Cut'))
vim.keymap.set('n', 'c', api.fs.copy.node, opts('Copy'))
vim.keymap.set('n', 'p', api.fs.paste, opts('Paste'))
vim.keymap.set('n', 'y', api.fs.copy.filename, opts('Copy Name'))
vim.keymap.set('n', 'Y', api.fs.copy.relative_path, opts('Copy Relative Path'))
vim.keymap.set('n', 'gy', api.fs.copy.absolute_path, opts('Copy Absolute Path'))
vim.keymap.set('n', '[c', api.node.navigate.git.prev, opts('Prev Git'))
vim.keymap.set('n', ']c', api.node.navigate.git.next, opts('Next Git'))
vim.keymap.set('n', '-', api.tree.change_root_to_parent, opts('Up'))
vim.keymap.set('n', 's', api.node.run.system, opts('Run System'))
vim.keymap.set('n', 'q', api.tree.close, opts('Close'))
vim.keymap.set('n', 'g?', api.tree.toggle_help, opts('Help'))
vim.keymap.set('n', 'W', api.tree.collapse_all, opts('Collapse'))
end,
-- on_attach = on_attach
} end } end
} }
--UI stuff --UI stuff
use {'simrat39/symbols-outline.nvim', use {'simrat39/symbols-outline.nvim',
config=function() config=function()
local opts = { local opts = {
highlight_hovered_item = true, highlight_hovered_item = true,
show_guides = true, show_guides = true,
auto_preview = false, auto_preview = false,
position = 'right', position = 'right',
relative_width = true, relative_width = true,
width = 30, width = 30,
auto_close = false, auto_close = false,
show_numbers = false, show_numbers = false,
show_relative_numbers = false, show_relative_numbers = false,
show_symbol_details = true, show_symbol_details = true,
preview_bg_highlight = 'Pmenu', preview_bg_highlight = 'Pmenu',
autofold_depth = nil, autofold_depth = nil,
auto_unfold_hover = true, auto_unfold_hover = true,
fold_markers = { '', '' }, fold_markers = { '', '' },
wrap = false, wrap = false,
} }
require("symbols-outline").setup(opts) require("symbols-outline").setup(opts)
end end
} }
use {'stevearc/dressing.nvim', use {'stevearc/dressing.nvim',
config=function() config=function()
require('dressing').setup{} require('dressing').setup{}
end end
} }
use {'nvim-lualine/lualine.nvim', use {'nvim-lualine/lualine.nvim',
requires = {'kyazdani42/nvim-web-devicons', opt = true}, requires = {'kyazdani42/nvim-web-devicons', opt = true},
config=function() require('lualine').setup{ config=function() require('lualine').setup{
options={ options={
icons_enabled = true, icons_enabled = true,
theme = 'auto', theme = 'auto',
component_separators = { left = '', right = ''}, component_separators = { left = '', right = ''},
section_separators = { left = '', right = ''}, section_separators = { left = '', right = ''},
disabled_filetypes = {}, disabled_filetypes = {},
always_divide_middle = true, always_divide_middle = true,
}, },
sections = { sections = {
lualine_a = {'mode'}, lualine_a = {'mode'},
lualine_b = {'branch', 'diff', 'diagnostics'}, lualine_b = {'branch', 'diff', 'diagnostics'},
lualine_c = {'filename'}, lualine_c = {'filename'},
lualine_x = {'encoding', 'fileformat', 'filetype'}, lualine_x = {'encoding', 'fileformat', 'filetype'},
lualine_y = {'progress'}, lualine_y = {'progress'},
lualine_z = {'location'} lualine_z = {'location'}
}, },
inactive_sections = { inactive_sections = {
lualine_a = {}, lualine_a = {},
lualine_b = {}, lualine_b = {},
lualine_c = {'filename'}, lualine_c = {'filename'},
lualine_x = {'location'}, lualine_x = {'location'},
lualine_y = {}, lualine_y = {},
lualine_z = {} lualine_z = {}
}, },
extensions = {} extensions = {}
} end, } end,
} }
use {'kdheepak/tabline.nvim', use {'kdheepak/tabline.nvim',
config = function() config = function()
require'tabline'.setup { require'tabline'.setup {
-- Defaults configuration options -- Defaults configuration options
enable = true, enable = true,
options = { options = {
-- If lualine is installed tabline will use separators configured in lualine by default. -- If lualine is installed tabline will use separators configured in lualine by default.
-- These options can be used to override those settings. -- These options can be used to override those settings.
-- section_separators = {'', ''}, -- section_separators = {'', ''},
-- component_separators = {'', ''}, -- component_separators = {'', ''},
-- max_bufferline_percent = 66, -- set to nil by default, and it uses vim.o.columns * 2/3 -- max_bufferline_percent = 66, -- set to nil by default, and it uses vim.o.columns * 2/3
show_tabs_always = false, -- this shows tabs only when there are more than one tab or if the first tab is named show_tabs_always = false, -- this shows tabs only when there are more than one tab or if the first tab is named
show_devicons = true, -- this shows devicons in buffer section show_devicons = true, -- this shows devicons in buffer section
show_bufnr = true, -- this appends [bufnr] to buffer section, show_bufnr = true, -- this appends [bufnr] to buffer section,
show_filename_only = false, -- shows base filename only instead of relative path in filename show_filename_only = false, -- shows base filename only instead of relative path in filename
} }
} }
vim.cmd[[ vim.cmd[[
set guioptions-=e " Use showtabline in gui vim set guioptions-=e " Use showtabline in gui vim
set sessionoptions+=tabpages,globals " store tabpages and globals in session set sessionoptions+=tabpages,globals " store tabpages and globals in session
]] ]]
end, end,
requires = { { 'hoob3rt/lualine.nvim', opt=true }, {'kyazdani42/nvim-web-devicons', opt = true} } requires = { { 'hoob3rt/lualine.nvim', opt=true }, {'kyazdani42/nvim-web-devicons', opt = true} }
} }
use {'folke/trouble.nvim', use {'folke/trouble.nvim',
requires = "kyazdani42/nvim-web-devicons", requires = "kyazdani42/nvim-web-devicons",
config = function() require("trouble").setup { config = function() require("trouble").setup {
position = "bottom", -- position of the list can be: bottom, top, left, right position = "bottom", -- position of the list can be: bottom, top, left, right
height = 10, -- height of the trouble list when position is top or bottom height = 10, -- height of the trouble list when position is top or bottom
width = 50, -- width of the list when position is left or right width = 50, -- width of the list when position is left or right
icons = true, -- use devicons for filenames icons = true, -- use devicons for filenames
mode = "workspace_diagnostics", -- "workspace_diagnostics", "document_diagnostics", "quickfix", "lsp_references", "loclist" mode = "workspace_diagnostics", -- "workspace_diagnostics", "document_diagnostics", "quickfix", "lsp_references", "loclist"
fold_open = "", -- icon used for open folds fold_open = "", -- icon used for open folds
fold_closed = "", -- icon used for closed folds fold_closed = "", -- icon used for closed folds
group = true, -- group results by file group = true, -- group results by file
padding = true, -- add an extra new line on top of the list padding = true, -- add an extra new line on top of the list
action_keys = { -- key mappings for actions in the trouble list action_keys = { -- key mappings for actions in the trouble list
-- map to {} to remove a mapping, for example: -- map to {} to remove a mapping, for example:
-- close = {}, -- close = {},
close = "q", -- close the list close = "q", -- close the list
cancel = "<esc>", -- cancel the preview and get back to your last window / buffer / cursor cancel = "<esc>", -- cancel the preview and get back to your last window / buffer / cursor
refresh = "r", -- manually refresh refresh = "r", -- manually refresh
jump = {"<cr>", "<tab>"}, -- jump to the diagnostic or open / close folds jump = {"<cr>", "<tab>"}, -- jump to the diagnostic or open / close folds
open_split = { "<c-x>" }, -- open buffer in new split open_split = { "<c-x>" }, -- open buffer in new split
open_vsplit = { "<c-v>" }, -- open buffer in new vsplit open_vsplit = { "<c-v>" }, -- open buffer in new vsplit
open_tab = { "<c-t>" }, -- open buffer in new tab open_tab = { "<c-t>" }, -- open buffer in new tab
jump_close = {"o"}, -- jump to the diagnostic and close the list jump_close = {"o"}, -- jump to the diagnostic and close the list
toggle_mode = "m", -- toggle between "workspace" and "document" diagnostics mode toggle_mode = "m", -- toggle between "workspace" and "document" diagnostics mode
toggle_preview = "P", -- toggle auto_preview toggle_preview = "P", -- toggle auto_preview
hover = "K", -- opens a small popup with the full multiline message hover = "K", -- opens a small popup with the full multiline message
preview = "p", -- preview the diagnostic location preview = "p", -- preview the diagnostic location
close_folds = {"zM", "zm"}, -- close all folds close_folds = {"zM", "zm"}, -- close all folds
open_folds = {"zR", "zr"}, -- open all folds open_folds = {"zR", "zr"}, -- open all folds
toggle_fold = {"zA", "za", '<space>'}, -- toggle fold of current file toggle_fold = {"zA", "za", '<space>'}, -- toggle fold of current file
previous = "k", -- previous item previous = "k", -- previous item
next = "j" -- next item next = "j" -- next item
}, },
indent_lines = true, -- add an indent guide below the fold icons indent_lines = true, -- add an indent guide below the fold icons
auto_open = false, -- automatically open the list when you have diagnostics auto_open = false, -- automatically open the list when you have diagnostics
auto_close = false, -- automatically close the list when you have no diagnostics auto_close = false, -- automatically close the list when you have no diagnostics
auto_preview = true, -- automatically preview the location of the diagnostic. <esc> to close preview and go back to last window auto_preview = true, -- automatically preview the location of the diagnostic. <esc> to close preview and go back to last window
auto_fold = false, -- automatically fold a file trouble list at creation auto_fold = false, -- automatically fold a file trouble list at creation
auto_jump = {"lsp_definitions"}, -- for the given modes, automatically jump if there is only a single result auto_jump = {"lsp_definitions"}, -- for the given modes, automatically jump if there is only a single result
signs = { signs = {
-- icons / text used for a diagnostic -- icons / text used for a diagnostic
error = "", error = "",
warning = "", warning = "",
hint = "", hint = "",
information = "", information = "",
other = "" other = ""
}, },
use_diagnostic_signs = false -- enabling this will use the signs defined in your lsp client use_diagnostic_signs = false -- enabling this will use the signs defined in your lsp client
} }
end end
} }
use {'romgrk/nvim-treesitter-context', use {'romgrk/nvim-treesitter-context',
requires = 'nvim-treesitter/nvim-treesitter', requires = 'nvim-treesitter/nvim-treesitter',
config=function() require('treesitter-context').setup{ config=function() require('treesitter-context').setup{
enable = true, -- Enable this plugin (Can be enabled/disabled later via commands) enable = true, -- Enable this plugin (Can be enabled/disabled later via commands)
max_lines = 0, -- How many lines the window should span. Values <= 0 mean no limit. max_lines = 0, -- How many lines the window should span. Values <= 0 mean no limit.
trim_scope = 'outer', -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer' trim_scope = 'outer', -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer'
min_window_height = 0, -- Minimum editor window height to enable context. Values <= 0 mean no limit. min_window_height = 0, -- Minimum editor window height to enable context. Values <= 0 mean no limit.
zindex = 200, -- The Z-index of the context window zindex = 200, -- The Z-index of the context window
mode = 'cursor', -- Line used to calculate context. Choices: 'cursor', 'topline' mode = 'cursor', -- Line used to calculate context. Choices: 'cursor', 'topline'
-- Separator between context and content. Should be a single character string, like '-'. -- Separator between context and content. Should be a single character string, like '-'.
-- When separator is set, the context will only show up when there are at least 2 lines above cursorline. -- When separator is set, the context will only show up when there are at least 2 lines above cursorline.
separator = nil, separator = nil,
} end } end
} }
use {'lewis6991/gitsigns.nvim', use {'lewis6991/gitsigns.nvim',
-- tag = 'release', -- To use the latest release. currently bugged -- tag = 'release', -- To use the latest release. currently bugged
config=function() require('gitsigns').setup() end config=function() require('gitsigns').setup() end
} }
use 'chentau/marks.nvim' use 'chentau/marks.nvim'
use {'lukas-reineke/indent-blankline.nvim', use {'lukas-reineke/indent-blankline.nvim',
config=function() config=function()
vim.opt.list = true vim.opt.list = true
vim.opt.listchars:append("eol:↴") vim.opt.listchars:append("eol:↴")
require('indent_blankline').setup{ require('indent_blankline').setup{
show_end_of_line=true, show_end_of_line=true,
show_current_context=true show_current_context=true
} }
end end
} }
--editing utilities --editing utilities
use {'numToStr/Comment.nvim', use {'numToStr/Comment.nvim',
config = function() config = function()
require('Comment').setup() require('Comment').setup()
end end
} }
use { use {
@ -355,26 +428,26 @@ return require('packer').startup(function(use)
} }
use { 'Wansmer/treesj', use { 'Wansmer/treesj',
requires = { 'nvim-treesitter' }, requires = { 'nvim-treesitter' },
config = function() config = function()
require('treesj').setup({ require('treesj').setup({
-- Use default keymaps -- Use default keymaps
-- (<space>m - toggle, <space>j - join, <space>s - split) -- (<space>m - toggle, <space>j - join, <space>s - split)
use_default_keymaps = false, use_default_keymaps = false,
max_join_length = 256, max_join_length = 256,
}) })
end, end,
} }
use "jbyuki/venn.nvim" use "jbyuki/venn.nvim"
--color scheme stuff. --color scheme stuff.
use 'bluz71/vim-moonfly-colors' use 'bluz71/vim-moonfly-colors'
use 'bluz71/vim-nightfly-guicolors' use 'bluz71/vim-nightfly-guicolors'
if Packer_Bootstrap then if Packer_Bootstrap then
require('packer').sync() require('packer').sync()
end end
end) end)