update
This commit is contained in:
parent
cc7917b601
commit
c6356a5d08
94
init.lua
94
init.lua
|
|
@ -699,6 +699,80 @@ require('lazy').setup({
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
bashls = {
|
||||||
|
-- cmd = {},
|
||||||
|
filetypes = { 'bash', 'zsh', 'sh' },
|
||||||
|
-- capabilities = {},
|
||||||
|
-- settings = {},
|
||||||
|
},
|
||||||
|
yamlls = {},
|
||||||
|
taplo = { -- for TOML
|
||||||
|
cmd = { 'taplo', 'lsp', 'stdio' },
|
||||||
|
filetypes = { 'toml' },
|
||||||
|
capabilities = {},
|
||||||
|
settings = {},
|
||||||
|
},
|
||||||
|
rust_analyzer = {
|
||||||
|
cmd = {},
|
||||||
|
filetypes = {},
|
||||||
|
capabilities = {},
|
||||||
|
settings = {
|
||||||
|
['rust-analyzer'] = {
|
||||||
|
checkOnSave = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
diagnostics = {
|
||||||
|
enable = true,
|
||||||
|
underline = false,
|
||||||
|
},
|
||||||
|
imports = {
|
||||||
|
granularity = {
|
||||||
|
group = 'module',
|
||||||
|
},
|
||||||
|
prefix = 'self',
|
||||||
|
},
|
||||||
|
cargo = {
|
||||||
|
buildScripts = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
procMacro = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
hls = {
|
||||||
|
cmd = { 'haskell-language-server-wrapper', '--lsp' },
|
||||||
|
filetypes = { 'haskell', 'lhaskell', 'cabal' },
|
||||||
|
capabilities = {},
|
||||||
|
root_dir = function(bufnr, on_dir)
|
||||||
|
local fname = vim.api.nvim_buf_get_name(bufnr)
|
||||||
|
local util = require 'neovim.util'
|
||||||
|
on_dir(util.root_pattern('hie.yaml', 'stack.yaml', 'cabal.project', '*.cabal', 'package.yaml')(fname))
|
||||||
|
end,
|
||||||
|
settings = {
|
||||||
|
haskell = {
|
||||||
|
cabalFormattingProvider = 'cabalfmt',
|
||||||
|
formattingProvider = 'ormolu',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tinymist = {
|
||||||
|
cmd = { 'tinymist' },
|
||||||
|
filetypes = { 'typ' },
|
||||||
|
settings = {
|
||||||
|
formatterMode = 'typStyle',
|
||||||
|
exportPdf = 'onType',
|
||||||
|
semanticTokens = 'disable',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- vale_ls = {
|
||||||
|
-- cmd = { 'vale', 'lsp' },
|
||||||
|
-- filetypes = { 'markdown', 'mdx' },
|
||||||
|
-- capabilities = {},
|
||||||
|
-- settings = {},
|
||||||
|
-- },
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Ensure the servers and tools above are installed
|
-- Ensure the servers and tools above are installed
|
||||||
|
|
@ -717,6 +791,10 @@ require('lazy').setup({
|
||||||
local ensure_installed = vim.tbl_keys(servers or {})
|
local ensure_installed = vim.tbl_keys(servers or {})
|
||||||
vim.list_extend(ensure_installed, {
|
vim.list_extend(ensure_installed, {
|
||||||
'stylua', -- Used to format Lua code
|
'stylua', -- Used to format Lua code
|
||||||
|
'beautysh',
|
||||||
|
'markdownlint',
|
||||||
|
'hlint',
|
||||||
|
'tinymist',
|
||||||
})
|
})
|
||||||
require('mason-tool-installer').setup { ensure_installed = ensure_installed }
|
require('mason-tool-installer').setup { ensure_installed = ensure_installed }
|
||||||
|
|
||||||
|
|
@ -769,6 +847,7 @@ require('lazy').setup({
|
||||||
end,
|
end,
|
||||||
formatters_by_ft = {
|
formatters_by_ft = {
|
||||||
lua = { 'stylua' },
|
lua = { 'stylua' },
|
||||||
|
markdown = { 'markdownlint' },
|
||||||
-- Conform can also run multiple formatters sequentially
|
-- Conform can also run multiple formatters sequentially
|
||||||
-- python = { "isort", "black" },
|
-- python = { "isort", "black" },
|
||||||
--
|
--
|
||||||
|
|
@ -946,7 +1025,20 @@ require('lazy').setup({
|
||||||
config = function()
|
config = function()
|
||||||
local ts = require 'nvim-treesitter'
|
local ts = require 'nvim-treesitter'
|
||||||
ts.setup {}
|
ts.setup {}
|
||||||
ts.install({ 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' }):wait(30000)
|
ts.install({
|
||||||
|
'bash',
|
||||||
|
'c',
|
||||||
|
'diff',
|
||||||
|
'html',
|
||||||
|
'lua',
|
||||||
|
'luadoc',
|
||||||
|
'markdown',
|
||||||
|
'markdown_inline',
|
||||||
|
'query',
|
||||||
|
'vim',
|
||||||
|
'vimdoc',
|
||||||
|
'd2',
|
||||||
|
}):wait(30000)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
-- There are additional nvim-treesitter modules that you can use to interact
|
-- There are additional nvim-treesitter modules that you can use to interact
|
||||||
|
|
|
||||||
|
|
@ -92,5 +92,20 @@ return {
|
||||||
},
|
},
|
||||||
server_opts_overrides = {},
|
server_opts_overrides = {},
|
||||||
}
|
}
|
||||||
|
-- CopilotChat.nvim
|
||||||
|
local map = vim.keymap.set
|
||||||
|
local opts = { noremap = true, silent = true }
|
||||||
|
|
||||||
|
map('n', '<Leader>cci', '<cmd>CopilotChat ', { desc = ':CopilotChat', unpack(opts) })
|
||||||
|
map('n', '<Leader>cco', '<cmd>CopilotChatOpen<CR>', { desc = ':CopilotChatOpen', unpack(opts) })
|
||||||
|
map('n', '<Leader>ccq', '<cmd>CopilotChatClose<CR>', { desc = ':CopilotChatClose', unpack(opts) })
|
||||||
|
map('n', '<Leader>cct', '<cmd>CopilotChatToggle<CR>', { desc = ':CopilotChatToggle', unpack(opts) })
|
||||||
|
map('n', '<Leader>ccs', '<cmd>CopilotChatStop<CR>', { desc = ':CopilotChatStop', unpack(opts) })
|
||||||
|
map('n', '<Leader>ccr', '<cmd>CopilotChatReset<CR>', { desc = ':CopilotChatReset', unpack(opts) })
|
||||||
|
map('n', '<leader>ccS', '<cmd>CopilotChatSave ', { desc = 'Save Copilot Chat history', noremap = true, silent = false })
|
||||||
|
map('n', '<leader>ccL', '<cmd>CopilotChatLoad ', { desc = 'Load Copilot Chat history', noremap = true, silent = false })
|
||||||
|
map('n', '<leader>ccp', '<cmd>CopilotChatPrompts<CR>', { desc = 'Copilot Chat prompt templates', unpack(opts) })
|
||||||
|
map('n', '<leader>ccm', '<cmd>CopilotChatModels<CR>', { desc = 'Copilot Chat models', unpack(opts) })
|
||||||
|
map('n', '<leader>ccE', '<cmd>CopilotChat', { desc = 'Copilot Chat prompt template', noremap = true, silent = false })
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,30 +46,19 @@ map('n', '<Leader>V', '<cmd>ToggleTerm size=80 direction=vertical<CR>', { desc =
|
||||||
map('n', '<M-i>', '<cmd>ToggleTerm direction=float<CR>', { desc = 'Open Terminal floating' })
|
map('n', '<M-i>', '<cmd>ToggleTerm direction=float<CR>', { desc = 'Open Terminal floating' })
|
||||||
map('t', '<M-i>', '<cmd>ToggleTerm direction=float<CR>', { desc = 'Open Terminal floating' })
|
map('t', '<M-i>', '<cmd>ToggleTerm direction=float<CR>', { desc = 'Open Terminal floating' })
|
||||||
|
|
||||||
-- CopilotChat.nvim
|
-- NOTE: macos like keybindings for text editing in insert mode
|
||||||
map('n', '<Leader>cci', '<cmd>CopilotChat ', { desc = ':CopilotChat', unpack(opts) })
|
|
||||||
map('n', '<Leader>cco', '<cmd>CopilotChatOpen<CR>', { desc = ':CopilotChatOpen', unpack(opts) })
|
-- map('i', '<C-a>', '<C-o>^', opts)
|
||||||
map('n', '<Leader>ccq', '<cmd>CopilotChatClose<CR>', { desc = ':CopilotChatClose', unpack(opts) })
|
-- map('i', '<C-e>', '<C-o>$', opts)
|
||||||
map('n', '<Leader>cct', '<cmd>CopilotChatToggle<CR>', { desc = ':CopilotChatToggle', unpack(opts) })
|
-- map('i', '<C-k>', '<C-o>D', opts)
|
||||||
map('n', '<Leader>ccs', '<cmd>CopilotChatStop<CR>', { desc = ':CopilotChatStop', unpack(opts) })
|
-- map('i', '<C-u>', '<C-o>d0', opts)
|
||||||
map('n', '<Leader>ccr', '<cmd>CopilotChatReset<CR>', { desc = ':CopilotChatReset', unpack(opts) })
|
-- map('i', '<C-f>', '<Right>', opts)
|
||||||
map('n', '<leader>ccS', '<cmd>CopilotChatSave ', { desc = 'Save Copilot Chat history', noremap = true, silent = false })
|
-- map('i', '<C-b>', '<Left>', opts)
|
||||||
map('n', '<leader>ccL', '<cmd>CopilotChatLoad ', { desc = 'Load Copilot Chat history', noremap = true, silent = false })
|
-- map('i', '<C-d>', '<Del>', opts)
|
||||||
map('n', '<leader>ccp', '<cmd>CopilotChatPrompts<CR>', { desc = 'Copilot Chat prompt templates', unpack(opts) })
|
-- map('i', '<C-h>', '<BS>', opts)
|
||||||
map('n', '<leader>ccm', '<cmd>CopilotChatModels<CR>', { desc = 'Copilot Chat models', unpack(opts) })
|
-- map('i', '<C-n>', '<Down>', opts)
|
||||||
map('n', '<leader>ccE', '<cmd>CopilotChat', { desc = 'Copilot Chat prompt template', noremap = true, silent = false })
|
-- map('i', '<C-p>', '<Up>', opts)
|
||||||
|
|
||||||
-- macos like keybindings for text editing in insert mode
|
|
||||||
map('i', '<C-a>', '<C-o>^', opts)
|
|
||||||
map('i', '<C-e>', '<C-o>$', opts)
|
|
||||||
map('i', '<C-k>', '<C-o>D', opts)
|
|
||||||
map('i', '<C-u>', '<C-o>d0', opts)
|
|
||||||
map('i', '<C-f>', '<Right>', opts)
|
|
||||||
map('i', '<C-b>', '<Left>', opts)
|
|
||||||
map('i', '<C-d>', '<Del>', opts)
|
|
||||||
map('i', '<C-h>', '<BS>', opts)
|
|
||||||
map('i', '<C-n>', '<Down>', opts)
|
|
||||||
map('i', '<C-p>', '<Up>', opts)
|
|
||||||
-- NOTE: keymaps end
|
-- NOTE: keymaps end
|
||||||
|
|
||||||
-- NOTE: neovide
|
-- NOTE: neovide
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ return {
|
||||||
bigfile = { enabled = true },
|
bigfile = { enabled = true },
|
||||||
dashboard = { enabled = true },
|
dashboard = { enabled = true },
|
||||||
explorer = { enabled = true },
|
explorer = { enabled = true },
|
||||||
|
image = { enabled = false },
|
||||||
indent = { enabled = true },
|
indent = { enabled = true },
|
||||||
input = { enabled = true },
|
input = { enabled = true },
|
||||||
picker = { enabled = true },
|
picker = { enabled = true },
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
return {
|
return {
|
||||||
'ravsii/tree-sitter-d2',
|
'ravsii/tree-sitter-d2',
|
||||||
|
lazy = 'VeryLazy',
|
||||||
enable = true,
|
enable = true,
|
||||||
ft = { 'd2', 'md' },
|
ft = { 'd2', 'md' },
|
||||||
|
version = '*',
|
||||||
dependencies = { 'nvim-treesitter/nvim-treesitter' },
|
dependencies = { 'nvim-treesitter/nvim-treesitter' },
|
||||||
build = 'make nvim-install',
|
build = 'make nvim-install',
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,18 @@ return {
|
||||||
local lint = require 'lint'
|
local lint = require 'lint'
|
||||||
lint.linters_by_ft = {
|
lint.linters_by_ft = {
|
||||||
markdown = { 'markdownlint' },
|
markdown = { 'markdownlint' },
|
||||||
|
mdx = { 'markdownlint' },
|
||||||
|
haskell = { 'hlint' },
|
||||||
|
typ = { 'tinymist' },
|
||||||
|
}
|
||||||
|
local markdownlint = require 'lint.linters.markdownlint'
|
||||||
|
markdownlint.args = {
|
||||||
|
'--disable',
|
||||||
|
'MD013', -- Line length
|
||||||
|
'MD024', -- Multiple headers with the same content
|
||||||
|
'MD025', -- Multiple top level headers in the same document
|
||||||
|
'MD033', -- Inline HTML
|
||||||
|
-- 'MD041', -- First line in file should be a top level header
|
||||||
}
|
}
|
||||||
|
|
||||||
-- To allow other plugins to add linters to require('lint').linters_by_ft,
|
-- To allow other plugins to add linters to require('lint').linters_by_ft,
|
||||||
|
|
|
||||||
|
|
@ -2,24 +2,406 @@
|
||||||
-- https://github.com/nvim-neo-tree/neo-tree.nvim
|
-- https://github.com/nvim-neo-tree/neo-tree.nvim
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
{
|
||||||
'nvim-neo-tree/neo-tree.nvim',
|
'nvim-neo-tree/neo-tree.nvim',
|
||||||
version = '*',
|
lazy = false,
|
||||||
|
branch = 'v3.x',
|
||||||
dependencies = {
|
dependencies = {
|
||||||
'nvim-lua/plenary.nvim',
|
'nvim-lua/plenary.nvim',
|
||||||
'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended
|
'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended
|
||||||
'MunifTanjim/nui.nvim',
|
'MunifTanjim/nui.nvim',
|
||||||
},
|
},
|
||||||
lazy = false,
|
cmd = 'Neotree',
|
||||||
keys = {
|
---@module 'neo-tree'
|
||||||
{ '\\', ':Neotree reveal<CR>', desc = 'NeoTree reveal', silent = true },
|
---@type neotree.Config
|
||||||
},
|
|
||||||
opts = {
|
opts = {
|
||||||
|
close_if_last_window = true, -- 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+
|
||||||
|
clipboard = {
|
||||||
|
sync = 'none', -- or "global"/"universal" to share a clipboard for each/all Neovim instance(s), respectively
|
||||||
|
},
|
||||||
|
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',
|
||||||
|
use_filtered_colors = true, -- Whether to use a different highlight when the file is filtered (hidden, dotfile, etc.).
|
||||||
|
},
|
||||||
|
modified = {
|
||||||
|
symbol = '[+]',
|
||||||
|
highlight = 'NeoTreeModified',
|
||||||
|
},
|
||||||
|
name = {
|
||||||
|
trailing_slash = false,
|
||||||
|
use_filtered_colors = true, -- Whether to use a different highlight when the file is filtered (hidden, dotfile, etc.).
|
||||||
|
use_git_status_colors = true,
|
||||||
|
highlight = 'NeoTreeFileName',
|
||||||
|
},
|
||||||
|
git_status = {
|
||||||
|
symbols = {
|
||||||
|
-- Change type
|
||||||
|
added = '', -- or "✚"
|
||||||
|
modified = '', -- or ""
|
||||||
|
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 = {
|
||||||
|
['<space>'] = {
|
||||||
|
'toggle_node',
|
||||||
|
nowait = false, -- disable `nowait` if you have existing combos starting with this char that you want to use
|
||||||
|
},
|
||||||
|
['<2-LeftMouse>'] = 'open',
|
||||||
|
['<cr>'] = 'open',
|
||||||
|
['<esc>'] = 'cancel', -- close preview or floating neo-tree window
|
||||||
|
['P'] = {
|
||||||
|
'toggle_preview',
|
||||||
|
config = {
|
||||||
|
use_float = true,
|
||||||
|
use_snacks_image = 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-r>'] = 'clear_clipboard',
|
||||||
|
['c'] = 'copy', -- takes text input for destination, also accepts the optional config.show_path option like "add":
|
||||||
|
-- ["c"] = {
|
||||||
|
-- "copy",
|
||||||
|
-- config = {
|
||||||
|
-- show_path = "none" -- "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
|
||||||
|
-- -- }
|
||||||
|
-- },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
nesting_rules = {},
|
||||||
filesystem = {
|
filesystem = {
|
||||||
|
filtered_items = {
|
||||||
|
visible = false, -- when true, they will just be displayed differently than normal items
|
||||||
|
hide_dotfiles = true,
|
||||||
|
hide_gitignored = true,
|
||||||
|
hide_ignored = true, -- hide files that are ignored by other gitignore-like files
|
||||||
|
-- other gitignore-like files, in descending order of precedence.
|
||||||
|
ignore_files = {
|
||||||
|
'.neotreeignore',
|
||||||
|
'.ignore',
|
||||||
|
-- ".rgignore"
|
||||||
|
},
|
||||||
|
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
|
||||||
|
--".gitignored",
|
||||||
|
},
|
||||||
|
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 = false, -- 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_default', -- 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.
|
||||||
|
hide_by_name = {
|
||||||
|
'node_modules',
|
||||||
|
'.DS_Store',
|
||||||
|
},
|
||||||
window = {
|
window = {
|
||||||
mappings = {
|
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,
|
||||||
['\\'] = 'close_window',
|
['\\'] = 'close_window',
|
||||||
|
['<leader>e'] = 'close_window',
|
||||||
|
},
|
||||||
|
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',
|
||||||
|
['<S-CR>'] = 'close_keep_filter',
|
||||||
|
['<C-CR>'] = 'close_clear_filter',
|
||||||
|
['<C-w>'] = { '<C-S-w>', raw = true },
|
||||||
|
{
|
||||||
|
-- normal mode mappings
|
||||||
|
n = {
|
||||||
|
['j'] = 'move_cursor_down',
|
||||||
|
['k'] = 'move_cursor_up',
|
||||||
|
['<S-CR>'] = 'close_keep_filter',
|
||||||
|
['<C-CR>'] = 'close_clear_filter',
|
||||||
|
['<esc>'] = 'close',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
-- ["<esc>"] = "noop", -- if you want to use normal mode
|
||||||
|
-- ["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',
|
||||||
|
['gt'] = 'git_toggle_file_stage',
|
||||||
|
['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 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{ '\\', ':Neotree reveal position=right<CR>', desc = 'NeoTree reveal', silent = true },
|
||||||
|
{ '<leader>e', ':Neotree reveal position=right<CR>', desc = 'NeoTree reveal', silent = true },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'antosha417/nvim-lsp-file-operations',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-lua/plenary.nvim',
|
||||||
|
'nvim-neo-tree/neo-tree.nvim', -- makes sure that this loads after Neo-tree.
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require('lsp-file-operations').setup()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
's1n7ax/nvim-window-picker',
|
||||||
|
version = '2.*',
|
||||||
|
config = function()
|
||||||
|
require('window-picker').setup {
|
||||||
|
filter_rules = {
|
||||||
|
include_current_win = false,
|
||||||
|
autoselect_one = true,
|
||||||
|
-- filter using buffer options
|
||||||
|
bo = {
|
||||||
|
-- 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' },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue