added keybinding to i3 for starting pavucontrol

tinkering with neovim config, mainly 'lualine', 'lsp', and 'telescope'
This commit is contained in:
quak
2024-12-26 10:22:49 +01:00
parent dfa71aef13
commit c403f7edf3
4 changed files with 420 additions and 420 deletions

View File

@@ -13,9 +13,25 @@ set $Alt Mod1
set $Super Mod4 set $Super Mod4
set $mod Mod4 set $mod Mod4
# Font for window titles. Will also be used by the bar unless a different font # Define names for default workspaces for which we configure key bindings later on.
# is used in the bar {} block below. # We use variables to avoid repeating the names in multiple places.
font pango:VictorMonoNerdFont SemiBold 12 set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# move tiling windows via drag & drop by left-clicking into the title bar,
# or left-clicking anywhere into the window while holding the floating modifier.
tiling_drag modifier titlebar
################################### ###################################
@@ -42,38 +58,25 @@ exec --no-startup-id nm-applet
# configuring keybindings # # configuring keybindings #
########################### ###########################
# Use pactl to adjust volume in PulseAudio. # keymaps for i3 actions
set $refresh_i3status killall -SIGUSR1 i3status ## reload the i3 configuration file
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% && $refresh_i3status bindsym $mod+Shift+c reload
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% && $refresh_i3status ## restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status bindsym $mod+Shift+r restart
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status ## exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
# lock screen ## lock screen
bindsym $mod+Escape exec i3lock bindsym $mod+Escape exec i3lock
## kill focused window
bindsym $mod+Shift+q kill
# Use Mouse+$mod to drag floating windows to their wanted position # start rofi (a program launcher with fuzzy finder functionality)
floating_modifier $mod bindsym $mod+d exec --no-startup-id rofi -show combi
bindsym $mod+Shift+d exec --no-startup-id rofi -show run
# move tiling windows via drag & drop by left-clicking into the title bar,
# or left-clicking anywhere into the window while holding the floating modifier.
tiling_drag modifier titlebar
# start a terminal # start a terminal
bindsym $mod+Return exec alacritty bindsym $mod+Return exec alacritty
bindsym $mod+t exec "alacritty -e tmux attach" bindsym $mod+t exec "alacritty -e tmux attach"
# kill focused window
bindsym $mod+Shift+q kill
# start dmenu (a program launcher)
bindsym $mod+d exec --no-startup-id rofi -show combi
bindsym $mod+Shift+d exec --no-startup-id rofi -show run
# A more modern dmenu replacement is rofi:
# bindcode $mod+40 exec "rofi -modi drun,run -show drun"
# There also is i3-dmenu-desktop which only displays applications shipping a
# .desktop file. It is a wrapper around dmenu, so you need that installed.
# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
# change focus # change focus
bindsym $mod+h focus left bindsym $mod+h focus left
@@ -108,19 +111,6 @@ bindsym $mod+v split v
# enter fullscreen mode for the focused container # enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle bindsym $mod+f fullscreen toggle
# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
# switch to workspace # switch to workspace
bindsym $mod+1 workspace number $ws1 bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2 bindsym $mod+2 workspace number $ws2
@@ -169,17 +159,20 @@ bindsym $mod+i move workspace to output down
bindsym $mod+o move workspace to output up bindsym $mod+o move workspace to output up
bindsym $mod+p move workspace to output right bindsym $mod+p move workspace to output right
# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
# take screenshots # take screenshots
bindsym $mod+s exec --no-startup-id maim -su | xclip -selection clipboard -t image/png bindsym $mod+s exec --no-startup-id maim -su | xclip -selection clipboard -t image/png
bindsym $mod+Shift+s exec --no-startup-id maim -su "/home/${USER}/Pictures/screenshots/$(date '+%Y%m%d_%H%M%S').png" bindsym $mod+Shift+s exec --no-startup-id maim -su "/home/${USER}/Pictures/screenshots/$(date '+%Y%m%d_%H%M%S').png"
# open pavucontrol
bindsym $mod+a exec --no-startup-id pavucontrol
# Use pactl to adjust volume in PulseAudio.
set $refresh_i3status killall -SIGUSR1 i3status
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% && $refresh_i3status
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% && $refresh_i3status
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
######################### #########################
# configuring behaviour # # configuring behaviour #
@@ -203,6 +196,10 @@ for_window [class=".*"] border pixel 1
# gaps between windows and screen border # gaps between windows and screen border
gaps inner 12 px gaps inner 12 px
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:VictorMonoNerdFont SemiBold 12
# defining colors # defining colors
set $cyan #15d7e5 set $cyan #15d7e5
set $magenta #e02482 set $magenta #e02482

View File

@@ -1,56 +1,59 @@
-- plugin for formatter and linter -- plugin for formatter and linter
return { return {
"nvimtools/none-ls.nvim", "nvimtools/none-ls.nvim",
dependencies = { dependencies = {
"nvimtools/none-ls-extras.nvim", "nvimtools/none-ls-extras.nvim",
"jayp0521/mason-null-ls.nvim", -- ensure dependencies are installed "jayp0521/mason-null-ls.nvim", -- ensure dependencies are installed
}, },
config = function() -- keys = {
local null_ls = require("null-ls") -- { "<leader>f", "vim.lsp.buf.format({async = false})", silent = true, desc = "manually run [F]ormatter" },
local formatting = null_ls.builtins.formatting -- to setup formatters -- },
local diagnostics = null_ls.builtins.diagnostics -- to setup linters config = function()
local null_ls = require("null-ls")
local formatting = null_ls.builtins.formatting -- to setup formatters
local diagnostics = null_ls.builtins.diagnostics -- to setup linters
-- Formatters & linters for mason to install -- Formatters & linters for mason to install
require("mason-null-ls").setup({ require("mason-null-ls").setup({
ensure_installed = { ensure_installed = {
"checkmake", -- linter for Makefiles "checkmake", -- linter for Makefiles
"stylua", -- lua formatter "stylua", -- lua formatter
"ruff", -- Python linter and formatter "ruff", -- Python linter and formatter
"shfmt", -- Shell formatter "shfmt", -- Shell formatter
"rust_hdl", "rust_hdl",
"clangd", "clangd",
"clippy", "clippy",
}, },
automatic_installation = true, automatic_installation = true,
}) })
local sources = { local sources = {
diagnostics.checkmake, diagnostics.checkmake,
formatting.prettier.with({ filetypes = { "html", "json", "yaml", "markdown" } }), formatting.prettier.with({ filetypes = { "html", "json", "yaml", "markdown" } }),
formatting.stylua, formatting.stylua,
formatting.shfmt.with({ args = { "-i", "4" } }), formatting.shfmt.with({ args = { "-i", "4" } }),
formatting.terraform_fmt, formatting.terraform_fmt,
require("none-ls.formatting.ruff").with({ extra_args = { "--extend-select", "I" } }), require("none-ls.formatting.ruff").with({ extra_args = { "--extend-select", "I" } }),
require("none-ls.formatting.ruff_format"), require("none-ls.formatting.ruff_format"),
} }
local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
null_ls.setup({ null_ls.setup({
-- debug = true, -- Enable debug mode. Inspect logs with :NullLsLog. -- debug = true, -- Enable debug mode. Inspect logs with :NullLsLog.
sources = sources, sources = sources,
-- you can reuse a shared lspconfig on_attach callback here -- you can reuse a shared lspconfig on_attach callback here
on_attach = function(client, bufnr) on_attach = function(client, bufnr)
if client.supports_method("textDocument/formatting") then if client.supports_method("textDocument/formatting") then
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
vim.api.nvim_create_autocmd("BufWritePre", { vim.api.nvim_create_autocmd("BufWritePre", {
group = augroup, group = augroup,
buffer = bufnr, buffer = bufnr,
callback = function() callback = function()
vim.lsp.buf.format({ async = false }) vim.lsp.buf.format({ async = false })
end, end,
}) })
end end
end, end,
}) })
end, end,
} }

View File

@@ -2,7 +2,7 @@
return { return {
"nvim-lualine/lualine.nvim", "nvim-lualine/lualine.nvim",
config = function() config = function()
-- Adapted from: https://github.com/nvim-lualine/lualine.nvim/blob/master/lua/lualine/themes/onedark.lua -- adapted from zegonix' alacritty theme, apart from the grays, which have been copied from wegmanma's config
local colors = { local colors = {
black = "#181820", black = "#181820",
red = "#E00010", red = "#E00010",

View File

@@ -1,325 +1,325 @@
return { return {
"nvim-neo-tree/neo-tree.nvim", "nvim-neo-tree/neo-tree.nvim",
event = "VeryLazy", event = "VeryLazy",
branch = "v3.x", 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",
-- "3rd/image.nvim", -- Optional image support in preview window: See `# Preview Mode` for more information -- "3rd/image.nvim", -- Optional image support in preview window: See `# Preview Mode` for more information
{ {
"s1n7ax/nvim-window-picker", "s1n7ax/nvim-window-picker",
version = "2.*", version = "2.*",
config = function() config = function()
require("window-picker").setup({ require("window-picker").setup({
filter_rules = { filter_rules = {
include_current_win = false, include_current_win = false,
autoselect_one = true, autoselect_one = true,
-- filter using buffer options -- filter using buffer options
bo = { bo = {
-- if the file type is one of following, the window will be ignored -- if the file type is one of following, the window will be ignored
filetype = { "neo-tree", "neo-tree-popup", "notify" }, filetype = { "neo-tree", "neo-tree-popup", "notify" },
-- if the buffer type is one of following, the window will be ignored -- if the buffer type is one of following, the window will be ignored
buftype = { "terminal", "quickfix" }, buftype = { "terminal", "quickfix" },
}, },
}, },
}) })
end, end,
keys = { keys = {
{ "<leader>w", ":Neotree toggle float<CR>", silent = true, desc = "Popup File Explorer" }, { "<leader>e", ":Neotree toggle float<CR>", silent = true, desc = "Popup File Explorer" },
-- { '<leader>e', ':Neotree toggle position=left<CR>', silent = true, desc = 'Left File Explorer' }, -- { '<leader>e', ':Neotree toggle position=left<CR>', silent = true, desc = 'Left File Explorer' },
{ {
"<leader>ngs", "<leader>gs",
":Neotree float git_status<CR>", ":Neotree float git_status<CR>",
silent = true, silent = true,
desc = "Neotree Open Git Status Window", desc = "Neotree Open Git Status Window",
}, },
}, },
}, },
}, },
config = function() config = function()
-- If you want icons for diagnostic errors, you'll need to define them somewhere: -- If you want icons for diagnostic errors, you'll need to define them somewhere:
vim.fn.sign_define("DiagnosticSignError", { text = "", texthl = "DiagnosticSignError" }) vim.fn.sign_define("DiagnosticSignError", { text = "", texthl = "DiagnosticSignError" })
vim.fn.sign_define("DiagnosticSignWarn", { text = "", texthl = "DiagnosticSignWarn" }) vim.fn.sign_define("DiagnosticSignWarn", { text = "", texthl = "DiagnosticSignWarn" })
vim.fn.sign_define("DiagnosticSignInfo", { text = "", texthl = "DiagnosticSignInfo" }) vim.fn.sign_define("DiagnosticSignInfo", { text = "", texthl = "DiagnosticSignInfo" })
vim.fn.sign_define("DiagnosticSignHint", { text = "󰌵", texthl = "DiagnosticSignHint" }) vim.fn.sign_define("DiagnosticSignHint", { text = "󰌵", texthl = "DiagnosticSignHint" })
require("neo-tree").setup({ require("neo-tree").setup({
close_if_last_window = false, -- Close Neo-tree if it is the last window left in the tab close_if_last_window = false, -- Close Neo-tree if it is the last window left in the tab
popup_border_style = "rounded", popup_border_style = "rounded",
enable_git_status = true, enable_git_status = true,
enable_diagnostics = 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_do_not_replace_types = { "terminal", "trouble", "qf" }, -- when opening files, do not use windows containing these filetypes or buftypes
sort_case_insensitive = false, -- used when sorting files and directories in the tree 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 = nil, -- use a custom function for sorting files and directories in the tree
-- sort_function = function (a,b) -- sort_function = function (a,b)
-- if a.type == b.type then -- if a.type == b.type then
-- return a.path > b.path -- return a.path > b.path
-- else -- else
-- return a.type > b.type -- return a.type > b.type
-- end -- end
-- end , -- this sorts files and directories descendantly -- end , -- this sorts files and directories descendantly
default_component_configs = { default_component_configs = {
container = { container = {
enable_character_fade = true, enable_character_fade = true,
}, },
indent = { indent = {
indent_size = 2, indent_size = 2,
padding = 1, -- extra padding on left hand side padding = 1, -- extra padding on left hand side
-- indent guides -- indent guides
with_markers = true, with_markers = true,
indent_marker = "", indent_marker = "",
last_indent_marker = "", last_indent_marker = "",
highlight = "NeoTreeIndentMarker", highlight = "NeoTreeIndentMarker",
-- expander config, needed for nesting files -- expander config, needed for nesting files
with_expanders = nil, -- if nil and file nesting is enabled, will enable expanders with_expanders = nil, -- if nil and file nesting is enabled, will enable expanders
expander_collapsed = "", expander_collapsed = "",
expander_expanded = "", expander_expanded = "",
expander_highlight = "NeoTreeExpander", expander_highlight = "NeoTreeExpander",
}, },
icon = { icon = {
folder_closed = "", folder_closed = "",
folder_open = "", folder_open = "",
folder_empty = "󰜌", folder_empty = "󰜌",
-- The next two settings are only a fallback, if you use nvim-web-devicons and configure default icons there -- 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. -- then these will never be used.
default = "*", default = "*",
highlight = "NeoTreeFileIcon", highlight = "NeoTreeFileIcon",
}, },
modified = { modified = {
symbol = "[+]", symbol = "[+]",
highlight = "NeoTreeModified", highlight = "NeoTreeModified",
}, },
name = { name = {
trailing_slash = false, trailing_slash = false,
use_git_status_colors = true, use_git_status_colors = true,
highlight = "NeoTreeFileName", highlight = "NeoTreeFileName",
}, },
git_status = { git_status = {
symbols = { symbols = {
-- Change type -- Change type
added = "", -- or "✚", but this is redundant info if you use git_status_colors on the name 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 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 deleted = "", -- this can only be used in the git_status source
renamed = "󰁕", -- this can only be used in the git_status source renamed = "󰁕", -- this can only be used in the git_status source
-- Status type -- Status type
untracked = "", untracked = "",
ignored = "", ignored = "",
unstaged = "󰄱", unstaged = "󰄱",
staged = "", staged = "",
conflict = "", conflict = "",
}, },
}, },
-- If you don't want to use these columns, you can set `enabled = false` for each of them individually -- If you don't want to use these columns, you can set `enabled = false` for each of them individually
file_size = { file_size = {
enabled = true, enabled = true,
required_width = 64, -- min width of window required to show this column required_width = 64, -- min width of window required to show this column
}, },
type = { type = {
enabled = true, enabled = true,
required_width = 122, -- min width of window required to show this column required_width = 122, -- min width of window required to show this column
}, },
last_modified = { last_modified = {
enabled = true, enabled = true,
required_width = 88, -- min width of window required to show this column required_width = 88, -- min width of window required to show this column
}, },
created = { created = {
enabled = true, enabled = true,
required_width = 110, -- min width of window required to show this column required_width = 110, -- min width of window required to show this column
}, },
symlink_target = { symlink_target = {
enabled = false, enabled = false,
}, },
}, },
-- A list of functions, each representing a global custom command -- 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`) -- that will be available in all sources (if not overridden in `opts[source_name].commands`)
-- see `:h neo-tree-custom-commands-global` -- see `:h neo-tree-custom-commands-global`
commands = {}, commands = {},
window = { window = {
position = "left", position = "left",
width = 40, width = 40,
mapping_options = { mapping_options = {
noremap = true, noremap = true,
nowait = true, nowait = true,
}, },
mappings = { mappings = {
["<space>"] = { ["<space>"] = {
"toggle_node", "toggle_node",
nowait = false, -- disable `nowait` if you have existing combos starting with this char that you want to use nowait = false, -- disable `nowait` if you have existing combos starting with this char that you want to use
}, },
["<2-LeftMouse>"] = "open", ["<2-LeftMouse>"] = "open",
["<cr>"] = "open", ["<cr>"] = "open",
["<esc>"] = "cancel", -- close preview or floating neo-tree window ["<esc>"] = "cancel", -- close preview or floating neo-tree window
["P"] = { "toggle_preview", config = { use_float = true, use_image_nvim = true } }, ["P"] = { "toggle_preview", config = { use_float = true, use_image_nvim = true } },
-- Read `# Preview Mode` for more information -- Read `# Preview Mode` for more information
["l"] = "open", ["l"] = "open",
["S"] = "open_split", ["S"] = "open_split",
["s"] = "open_vsplit", ["s"] = "open_vsplit",
-- ["S"] = "split_with_window_picker", -- ["S"] = "split_with_window_picker",
-- ["s"] = "vsplit_with_window_picker", -- ["s"] = "vsplit_with_window_picker",
["t"] = "open_tabnew", ["t"] = "open_tabnew",
-- ["<cr>"] = "open_drop", -- ["<cr>"] = "open_drop",
-- ["t"] = "open_tab_drop", -- ["t"] = "open_tab_drop",
["w"] = "open_with_window_picker", ["w"] = "open_with_window_picker",
--["P"] = "toggle_preview", -- enter preview mode, which shows the current node without focusing --["P"] = "toggle_preview", -- enter preview mode, which shows the current node without focusing
["C"] = "close_node", ["C"] = "close_node",
-- ['C'] = 'close_all_subnodes', -- ['C'] = 'close_all_subnodes',
["z"] = "close_all_nodes", ["z"] = "close_all_nodes",
--["Z"] = "expand_all_nodes", --["Z"] = "expand_all_nodes",
["a"] = { ["a"] = {
"add", "add",
-- this command supports BASH style brace expansion ("x{a,b,c}" -> xa,xb,xc). see `:h neo-tree-file-actions` for details -- 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 -- some commands may take optional config options, see `:h neo-tree-mappings` for details
config = { config = {
show_path = "none", -- "none", "relative", "absolute" 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. ["A"] = "add_directory", -- also accepts the optional config.show_path option like "add". this also supports BASH style brace expansion.
["d"] = "delete", ["d"] = "delete",
["r"] = "rename", ["r"] = "rename",
["y"] = "copy_to_clipboard", ["y"] = "copy_to_clipboard",
["x"] = "cut_to_clipboard", ["x"] = "cut_to_clipboard",
["p"] = "paste_from_clipboard", ["p"] = "paste_from_clipboard",
["c"] = "copy", -- takes text input for destination, also accepts the optional config.show_path option like "add": ["c"] = "copy", -- takes text input for destination, also accepts the optional config.show_path option like "add":
-- ["c"] = { -- ["c"] = {
-- "copy", -- "copy",
-- config = { -- config = {
-- show_path = "none" -- "none", "relative", "absolute" -- show_path = "none" -- "none", "relative", "absolute"
-- } -- }
--} --}
["m"] = "move", -- takes text input for destination, also accepts the optional config.show_path option like "add". ["m"] = "move", -- takes text input for destination, also accepts the optional config.show_path option like "add".
["q"] = "close_window", ["q"] = "close_window",
["R"] = "refresh", ["R"] = "refresh",
["?"] = "show_help", ["?"] = "show_help",
["<"] = "prev_source", ["<"] = "prev_source",
[">"] = "next_source", [">"] = "next_source",
["i"] = "show_file_details", ["i"] = "show_file_details",
}, },
}, },
nesting_rules = {}, nesting_rules = {},
filesystem = { filesystem = {
filtered_items = { filtered_items = {
visible = false, -- when true, they will just be displayed differently than normal items visible = false, -- when true, they will just be displayed differently than normal items
hide_dotfiles = true, hide_dotfiles = true,
hide_gitignored = true, hide_gitignored = true,
hide_hidden = true, -- only works on Windows for hidden files/directories hide_hidden = true, -- only works on Windows for hidden files/directories
hide_by_name = { hide_by_name = {
"__pycache__", "__pycache__",
".python-version", ".python-version",
".git", ".git",
".venv", ".venv",
}, },
hide_by_pattern = { -- uses glob style patterns hide_by_pattern = { -- uses glob style patterns
--"*.meta", --"*.meta",
--"*/src/*/tsconfig.json", --"*/src/*/tsconfig.json",
}, },
always_show = { -- remains visible even if other settings would normally hide it always_show = { -- remains visible even if other settings would normally hide it
--".gitignored", --".gitignored",
}, },
always_show_by_pattern = { -- uses glob style patterns always_show_by_pattern = { -- uses glob style patterns
--".env*", --".env*",
}, },
never_show = { -- remains hidden even if visible is toggled to true, this overrides always_show never_show = { -- remains hidden even if visible is toggled to true, this overrides always_show
--".DS_Store", --".DS_Store",
--"thumbs.db" --"thumbs.db"
}, },
never_show_by_pattern = { -- uses glob style patterns never_show_by_pattern = { -- uses glob style patterns
--".null-ls_*", --".null-ls_*",
}, },
}, },
follow_current_file = { follow_current_file = {
enabled = false, -- This will find and focus the file in the active buffer every time 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. -- -- the current file is changed while the tree is open.
leave_dirs_open = false, -- `false` closes auto expanded dirs, such as with `:Neotree reveal` 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 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 hijack_netrw_behavior = "open_default", -- netrw disabled, opening a directory opens neo-tree
-- in whatever position is specified in window.position -- in whatever position is specified in window.position
-- "open_current", -- netrw disabled, opening a directory opens within the -- "open_current", -- netrw disabled, opening a directory opens within the
-- window like netrw would, regardless of window.position -- window like netrw would, regardless of window.position
-- "disabled", -- netrw left alone, neo-tree does not handle opening dirs -- "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 use_libuv_file_watcher = false, -- This will use the OS level file watchers to detect changes
-- instead of relying on nvim autocmd events. -- instead of relying on nvim autocmd events.
window = { window = {
mappings = { mappings = {
["<bs>"] = "navigate_up", ["<bs>"] = "navigate_up",
["."] = "set_root", ["."] = "set_root",
["H"] = "toggle_hidden", ["H"] = "toggle_hidden",
["/"] = "fuzzy_finder", ["/"] = "fuzzy_finder",
["D"] = "fuzzy_finder_directory", ["D"] = "fuzzy_finder_directory",
["#"] = "fuzzy_sorter", -- fuzzy sorting using the fzy algorithm ["#"] = "fuzzy_sorter", -- fuzzy sorting using the fzy algorithm
-- ["D"] = "fuzzy_sorter_directory", -- ["D"] = "fuzzy_sorter_directory",
["f"] = "filter_on_submit", ["f"] = "filter_on_submit",
["<c-x>"] = "clear_filter", ["<c-x>"] = "clear_filter",
["[g"] = "prev_git_modified", ["[g"] = "prev_git_modified",
["]g"] = "next_git_modified", ["]g"] = "next_git_modified",
["o"] = { "show_help", nowait = false, config = { title = "Order by", prefix_key = "o" } }, ["o"] = { "show_help", nowait = false, config = { title = "Order by", prefix_key = "o" } },
["oc"] = { "order_by_created", nowait = false }, ["oc"] = { "order_by_created", nowait = false },
["od"] = { "order_by_diagnostics", nowait = false }, ["od"] = { "order_by_diagnostics", nowait = false },
["og"] = { "order_by_git_status", nowait = false }, ["og"] = { "order_by_git_status", nowait = false },
["om"] = { "order_by_modified", nowait = false }, ["om"] = { "order_by_modified", nowait = false },
["on"] = { "order_by_name", nowait = false }, ["on"] = { "order_by_name", nowait = false },
["os"] = { "order_by_size", nowait = false }, ["os"] = { "order_by_size", nowait = false },
["ot"] = { "order_by_type", nowait = false }, ["ot"] = { "order_by_type", nowait = false },
-- ['<key>'] = function(state) ... end, -- ['<key>'] = function(state) ... end,
}, },
fuzzy_finder_mappings = { -- define keymaps for filter popup window in fuzzy_finder_mode fuzzy_finder_mappings = { -- define keymaps for filter popup window in fuzzy_finder_mode
["<down>"] = "move_cursor_down", ["<down>"] = "move_cursor_down",
["<C-n>"] = "move_cursor_down", ["<C-n>"] = "move_cursor_down",
["<up>"] = "move_cursor_up", ["<up>"] = "move_cursor_up",
["<C-p>"] = "move_cursor_up", ["<C-p>"] = "move_cursor_up",
-- ['<key>'] = function(state, scroll_padding) ... end, -- ['<key>'] = function(state, scroll_padding) ... end,
}, },
}, },
commands = {}, -- Add a custom command or override a global one using the same function name commands = {}, -- Add a custom command or override a global one using the same function name
}, },
buffers = { buffers = {
follow_current_file = { follow_current_file = {
enabled = true, -- This will find and focus the file in the active buffer every time 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. -- -- the current file is changed while the tree is open.
leave_dirs_open = false, -- `false` closes auto expanded dirs, such as with `:Neotree reveal` 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 group_empty_dirs = true, -- when true, empty folders will be grouped together
show_unloaded = true, show_unloaded = true,
window = { window = {
mappings = { mappings = {
["bd"] = "buffer_delete", ["bd"] = "buffer_delete",
["<bs>"] = "navigate_up", ["<bs>"] = "navigate_up",
["."] = "set_root", ["."] = "set_root",
["o"] = { "show_help", nowait = false, config = { title = "Order by", prefix_key = "o" } }, ["o"] = { "show_help", nowait = false, config = { title = "Order by", prefix_key = "o" } },
["oc"] = { "order_by_created", nowait = false }, ["oc"] = { "order_by_created", nowait = false },
["od"] = { "order_by_diagnostics", nowait = false }, ["od"] = { "order_by_diagnostics", nowait = false },
["om"] = { "order_by_modified", nowait = false }, ["om"] = { "order_by_modified", nowait = false },
["on"] = { "order_by_name", nowait = false }, ["on"] = { "order_by_name", nowait = false },
["os"] = { "order_by_size", nowait = false }, ["os"] = { "order_by_size", nowait = false },
["ot"] = { "order_by_type", nowait = false }, ["ot"] = { "order_by_type", nowait = false },
}, },
}, },
}, },
git_status = { git_status = {
window = { window = {
position = "float", position = "float",
mappings = { mappings = {
["A"] = "git_add_all", ["A"] = "git_add_all",
["gu"] = "git_unstage_file", ["gu"] = "git_unstage_file",
["ga"] = "git_add_file", ["ga"] = "git_add_file",
["gr"] = "git_revert_file", ["gr"] = "git_revert_file",
["gc"] = "git_commit", ["gc"] = "git_commit",
["gp"] = "git_push", ["gp"] = "git_push",
["gg"] = "git_commit_and_push", ["gg"] = "git_commit_and_push",
["o"] = { "show_help", nowait = false, config = { title = "Order by", prefix_key = "o" } }, ["o"] = { "show_help", nowait = false, config = { title = "Order by", prefix_key = "o" } },
["oc"] = { "order_by_created", nowait = false }, ["oc"] = { "order_by_created", nowait = false },
["od"] = { "order_by_diagnostics", nowait = false }, ["od"] = { "order_by_diagnostics", nowait = false },
["om"] = { "order_by_modified", nowait = false }, ["om"] = { "order_by_modified", nowait = false },
["on"] = { "order_by_name", nowait = false }, ["on"] = { "order_by_name", nowait = false },
["os"] = { "order_by_size", nowait = false }, ["os"] = { "order_by_size", nowait = false },
["ot"] = { "order_by_type", nowait = false }, ["ot"] = { "order_by_type", nowait = false },
}, },
}, },
}, },
}) })
vim.cmd([[nnoremap \ :Neotree reveal<cr>]]) vim.cmd([[nnoremap \ :Neotree reveal<cr>]])
end, end,
} }