Compare commits
1 Commits
main
...
tweaking-t
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d142d85498 |
65
clean.sh
65
clean.sh
@@ -1,65 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
SRC_DIRS=(
|
|
||||||
"$HOME/.local/share/nvim"
|
|
||||||
"$HOME/.local/state/nvim"
|
|
||||||
"$HOME/.cache/nvim"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Ask if user wants to backup
|
|
||||||
printf "Do you want to backup before cleaning? [Y/n]: "
|
|
||||||
read -r BACKUP_CHOICE
|
|
||||||
case ${BACKUP_CHOICE:-} in
|
|
||||||
[nN]|[nN][oO])
|
|
||||||
BACKUP=false
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
BACKUP=true
|
|
||||||
TAG=.bak-$(date +%Y-%m-%d_%H-%M-%S)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Show plan and confirm
|
|
||||||
printf "\n"
|
|
||||||
if [ "$BACKUP" = true ]; then
|
|
||||||
printf "This will back up and clean your Neovim directories.\n"
|
|
||||||
printf "Backup suffix to be appended: %s\n\n" "$TAG"
|
|
||||||
printf "Plan:\n"
|
|
||||||
for SRC in "${SRC_DIRS[@]}"; do
|
|
||||||
if [ -e "$SRC" ]; then
|
|
||||||
DEST="${SRC}${TAG}"
|
|
||||||
printf " %s ➡️ %s\n" "$SRC" "$DEST"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
else
|
|
||||||
printf "This will remove your Neovim directories WITHOUT backup.\n\n"
|
|
||||||
printf "Plan:\n"
|
|
||||||
for SRC in "${SRC_DIRS[@]}"; do
|
|
||||||
if [ -e "$SRC" ]; then
|
|
||||||
printf " %s ❌\n" "$SRC"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "\n"
|
|
||||||
read -r -p "Are you sure you want to proceed? [y/N]: " CONFIRM
|
|
||||||
case ${CONFIRM:-} in
|
|
||||||
[yY]|[yY][eE][sS]) ;;
|
|
||||||
*) printf "Aborted!\n"; exit 0;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Perform action based on backup choice
|
|
||||||
for SRC in "${SRC_DIRS[@]}"; do
|
|
||||||
if [ -e "$SRC" ]; then
|
|
||||||
if [ "$BACKUP" = true ]; then
|
|
||||||
DEST="${SRC}${TAG}"
|
|
||||||
mv "$SRC" "$DEST"
|
|
||||||
else
|
|
||||||
rm -rf "$SRC"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
printf "Done!"
|
|
||||||
40
init.lua
40
init.lua
@@ -145,13 +145,33 @@ require('lazy').setup({
|
|||||||
require('telescope').setup {
|
require('telescope').setup {
|
||||||
-- You can put your default mappings / updates / etc. in here
|
-- You can put your default mappings / updates / etc. in here
|
||||||
-- All the info you're looking for is in `:help telescope.setup()`
|
-- All the info you're looking for is in `:help telescope.setup()`
|
||||||
--
|
|
||||||
defaults = {
|
defaults = {
|
||||||
mappings = {
|
mappings = {
|
||||||
i = { ['<c-enter>'] = 'to_fuzzy_refine' },
|
i = { ['<c-enter>'] = 'to_fuzzy_refine' },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
-- pickers = {}
|
pickers = {
|
||||||
|
find_files = {
|
||||||
|
theme = 'ivy',
|
||||||
|
},
|
||||||
|
grep_string = {
|
||||||
|
theme = 'ivy',
|
||||||
|
},
|
||||||
|
live_grep = {
|
||||||
|
theme = 'ivy',
|
||||||
|
},
|
||||||
|
diagnostics = {
|
||||||
|
theme = 'ivy',
|
||||||
|
},
|
||||||
|
oldfiles = {
|
||||||
|
theme = 'ivy',
|
||||||
|
},
|
||||||
|
buffers = {
|
||||||
|
theme = 'dropdown',
|
||||||
|
previewer = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
extensions = {
|
extensions = {
|
||||||
['ui-select'] = {
|
['ui-select'] = {
|
||||||
require('telescope.themes').get_dropdown(),
|
require('telescope.themes').get_dropdown(),
|
||||||
@@ -494,12 +514,15 @@ require('lazy').setup({
|
|||||||
return 'make install_jsregexp'
|
return 'make install_jsregexp'
|
||||||
end)(),
|
end)(),
|
||||||
dependencies = {
|
dependencies = {
|
||||||
{
|
-- `friendly-snippets` contains a variety of premade snippets.
|
||||||
'rafamadriz/friendly-snippets',
|
-- See the README about individual language/framework/plugin snippets:
|
||||||
config = function()
|
-- https://github.com/rafamadriz/friendly-snippets
|
||||||
require('luasnip.loaders.from_vscode').lazy_load()
|
-- {
|
||||||
end,
|
-- 'rafamadriz/friendly-snippets',
|
||||||
},
|
-- config = function()
|
||||||
|
-- require('luasnip.loaders.from_vscode').lazy_load()
|
||||||
|
-- end,
|
||||||
|
-- },
|
||||||
},
|
},
|
||||||
opts = {},
|
opts = {},
|
||||||
},
|
},
|
||||||
@@ -551,7 +574,6 @@ require('lazy').setup({
|
|||||||
sources = {
|
sources = {
|
||||||
default = { 'lsp', 'path', 'snippets', 'lazydev' },
|
default = { 'lsp', 'path', 'snippets', 'lazydev' },
|
||||||
providers = {
|
providers = {
|
||||||
snippets = { score_offset = -100 },
|
|
||||||
lazydev = { module = 'lazydev.integrations.blink', score_offset = 100 },
|
lazydev = { module = 'lazydev.integrations.blink', score_offset = 100 },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -17,16 +17,16 @@ return {
|
|||||||
|
|
||||||
local keymap = {
|
local keymap = {
|
||||||
['<C-u>'] = function()
|
['<C-u>'] = function()
|
||||||
neoscroll.ctrl_u { duration = 150 }
|
neoscroll.ctrl_u { duration = 100 }
|
||||||
end,
|
end,
|
||||||
['<C-d>'] = function()
|
['<C-d>'] = function()
|
||||||
neoscroll.ctrl_d { duration = 150 }
|
neoscroll.ctrl_d { duration = 100 }
|
||||||
end,
|
end,
|
||||||
['<C-b>'] = function()
|
['<C-b>'] = function()
|
||||||
neoscroll.ctrl_b { duration = 300 }
|
neoscroll.ctrl_b { duration = 100 }
|
||||||
end,
|
end,
|
||||||
['<C-f>'] = function()
|
['<C-f>'] = function()
|
||||||
neoscroll.ctrl_f { duration = 300 }
|
neoscroll.ctrl_f { duration = 100 }
|
||||||
end,
|
end,
|
||||||
['zt'] = function()
|
['zt'] = function()
|
||||||
neoscroll.zt { half_win_duration = 150 }
|
neoscroll.zt { half_win_duration = 150 }
|
||||||
|
|||||||
@@ -53,7 +53,3 @@ vim.keymap.set('n', '<leader>ch', function()
|
|||||||
print(('Deleted %d out of %d hidden buffers'):format(deleteCount, deleteCount + skipCount))
|
print(('Deleted %d out of %d hidden buffers'):format(deleteCount, deleteCount + skipCount))
|
||||||
end, bufinfos)
|
end, bufinfos)
|
||||||
end, { desc = '[C]lose [H]idden buffers' })
|
end, { desc = '[C]lose [H]idden buffers' })
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>tt', function()
|
|
||||||
vim.diagnostic.open_float(nil, { focus = false })
|
|
||||||
end, { desc = 'Toggle Trouble' })
|
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ return {
|
|||||||
local dap = require 'dap'
|
local dap = require 'dap'
|
||||||
local dapui = require 'dapui'
|
local dapui = require 'dapui'
|
||||||
local dapgo = require 'dap-go'
|
local dapgo = require 'dap-go'
|
||||||
local dapwidgets = require 'dap.ui.widgets'
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
-- Basic debugging keymaps, feel free to change to your liking!
|
-- Basic debugging keymaps, feel free to change to your liking!
|
||||||
@@ -35,8 +34,7 @@ return {
|
|||||||
desc = 'Debug: Set Breakpoint',
|
desc = 'Debug: Set Breakpoint',
|
||||||
},
|
},
|
||||||
-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
|
-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
|
||||||
{ '<leader>td', dapui.toggle, desc = 'Debug: [T]oggle [D]AP ui' },
|
{ '<leader>td', dapui.toggle, desc = 'Debug: [T]oggle [D]AP ui.' },
|
||||||
{ '<leader>ts', dapwidgets.sidebar(dapwidgets.sessions, nil, '5 sp').toggle, desc = 'Debug: [T]oggle [S]essions panel' }, -- show sessions panel
|
|
||||||
{ '<leader>rl', dap.run_last, desc = 'Debug: [R]un [l]ast' },
|
{ '<leader>rl', dap.run_last, desc = 'Debug: [R]un [l]ast' },
|
||||||
{ '<leader>rt', dapgo.debug_test, desc = 'Debug: [R]un [t]est' },
|
{ '<leader>rt', dapgo.debug_test, desc = 'Debug: [R]un [t]est' },
|
||||||
unpack(keys),
|
unpack(keys),
|
||||||
@@ -89,28 +87,6 @@ return {
|
|||||||
disconnect = '⏏',
|
disconnect = '⏏',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
layouts = {
|
|
||||||
{
|
|
||||||
elements = {
|
|
||||||
{ id = 'scopes', size = 0.25 },
|
|
||||||
{ id = 'breakpoints', size = 0.25 },
|
|
||||||
{ id = 'stacks', size = 0.25 },
|
|
||||||
{ id = 'watches', size = 0.25 },
|
|
||||||
},
|
|
||||||
size = 40, -- width of the panel
|
|
||||||
position = 'left',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
elements = {
|
|
||||||
{ id = 'repl', size = 1.0 },
|
|
||||||
-- mostly useless to me (Delve doesn't use it)
|
|
||||||
-- { id = "console", size = 0.25 }
|
|
||||||
},
|
|
||||||
size = 10, -- height of the panel
|
|
||||||
position = 'bottom',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vim.fn.sign_define('DapBreakpoint', { text = '🔴', texthl = '', linehl = '', numhl = '' })
|
vim.fn.sign_define('DapBreakpoint', { text = '🔴', texthl = '', linehl = '', numhl = '' })
|
||||||
@@ -120,8 +96,8 @@ return {
|
|||||||
vim.fn.sign_define('DapStopped', { text = '👉', texthl = '', linehl = '', numhl = '' })
|
vim.fn.sign_define('DapStopped', { text = '👉', texthl = '', linehl = '', numhl = '' })
|
||||||
|
|
||||||
dap.listeners.after.event_initialized['dapui_config'] = dapui.open
|
dap.listeners.after.event_initialized['dapui_config'] = dapui.open
|
||||||
dap.listeners.before.event_terminated['dapui_config'] = dapui.close
|
-- dap.listeners.before.event_terminated['dapui_config'] = dapui.close
|
||||||
dap.listeners.before.event_exited['dapui_config'] = dapui.close
|
-- dap.listeners.before.event_exited['dapui_config'] = dapui.close
|
||||||
|
|
||||||
-- Install golang specific config
|
-- Install golang specific config
|
||||||
require('dap-go').setup {
|
require('dap-go').setup {
|
||||||
|
|||||||
@@ -1,411 +1,74 @@
|
|||||||
return {
|
return {
|
||||||
-- If you want neo-tree's file operations to work with LSP (updating imports, etc.), you can use a plugin like
|
'nvim-neo-tree/neo-tree.nvim',
|
||||||
-- https://github.com/antosha417/nvim-lsp-file-operations:
|
version = '*',
|
||||||
-- {
|
dependencies = {
|
||||||
-- "antosha417/nvim-lsp-file-operations",
|
'nvim-lua/plenary.nvim',
|
||||||
-- dependencies = {
|
'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended
|
||||||
-- "nvim-lua/plenary.nvim",
|
'MunifTanjim/nui.nvim',
|
||||||
-- "nvim-neo-tree/neo-tree.nvim",
|
},
|
||||||
-- },
|
cmd = 'Neotree',
|
||||||
-- config = function()
|
keys = {
|
||||||
-- require("lsp-file-operations").setup()
|
{ '\\', ':Neotree reveal<CR>', desc = 'NeoTree reveal', silent = true },
|
||||||
-- end,
|
},
|
||||||
-- },
|
opts = {
|
||||||
{
|
filesystem = {
|
||||||
'nvim-neo-tree/neo-tree.nvim',
|
hijack_netrw_behavior = 'open_default',
|
||||||
branch = 'v3.x',
|
window = {
|
||||||
dependencies = {
|
mappings = {
|
||||||
'nvim-lua/plenary.nvim',
|
['\\'] = 'close_window',
|
||||||
'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended
|
},
|
||||||
'MunifTanjim/nui.nvim',
|
},
|
||||||
-- {"3rd/image.nvim", opts = {}}, -- Optional image support in preview window: See `# Preview Mode` for more information
|
filtered_items = {
|
||||||
{
|
visible = false,
|
||||||
's1n7ax/nvim-window-picker', -- for open_with_window_picker keymaps
|
hide_dotfiles = false,
|
||||||
version = '2.*',
|
hide_gitignored = true,
|
||||||
config = function()
|
hide_by_name = {
|
||||||
require('window-picker').setup {
|
'.git',
|
||||||
filter_rules = {
|
'.DS_Store',
|
||||||
include_current_win = false,
|
},
|
||||||
autoselect_one = true,
|
never_show = {},
|
||||||
-- filter using buffer options
|
always_show_by_pattern = {
|
||||||
bo = {
|
'.env*',
|
||||||
-- if the file type is one of following, the window will be ignored
|
},
|
||||||
filetype = { 'neo-tree', 'neo-tree-popup', 'notify' },
|
},
|
||||||
-- if the buffer type is one of following, the window will be ignored
|
},
|
||||||
buftype = { 'terminal', 'quickfix' },
|
|
||||||
},
|
buffers = {
|
||||||
},
|
follow_current_file = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
window = {
|
||||||
|
mappings = {
|
||||||
|
['<C-v>'] = 'open_vsplit',
|
||||||
|
['Y'] = function(state)
|
||||||
|
local node = state.tree:get_node()
|
||||||
|
local filepath = node:get_id()
|
||||||
|
local filename = node.name
|
||||||
|
|
||||||
|
local results = {
|
||||||
|
vim.fn.fnamemodify(filepath, ':.'),
|
||||||
|
filepath,
|
||||||
|
filename,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local i = vim.fn.inputlist {
|
||||||
|
'Choose what to copy:',
|
||||||
|
'1. ' .. results[1],
|
||||||
|
'2. ' .. results[2],
|
||||||
|
'3. ' .. results[3],
|
||||||
|
}
|
||||||
|
|
||||||
|
if i > 0 then
|
||||||
|
local result = results[i]
|
||||||
|
if not result then
|
||||||
|
return print('Invalid choice: ' .. i)
|
||||||
|
end
|
||||||
|
vim.fn.setreg('"', result)
|
||||||
|
end
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
lazy = false,
|
|
||||||
-----Instead of using `config`, you can use `opts` instead, if you'd like:
|
|
||||||
-----@module "neo-tree"
|
|
||||||
-----@type neotree.Config
|
|
||||||
--opts = {},
|
|
||||||
config = function()
|
|
||||||
-- If you want icons for diagnostic errors, you'll need to define them somewhere.
|
|
||||||
-- In Neovim v0.10+, you can configure them in vim.diagnostic.config(), like:
|
|
||||||
--
|
|
||||||
-- vim.diagnostic.config({
|
|
||||||
-- signs = {
|
|
||||||
-- text = {
|
|
||||||
-- [vim.diagnostic.severity.ERROR] = '',
|
|
||||||
-- [vim.diagnostic.severity.WARN] = '',
|
|
||||||
-- [vim.diagnostic.severity.INFO] = '',
|
|
||||||
-- [vim.diagnostic.severity.HINT] = '',
|
|
||||||
-- },
|
|
||||||
-- }
|
|
||||||
-- })
|
|
||||||
--
|
|
||||||
-- In older versions, you can define the signs manually:
|
|
||||||
-- vim.fn.sign_define("DiagnosticSignError", { text = " ", texthl = "DiagnosticSignError" })
|
|
||||||
-- vim.fn.sign_define("DiagnosticSignWarn", { text = " ", texthl = "DiagnosticSignWarn" })
|
|
||||||
-- vim.fn.sign_define("DiagnosticSignInfo", { text = " ", texthl = "DiagnosticSignInfo" })
|
|
||||||
-- vim.fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" })
|
|
||||||
|
|
||||||
require('neo-tree').setup {
|
|
||||||
close_if_last_window = false, -- Close Neo-tree if it is the last window left in the tab
|
|
||||||
popup_border_style = 'NC', -- or "" to use 'winborder' on Neovim v0.11+
|
|
||||||
enable_git_status = true,
|
|
||||||
enable_diagnostics = true,
|
|
||||||
open_files_do_not_replace_types = { 'terminal', 'trouble', 'qf' }, -- when opening files, do not use windows containing these filetypes or buftypes
|
|
||||||
open_files_using_relative_paths = false,
|
|
||||||
sort_case_insensitive = false, -- used when sorting files and directories in the tree
|
|
||||||
sort_function = nil, -- use a custom function for sorting files and directories in the tree
|
|
||||||
-- sort_function = function (a,b)
|
|
||||||
-- if a.type == b.type then
|
|
||||||
-- return a.path > b.path
|
|
||||||
-- else
|
|
||||||
-- return a.type > b.type
|
|
||||||
-- end
|
|
||||||
-- end , -- this sorts files and directories descendantly
|
|
||||||
default_component_configs = {
|
|
||||||
container = {
|
|
||||||
enable_character_fade = true,
|
|
||||||
},
|
|
||||||
indent = {
|
|
||||||
indent_size = 2,
|
|
||||||
padding = 1, -- extra padding on left hand side
|
|
||||||
-- indent guides
|
|
||||||
with_markers = true,
|
|
||||||
indent_marker = '│',
|
|
||||||
last_indent_marker = '└',
|
|
||||||
highlight = 'NeoTreeIndentMarker',
|
|
||||||
-- expander config, needed for nesting files
|
|
||||||
with_expanders = nil, -- if nil and file nesting is enabled, will enable expanders
|
|
||||||
expander_collapsed = '',
|
|
||||||
expander_expanded = '',
|
|
||||||
expander_highlight = 'NeoTreeExpander',
|
|
||||||
},
|
|
||||||
icon = {
|
|
||||||
folder_closed = '',
|
|
||||||
folder_open = '',
|
|
||||||
folder_empty = '',
|
|
||||||
provider = function(icon, node, state) -- default icon provider utilizes nvim-web-devicons if available
|
|
||||||
if node.type == 'file' or node.type == 'terminal' then
|
|
||||||
local success, web_devicons = pcall(require, 'nvim-web-devicons')
|
|
||||||
local name = node.type == 'terminal' and 'terminal' or node.name
|
|
||||||
if success then
|
|
||||||
local devicon, hl = web_devicons.get_icon(name)
|
|
||||||
icon.text = devicon or icon.text
|
|
||||||
icon.highlight = hl or icon.highlight
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
-- The next two settings are only a fallback, if you use nvim-web-devicons and configure default icons there
|
|
||||||
-- then these will never be used.
|
|
||||||
default = '*',
|
|
||||||
highlight = 'NeoTreeFileIcon',
|
|
||||||
},
|
|
||||||
modified = {
|
|
||||||
symbol = '[+]',
|
|
||||||
highlight = 'NeoTreeModified',
|
|
||||||
},
|
|
||||||
name = {
|
|
||||||
trailing_slash = false,
|
|
||||||
use_git_status_colors = true,
|
|
||||||
highlight = 'NeoTreeFileName',
|
|
||||||
},
|
|
||||||
git_status = {
|
|
||||||
symbols = {
|
|
||||||
-- Change type
|
|
||||||
added = '', -- or "✚", but this is redundant info if you use git_status_colors on the name
|
|
||||||
modified = '', -- or "", but this is redundant info if you use git_status_colors on the name
|
|
||||||
deleted = '✖', -- this can only be used in the git_status source
|
|
||||||
renamed = '', -- this can only be used in the git_status source
|
|
||||||
-- Status type
|
|
||||||
untracked = '',
|
|
||||||
ignored = '',
|
|
||||||
unstaged = '',
|
|
||||||
staged = '',
|
|
||||||
conflict = '',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
-- If you don't want to use these columns, you can set `enabled = false` for each of them individually
|
|
||||||
file_size = {
|
|
||||||
enabled = true,
|
|
||||||
width = 12, -- width of the column
|
|
||||||
required_width = 64, -- min width of window required to show this column
|
|
||||||
},
|
|
||||||
type = {
|
|
||||||
enabled = true,
|
|
||||||
width = 10, -- width of the column
|
|
||||||
required_width = 122, -- min width of window required to show this column
|
|
||||||
},
|
|
||||||
last_modified = {
|
|
||||||
enabled = true,
|
|
||||||
width = 20, -- width of the column
|
|
||||||
required_width = 88, -- min width of window required to show this column
|
|
||||||
},
|
|
||||||
created = {
|
|
||||||
enabled = true,
|
|
||||||
width = 20, -- width of the column
|
|
||||||
required_width = 110, -- min width of window required to show this column
|
|
||||||
},
|
|
||||||
symlink_target = {
|
|
||||||
enabled = false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
-- A list of functions, each representing a global custom command
|
|
||||||
-- that will be available in all sources (if not overridden in `opts[source_name].commands`)
|
|
||||||
-- see `:h neo-tree-custom-commands-global`
|
|
||||||
commands = {},
|
|
||||||
window = {
|
|
||||||
position = 'left',
|
|
||||||
width = 40,
|
|
||||||
mapping_options = {
|
|
||||||
noremap = true,
|
|
||||||
nowait = true,
|
|
||||||
},
|
|
||||||
mappings = {
|
|
||||||
['\\'] = 'close_window',
|
|
||||||
['<space>'] = '<Nop>',
|
|
||||||
['<2-LeftMouse>'] = 'open',
|
|
||||||
['<cr>'] = 'open',
|
|
||||||
['<esc>'] = 'cancel', -- close preview or floating neo-tree window
|
|
||||||
['P'] = { 'toggle_preview', config = { use_float = true, use_image_nvim = true } },
|
|
||||||
-- Read `# Preview Mode` for more information
|
|
||||||
['l'] = 'focus_preview',
|
|
||||||
['S'] = 'open_split',
|
|
||||||
['s'] = 'open_vsplit',
|
|
||||||
-- ["S"] = "split_with_window_picker",
|
|
||||||
-- ["s"] = "vsplit_with_window_picker",
|
|
||||||
['t'] = 'open_tabnew',
|
|
||||||
-- ["<cr>"] = "open_drop",
|
|
||||||
-- ["t"] = "open_tab_drop",
|
|
||||||
['w'] = 'open_with_window_picker',
|
|
||||||
--["P"] = "toggle_preview", -- enter preview mode, which shows the current node without focusing
|
|
||||||
['C'] = 'close_node',
|
|
||||||
-- ['C'] = 'close_all_subnodes',
|
|
||||||
['z'] = 'close_all_nodes',
|
|
||||||
--["Z"] = "expand_all_nodes",
|
|
||||||
['Z'] = 'expand_all_subnodes',
|
|
||||||
['a'] = {
|
|
||||||
'add',
|
|
||||||
-- this command supports BASH style brace expansion ("x{a,b,c}" -> xa,xb,xc). see `:h neo-tree-file-actions` for details
|
|
||||||
-- some commands may take optional config options, see `:h neo-tree-mappings` for details
|
|
||||||
config = {
|
|
||||||
show_path = 'none', -- "none", "relative", "absolute"
|
|
||||||
},
|
|
||||||
},
|
|
||||||
['A'] = 'add_directory', -- also accepts the optional config.show_path option like "add". this also supports BASH style brace expansion.
|
|
||||||
['d'] = 'delete',
|
|
||||||
['r'] = 'rename',
|
|
||||||
['b'] = 'rename_basename',
|
|
||||||
['y'] = 'copy_to_clipboard',
|
|
||||||
['x'] = 'cut_to_clipboard',
|
|
||||||
['p'] = 'paste_from_clipboard',
|
|
||||||
--['c'] = 'copy', -- takes text input for destination, also accepts the optional config.show_path option like "add":
|
|
||||||
['c'] = {
|
|
||||||
'copy',
|
|
||||||
config = {
|
|
||||||
show_path = 'relative', -- "none", "relative", "absolute"
|
|
||||||
},
|
|
||||||
},
|
|
||||||
['m'] = 'move', -- takes text input for destination, also accepts the optional config.show_path option like "add".
|
|
||||||
['q'] = 'close_window',
|
|
||||||
['R'] = 'refresh',
|
|
||||||
['?'] = 'show_help',
|
|
||||||
['<'] = 'prev_source',
|
|
||||||
['>'] = 'next_source',
|
|
||||||
['i'] = 'show_file_details',
|
|
||||||
-- ["i"] = {
|
|
||||||
-- "show_file_details",
|
|
||||||
-- -- format strings of the timestamps shown for date created and last modified (see `:h os.date()`)
|
|
||||||
-- -- both options accept a string or a function that takes in the date in seconds and returns a string to display
|
|
||||||
-- -- config = {
|
|
||||||
-- -- created_format = "%Y-%m-%d %I:%M %p",
|
|
||||||
-- -- modified_format = "relative", -- equivalent to the line below
|
|
||||||
-- -- modified_format = function(seconds) return require('neo-tree.utils').relative_date(seconds) end
|
|
||||||
-- -- }
|
|
||||||
-- },
|
|
||||||
['Y'] = function(state)
|
|
||||||
local node = state.tree:get_node()
|
|
||||||
local filepath = node:get_id()
|
|
||||||
local filename = node.name
|
|
||||||
|
|
||||||
local results = {
|
|
||||||
filename,
|
|
||||||
vim.fn.fnamemodify(filepath, ':.'),
|
|
||||||
filepath,
|
|
||||||
}
|
|
||||||
|
|
||||||
local i = vim.fn.inputlist {
|
|
||||||
'Choose what to copy:',
|
|
||||||
'1. ' .. results[1],
|
|
||||||
'2. ' .. results[2],
|
|
||||||
'3. ' .. results[3],
|
|
||||||
}
|
|
||||||
|
|
||||||
if i > 0 then
|
|
||||||
local result = results[i]
|
|
||||||
if not result then
|
|
||||||
return print('Invalid choice: ' .. i)
|
|
||||||
end
|
|
||||||
vim.fn.setreg('+', result)
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
nesting_rules = {},
|
|
||||||
filesystem = {
|
|
||||||
filtered_items = {
|
|
||||||
visible = true, -- when true, they will just be displayed differently than normal items
|
|
||||||
hide_dotfiles = true,
|
|
||||||
hide_gitignored = true,
|
|
||||||
hide_hidden = true, -- only works on Windows for hidden files/directories
|
|
||||||
hide_by_name = {
|
|
||||||
--"node_modules"
|
|
||||||
},
|
|
||||||
hide_by_pattern = { -- uses glob style patterns
|
|
||||||
--"*.meta",
|
|
||||||
--"*/src/*/tsconfig.json",
|
|
||||||
},
|
|
||||||
always_show = { -- remains visible even if other settings would normally hide it
|
|
||||||
'.gitignore',
|
|
||||||
},
|
|
||||||
always_show_by_pattern = { -- uses glob style patterns
|
|
||||||
'.env*',
|
|
||||||
},
|
|
||||||
never_show = { -- remains hidden even if visible is toggled to true, this overrides always_show
|
|
||||||
'.DS_Store',
|
|
||||||
--"thumbs.db"
|
|
||||||
},
|
|
||||||
never_show_by_pattern = { -- uses glob style patterns
|
|
||||||
--".null-ls_*",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
follow_current_file = {
|
|
||||||
enabled = true, -- This will find and focus the file in the active buffer every time
|
|
||||||
-- -- the current file is changed while the tree is open.
|
|
||||||
leave_dirs_open = false, -- `false` closes auto expanded dirs, such as with `:Neotree reveal`
|
|
||||||
},
|
|
||||||
group_empty_dirs = false, -- when true, empty folders will be grouped together
|
|
||||||
hijack_netrw_behavior = 'open_current', -- netrw disabled, opening a directory opens neo-tree
|
|
||||||
-- in whatever position is specified in window.position
|
|
||||||
-- "open_current", -- netrw disabled, opening a directory opens within the
|
|
||||||
-- window like netrw would, regardless of window.position
|
|
||||||
-- "disabled", -- netrw left alone, neo-tree does not handle opening dirs
|
|
||||||
use_libuv_file_watcher = false, -- This will use the OS level file watchers to detect changes
|
|
||||||
-- instead of relying on nvim autocmd events.
|
|
||||||
window = {
|
|
||||||
mappings = {
|
|
||||||
['<bs>'] = 'navigate_up',
|
|
||||||
['.'] = 'set_root',
|
|
||||||
['H'] = 'toggle_hidden',
|
|
||||||
['/'] = 'fuzzy_finder',
|
|
||||||
['D'] = 'fuzzy_finder_directory',
|
|
||||||
['#'] = 'fuzzy_sorter', -- fuzzy sorting using the fzy algorithm
|
|
||||||
-- ["D"] = "fuzzy_sorter_directory",
|
|
||||||
['f'] = 'filter_on_submit',
|
|
||||||
['<c-x>'] = 'clear_filter',
|
|
||||||
['[g'] = 'prev_git_modified',
|
|
||||||
[']g'] = 'next_git_modified',
|
|
||||||
['o'] = {
|
|
||||||
'show_help',
|
|
||||||
nowait = false,
|
|
||||||
config = { title = 'Order by', prefix_key = 'o' },
|
|
||||||
},
|
|
||||||
['oc'] = { 'order_by_created', nowait = false },
|
|
||||||
['od'] = { 'order_by_diagnostics', nowait = false },
|
|
||||||
['og'] = { 'order_by_git_status', nowait = false },
|
|
||||||
['om'] = { 'order_by_modified', nowait = false },
|
|
||||||
['on'] = { 'order_by_name', nowait = false },
|
|
||||||
['os'] = { 'order_by_size', nowait = false },
|
|
||||||
['ot'] = { 'order_by_type', nowait = false },
|
|
||||||
-- ['<key>'] = function(state) ... end,
|
|
||||||
},
|
|
||||||
fuzzy_finder_mappings = { -- define keymaps for filter popup window in fuzzy_finder_mode
|
|
||||||
['<down>'] = 'move_cursor_down',
|
|
||||||
['<C-n>'] = 'move_cursor_down',
|
|
||||||
['<up>'] = 'move_cursor_up',
|
|
||||||
['<C-p>'] = 'move_cursor_up',
|
|
||||||
['<esc>'] = 'close',
|
|
||||||
-- ['<key>'] = function(state, scroll_padding) ... end,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
commands = {}, -- Add a custom command or override a global one using the same function name
|
|
||||||
},
|
|
||||||
buffers = {
|
|
||||||
follow_current_file = {
|
|
||||||
enabled = true, -- This will find and focus the file in the active buffer every time
|
|
||||||
-- -- the current file is changed while the tree is open.
|
|
||||||
leave_dirs_open = false, -- `false` closes auto expanded dirs, such as with `:Neotree reveal`
|
|
||||||
},
|
|
||||||
group_empty_dirs = true, -- when true, empty folders will be grouped together
|
|
||||||
show_unloaded = true,
|
|
||||||
window = {
|
|
||||||
mappings = {
|
|
||||||
['d'] = 'buffer_delete',
|
|
||||||
['bd'] = 'buffer_delete',
|
|
||||||
['<bs>'] = 'navigate_up',
|
|
||||||
['.'] = 'set_root',
|
|
||||||
['o'] = {
|
|
||||||
'show_help',
|
|
||||||
nowait = false,
|
|
||||||
config = { title = 'Order by', prefix_key = 'o' },
|
|
||||||
},
|
|
||||||
['oc'] = { 'order_by_created', nowait = false },
|
|
||||||
['od'] = { 'order_by_diagnostics', nowait = false },
|
|
||||||
['om'] = { 'order_by_modified', nowait = false },
|
|
||||||
['on'] = { 'order_by_name', nowait = false },
|
|
||||||
['os'] = { 'order_by_size', nowait = false },
|
|
||||||
['ot'] = { 'order_by_type', nowait = false },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
git_status = {
|
|
||||||
window = {
|
|
||||||
position = 'float',
|
|
||||||
mappings = {
|
|
||||||
['A'] = 'git_add_all',
|
|
||||||
['gu'] = 'git_unstage_file',
|
|
||||||
['gU'] = 'git_undo_last_commit',
|
|
||||||
['ga'] = 'git_add_file',
|
|
||||||
['gr'] = 'git_revert_file',
|
|
||||||
['gc'] = 'git_commit',
|
|
||||||
['gp'] = 'git_push',
|
|
||||||
['gg'] = 'git_commit_and_push',
|
|
||||||
['o'] = {
|
|
||||||
'show_help',
|
|
||||||
nowait = false,
|
|
||||||
config = { title = 'Order by', prefix_key = 'o' },
|
|
||||||
},
|
|
||||||
['oc'] = { 'order_by_created', nowait = false },
|
|
||||||
['od'] = { 'order_by_diagnostics', nowait = false },
|
|
||||||
['om'] = { 'order_by_modified', nowait = false },
|
|
||||||
['on'] = { 'order_by_name', nowait = false },
|
|
||||||
['os'] = { 'order_by_size', nowait = false },
|
|
||||||
['ot'] = { 'order_by_type', nowait = false },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
vim.keymap.set('n', '\\', '<Cmd>Neotree reveal<CR>')
|
|
||||||
end,
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user