1

Compare commits

...

9 Commits

2 changed files with 231 additions and 513 deletions

View File

@ -80,8 +80,8 @@ in {
}; };
programs.nixvim = { programs.nixvim = {
enable = true;
defaultEditor = true; defaultEditor = true;
enable = true;
enableMan = false; # Nixvim man pages enableMan = false; # Nixvim man pages
luaLoader.enable = true; # NOTE: Experimental luaLoader.enable = true; # NOTE: Experimental
viAlias = neovim.alias; viAlias = neovim.alias;
@ -228,25 +228,6 @@ in {
end end
''; '';
} }
# This breaks if the preview buffer does not refer to a file, e.g. when showing previous notifications
# {
# desc = "Enable line wrapping in telescope preview";
# event = ["User"];
# pattern = ["TelescopePreviewerLoaded"];
# callback.__raw = ''
# -- The callback arg is of this format:
# -- {
# -- title: string, # preview window title
# -- filetype: string,
# -- bufname: string,
# -- }
# function(args)
# vim.wo.wrap = true
# end
# '';
# }
]; ];
keymaps = import ./mappings.nix {inherit lib mylib;}; keymaps = import ./mappings.nix {inherit lib mylib;};
@ -272,13 +253,6 @@ in {
}; };
}; };
bbye = {
name = "vim-bbye";
pkg = pkgs.vimPlugins.vim-bbye;
lazy = true;
cmd = ["Bdelete" "Bwipeout"];
};
better-escape = rec { better-escape = rec {
name = "better_escape"; name = "better_escape";
pkg = pkgs.vimPlugins.better-escape-nvim; pkg = pkgs.vimPlugins.better-escape-nvim;
@ -363,13 +337,6 @@ in {
}; };
}; };
cellular-automaton = {
name = "cellular-automaton";
pkg = pkgs.vimPlugins.cellular-automaton-nvim;
lazy = true;
cmd = ["CellularAutomaton"];
};
# NOTE: In LazyVim require("clang_extensions").setup(opts) is called where opts is the server definition from lspconfig... # NOTE: In LazyVim require("clang_extensions").setup(opts) is called where opts is the server definition from lspconfig...
clangd-extensions = rec { clangd-extensions = rec {
name = "clangd_extensions"; name = "clangd_extensions";
@ -555,117 +522,12 @@ in {
}; };
}; };
# TODO: Don't autosave, but if a session exists, update it (using should_autosave)
_persisted = {
name = "persisted";
pkg = pkgs.vimPlugins.persisted-nvim;
dependencies = [telescope];
lazy = true;
cmd = ["SessionSave" "SessionDelete" "Telescope persisted"];
config = ''
function(_, opts)
require("persisted").setup(opts)
require("telescope").load_extension("persisted")
end
'';
opts = {
silent = false;
use_git_branch = false;
autosave = false;
autoload = false;
follow_cwd = true;
ignored_dirs = [
"/"
"~/"
"~/Projects/"
];
};
};
direnv = { direnv = {
name = "direnv"; name = "direnv";
pkg = pkgs.vimPlugins.direnv-vim; pkg = pkgs.vimPlugins.direnv-vim;
lazy = false; lazy = false;
}; };
dashboard = rec {
name = "dashboard";
pkg = pkgs.vimPlugins.dashboard-nvim;
dependencies = [
web-devicons
_persisted
];
lazy = false;
config = mkDefaultConfig name;
opts = {
theme = "doom";
disable_move = true;
shortcut_type = "number";
config = {
center = [
{
action = "Telescope persisted";
desc = " Restore Session";
icon = " ";
key = "s";
}
{
action = "Telescope find_files";
desc = " Find File";
icon = " ";
key = "f";
}
{
action = "Telescope oldfiles";
desc = " Recent Files";
icon = " ";
key = "r";
}
{
action = "ObsidianSearch";
desc = " Obsidian Note";
icon = " ";
key = "o";
}
{
action = "ene | startinsert";
desc = " New File";
icon = " ";
key = "n";
}
{
action = "Telescope live_grep";
desc = " Find Text";
icon = " ";
key = "g";
}
{
action = "Lazy";
desc = " Lazy";
icon = "󰒲 ";
key = "l";
}
{
action = "quitall";
desc = " Quit";
icon = " ";
key = "q";
}
];
footer.__raw = ''
function()
local stats = require("lazy").stats()
local ms = (math.floor(stats.startuptime * 100 + 0.5) / 100)
return { " Neovim loaded " .. stats.loaded .. "/" .. stats.count .. " plugins in " .. ms .. "ms" }
end,
'';
};
};
};
diffview = { diffview = {
name = "diffview"; name = "diffview";
pkg = pkgs.vimPlugins.diffview-nvim; pkg = pkgs.vimPlugins.diffview-nvim;
@ -681,27 +543,6 @@ in {
config = mkDefaultConfig name; config = mkDefaultConfig name;
}; };
gitmessenger = {
name = "gitmessenger";
pkg = pkgs.vimPlugins.git-messenger-vim;
lazy = true;
cmd = ["GitMessenger"];
init = let
mappings = mylib.generators.toLuaObject {
git_messenger_no_default_mappings = true;
git_messenger_floating_win_opts = {
border = "rounded";
};
};
in ''
function()
for k, v in pairs(${mappings}) do
vim.g[k] = v
end
end
'';
};
gitsigns = rec { gitsigns = rec {
name = "gitsigns"; name = "gitsigns";
pkg = pkgs.vimPlugins.gitsigns-nvim; pkg = pkgs.vimPlugins.gitsigns-nvim;
@ -739,7 +580,6 @@ in {
filetypesDenylist = [ filetypesDenylist = [
"DressingSelect" "DressingSelect"
"Outline" "Outline"
"TelescopePrompt"
"alpha" "alpha"
"harpoon" "harpoon"
"toggleterm" "toggleterm"
@ -819,34 +659,6 @@ in {
config = mkDefaultConfig name; config = mkDefaultConfig name;
}; };
lazygit = {
name = "lazygit";
pkg = pkgs.vimPlugins.lazygit-nvim;
dependencies = [_plenary];
lazy = true;
cmd = ["LazyGit" "LazyGitConfig" "LazyGitCurrentFile" "LazyGitFilter" "LazyGitFilterCurrentFile"];
};
# leetcode = rec {
# name = "leetcode";
# pkg = pkgs.vimUtils.buildVimPlugin {
# name = "leetcode";
# src = pkgs.fetchFromGitHub {
# owner = "kawre";
# repo = "leetcode.nvim";
# rev = "02fb2c855658ad6b60e43671f6b040c812181a1d";
# sha256 = "sha256-YoFRd9Uf+Yv4YM6/l7MVLMjfRqhroSS3RCmZvNowIAo=";
# };
# };
# lazy = true;
# cmd = ["Leet"];
# dependencies = [_notify _nui _plenary telescope treesitter web-devicons];
# config = mkDefaultConfig name;
# opts = {
# lang = "python";
# };
# };
lint = { lint = {
name = "lint"; name = "lint";
pkg = pkgs.vimPlugins.nvim-lint; pkg = pkgs.vimPlugins.nvim-lint;
@ -1144,7 +956,7 @@ in {
} }
''; '';
in { in {
extensions = ["fzf" "lazy" "neo-tree" "oil" "quickfix" "toggleterm" "trouble"]; extensions = ["fzf" "lazy" "quickfix" "toggleterm" "trouble"];
options = { options = {
# theme = "catppuccin"; # theme = "catppuccin";
@ -1270,77 +1082,6 @@ in {
}; };
}; };
neo-tree = rec {
name = "neo-tree";
pkg = pkgs.vimPlugins.neo-tree-nvim;
dependencies = [
_plenary
web-devicons
_nui
];
lazy = true;
cmd = ["Neotree"];
config = mkDefaultConfig name;
opts = {
use_default_mappings = false;
popup_border_style = "rounded";
enable_git_status = true;
enable_diagnostics = false;
open_files_do_not_replace_types = ["terminal" "trouble" "qf"];
default_component_configs = {
container = {
enable_character_fade = true;
};
};
filesystem = {
bind_to_cwd = true;
cwd_target.sidebar = "global";
filtered_items = {
visible = false; # Toggle with "H"
};
follow_current_file = {
enabled = true;
leave_dirs_open = false;
};
};
buffers = {
follow_current_file = {
enabled = true;
leave_dirs_open = false;
};
};
window = {
position = "left";
mappings = {
"<CR>" = "open";
"c" = "close_node";
"R" = "refresh";
"q" = "close_window";
"i" = "show_file_details";
"r" = "rename";
"d" = "delete";
"x" = "cut_to_clipboard";
"y" = "copy_to_clipboard";
"p" = "paste_from_clipboard";
"a" = "add";
"." = "set_root";
">" = "navigate_up";
"H" = "toggle_hidden";
"<Esc>" = "cancel";
"/" = "fuzzy_finder";
"?" = "show_help";
};
};
};
};
neogen = rec { neogen = rec {
name = "neogen"; name = "neogen";
pkg = pkgs.vimPlugins.neogen; pkg = pkgs.vimPlugins.neogen;
@ -1352,25 +1093,6 @@ in {
}; };
}; };
_notify = {
name = "notify";
pkg = pkgs.vimPlugins.nvim-notify;
lazy = true;
config = ''
function(_, opts)
local notify = require("notify")
notify.setup(opts)
vim.notify = notify -- Make vim use notify by default
end
'';
opts = {
render = "default";
max_width = 45; # In columns
top_down = false;
};
};
_nui = { _nui = {
name = "nui"; # For noice name = "nui"; # For noice
pkg = pkgs.vimPlugins.nui-nvim; pkg = pkgs.vimPlugins.nui-nvim;
@ -1382,7 +1104,6 @@ in {
pkg = pkgs.vimPlugins.noice-nvim; pkg = pkgs.vimPlugins.noice-nvim;
lazy = false; lazy = false;
dependencies = [ dependencies = [
_notify
_nui _nui
]; ];
config = mkDefaultConfig name; config = mkDefaultConfig name;
@ -1467,13 +1188,25 @@ in {
}; };
}; };
oil = rec { # TODO: Don't autosave, but if a session exists, update it (using should_save)
name = "oil"; # TODO: No idea which opts below really exist...
pkg = pkgs.vimPlugins.oil-nvim; persisted = rec {
name = "persisted";
pkg = pkgs.vimPlugins.persisted-nvim;
lazy = false; lazy = false;
config = mkDefaultConfig name; config = mkDefaultConfig name;
opts = { opts = {
default_file_explorer = true; silent = false;
use_git_branch = false;
autostart = false;
autosave = false;
autoload = false;
follow_cwd = true;
ignored_dirs = [
"/"
"~/"
"~/Projects/"
];
}; };
}; };
@ -1565,6 +1298,117 @@ in {
lazy = false; lazy = false;
}; };
snacks = rec {
name = "snacks";
pkg = pkgs.vimPlugins.snacks-nvim;
dependencies = [
web-devicons
];
lazy = false;
priority = 1000;
config = mkDefaultConfig name;
opts = {
# Disables slow stuff in big files
bigfile = {
enabled = true;
notify = true;
size = 1.5 * 1024 * 1024; # 1.5MB
line_length = 1000;
};
dashboard = {
enabled = true;
preset = {
keys = [
{
icon = " ";
key = "f";
desc = "Find File";
action = "<cmd>lua Snacks.dashboard.pick('files')<cr>";
}
{
icon = " ";
key = "n";
desc = "New File";
action = "<cmd>ene | startinsert<cr>";
}
{
icon = " ";
key = "g";
desc = "Find Text";
action = "<cmd>lua Snacks.dashboard.pick('live_grep')<cr>";
}
{
icon = " ";
key = "r";
desc = "Recent Files";
action = "<cmd>lua Snacks.dashboard.pick('oldfiles')<cr>";
}
{
icon = " ";
key = "s";
desc = "Restore Session";
action = "<cmd>lua require('persisted').select()<cr>";
}
{
icon = "󰒲 ";
key = "L";
desc = "Lazy";
action = "<cmd>Lazy<cr>";
}
{
icon = " ";
key = "q";
desc = "Quit";
action = "<cmd>quitall<cr>";
}
];
sections = [
{section = "header";}
{
section = "keys";
gap = 1;
padding = 1;
}
{section = "startup";}
];
};
};
explorer = {
enabled = true;
replace_netrw = true;
};
notifier = {
enabled = true;
};
picker = let
defaultLayout = ''
--- Use the default layout or vertical if the window is too narrow
function()
return vim.o.columns >= 120 and "default" or "vertical"
end
'';
in {
enabled = true;
layout = {
cycle = true;
preset.__raw = defaultLayout;
};
sources = {
lines = {
layout.__raw = defaultLayout;
};
};
};
};
};
tabby = rec { tabby = rec {
name = "tabby"; name = "tabby";
pkg = pkgs.vimPlugins.tabby-nvim; pkg = pkgs.vimPlugins.tabby-nvim;
@ -1617,98 +1461,11 @@ in {
}; };
_plenary = { _plenary = {
name = "plenary"; # For telescope name = "plenary";
pkg = pkgs.vimPlugins.plenary-nvim; pkg = pkgs.vimPlugins.plenary-nvim;
lazy = true; lazy = true;
}; };
_telescope-fzf-native = {
name = "telescope-fzf-native";
pkg = pkgs.vimPlugins.telescope-fzf-native-nvim;
lazy = true;
};
# TODO: Build broken
# _telescope-tabs = {
# name = "telescope-tabs";
# pkg = pkgs.vimUtils.buildVimPlugin {
# name = "telescope-tabs";
# src = pkgs.fetchFromGitHub {
# owner = "LukasPietzschmann";
# repo = "telescope-tabs";
# rev = "0a678eefcb71ebe5cb0876aa71dd2e2583d27fd3";
# sha256 = "sha256-IvxZVHPtApnzUXIQzklT2C2kAxgtAkBUq3GNxwgPdPY=";
# };
# };
# lazy = true;
# };
_telescope-undo = {
name = "telescope-undo";
pkg = pkgs.vimPlugins.telescope-undo-nvim;
lazy = true;
};
_telescope-ui-select = {
name = "telescope-ui-select";
pkg = pkgs.vimPlugins.telescope-ui-select-nvim;
lazy = true;
};
telescope = {
name = "telescope";
pkg = pkgs.vimPlugins.telescope-nvim;
lazy = true;
cmd = ["Telescope"];
dependencies = [
_plenary
_telescope-fzf-native
# _telescope-tabs
_telescope-undo
_telescope-ui-select
];
config = let
extensions = mylib.generators.toLuaObject [
"undo"
"ui-select"
"fzf"
# "telescope-tabs"
];
in ''
function(_, opts)
local telescope = require("telescope")
telescope.setup(opts)
for i, extension in ipairs(${extensions}) do
telescope.load_extension(extension)
end
end
'';
opts = {
defaults = {
wrap_results = false; # Do wrapping in the preview instead, see autoCmd
preview = {
treesitter = true;
};
mappings = {
i = {
# TODO: This mappings throws an error.
# Doesn't matter if defined as function or like "<C-h"> = "which_key";.
"<C-h>" = {__raw = ''function(...) return require("telescope.actions").which_key(...) end'';};
"<Esc>" = {__raw = ''function(...) return require("telescope.actions").close(...) end'';};
};
};
};
pickers = {
buffers = {
# See :h telescope.builtin.buffers() for opts
ignore_current_buffer = true;
sort_mru = true;
};
};
};
};
todo-comments = rec { todo-comments = rec {
name = "todo-comments"; name = "todo-comments";
pkg = pkgs.vimPlugins.todo-comments-nvim; pkg = pkgs.vimPlugins.todo-comments-nvim;
@ -1808,25 +1565,6 @@ in {
height = 45; height = 45;
winblend = 0; winblend = 0;
}; };
# Hack to make toggleterm respect neotree:
# Open + close neotree once toggleterm is opened.
# Toggleterm will "glitch" when opening, also neotree will scroll downwards.
# on_open.__raw = ''
# function(...)
# local name = vim.fn.bufname("neo-tree")
# local winnr = vim.fn.bufwinnr(name)
#
# if winnr ~= -1 then
# vim.defer_fn(function()
# local cmd = string.format("Neotree toggle")
# vim.cmd(cmd)
# vim.cmd(cmd)
# vim.cmd("wincmd p")
# end, 100)
# end
# end
# '';
}; };
}; };
@ -2086,10 +1824,8 @@ in {
in [ in [
autopairs # Automatic closing brackets/parens # NOTE: For now replaced by blink autopairs # Automatic closing brackets/parens # NOTE: For now replaced by blink
bbye # Delete buffer without closing the window or split
better-escape # Escape to normal mode using "jk" better-escape # Escape to normal mode using "jk"
catppuccin # Colortheme (also add this here to access palettes) catppuccin # Colortheme (also add this here to access palettes)
cellular-automaton # Procrastinate better by watching animations
clangd-extensions # Improved clang LSP support clangd-extensions # Improved clang LSP support
blink-cmp # Fast as fuck auto completion blink-cmp # Fast as fuck auto completion
@ -2101,15 +1837,12 @@ in {
# dadbod # Database interface # TODO: # dadbod # Database interface # TODO:
# dadbod-ui # Dadbod UI # TODO: # dadbod-ui # Dadbod UI # TODO:
dashboard # Dashboard when starting nvim
# dap # Debug adapter protocol # TODO: # dap # Debug adapter protocol # TODO:
# dap-ui # Debugger UI # TODO: # dap-ui # Debugger UI # TODO:
diffview # Git diff # TODO: Check the keybindings diffview # Git diff # TODO: Check the keybindings
direnv # Automatically load local environments direnv # Automatically load local environments
flash # Highlight f/F search results flash # Highlight f/F search results
gitmessenger # Show last git commit for the current line
gitsigns # Show git line additions/deletions/changes in the gutter gitsigns # Show git line additions/deletions/changes in the gutter
haskell-tools # Haskell integration haskell-tools # Haskell integration
illuminate # Highlight usages of word under cursor illuminate # Highlight usages of word under cursor
@ -2118,8 +1851,6 @@ in {
jdtls # Eclipse JDT language server integration for Java jdtls # Eclipse JDT language server integration for Java
lastplace # Reopen a file at the last editing position lastplace # Reopen a file at the last editing position
lazygit # Git frontend
# leetcode # Solve leetcode problems
lint # Lint documents on save lint # Lint documents on save
lspconfig # Language server configurations for different languages lspconfig # Language server configurations for different languages
lualine # Status line lualine # Status line
@ -2129,14 +1860,13 @@ in {
markview # Markdown support # TODO: Disable in help buffers (?) + confiure a bit more markview # Markdown support # TODO: Disable in help buffers (?) + confiure a bit more
navbuddy # Structural file view navbuddy # Structural file view
neo-tree # File tree sidebar
neogen # Generate doc comments neogen # Generate doc comments
noice # Modern UI overhaul, e.g. floating cmdline noice # Modern UI overhaul, e.g. floating cmdline
obsidian # Integration with Obsidian.md obsidian # Integration with Obsidian.md
oil # File manager
# overseer # Run tasks from within neovim (e.g. cargo) # TODO: # overseer # Run tasks from within neovim (e.g. cargo) # TODO:
persisted # Session management
presence # Discord rich presence presence # Discord rich presence
quickfix-reflector # Make the quickfix list editable and saveable to apply changes quickfix-reflector # Make the quickfix list editable and saveable to apply changes
rainbow-delimiters # Bracket/Paren colorization rainbow-delimiters # Bracket/Paren colorization
@ -2145,8 +1875,8 @@ in {
sleuth # Heuristically set indent depth # TODO: See intellitab sleuth # Heuristically set indent depth # TODO: See intellitab
snacks # Lots of QoL
tabby # Nicer tabline (only showing tabpages) tabby # Nicer tabline (only showing tabpages)
telescope # Option picker frontend
todo-comments # Highlight TODOs todo-comments # Highlight TODOs
toggleterm # Integrated terminal toggleterm # Integrated terminal
treesitter # AST based syntax highlighting + indentation treesitter # AST based syntax highlighting + indentation

View File

@ -1,4 +1,4 @@
{...}: let _: let
# TODO: Doesn't work reliably. I think they are rebound by plugins after? Try setting in extraConfigLuaPost... # TODO: Doesn't work reliably. I think they are rebound by plugins after? Try setting in extraConfigLuaPost...
disabled-mappings = let disabled-mappings = let
mkDisabledMapping = mapping: { mkDisabledMapping = mapping: {
@ -268,14 +268,8 @@
{ {
mode = "n"; mode = "n";
key = "/"; key = "/";
action = "<cmd>Telescope current_buffer_fuzzy_find<cr>"; action = "<cmd>lua Snacks.picker.lines()<cr>";
options.desc = "Grep Buffer"; options.desc = "Find in Buffer";
}
{
mode = "v";
key = "?";
action = "<cmd>Telescope grep_string<cr>";
options.desc = "Find Selection";
} }
{ {
mode = "n"; mode = "n";
@ -300,56 +294,62 @@
} }
{ {
mode = "n"; mode = "n";
key = "<leader>n"; key = "<leader>e";
action = "<cmd>Neotree action=show toggle=true<cr><C-w>="; action = "<cmd>lua Snacks.explorer.open({ enter = false, on_show = function() vim.cmd('wincmd =') end })<cr>";
options.desc = "Toggle NeoTree"; options.desc = "Toggle Explorer";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>o"; key = "<leader>n";
action = "<cmd>Oil<cr>"; action = "<cmd>Navbuddy<cr>";
options.desc = "Toggle Oil"; options.desc = "Toggle NavBuddy";
}
{
mode = "n";
key = "<leader>p";
action = "<cmd>lua Snacks.picker.pickers()<cr>";
options.desc = "Show Pickers";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>N"; key = "<leader>N";
action = "<cmd>Telescope notify<cr>"; action = "<cmd>lua Snacks.picker.notifications()<cr>";
options.desc = "Telescope Notify"; options.desc = "Notifications Picker";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>r"; key = "<leader>r";
action = "<cmd>Telescope resume<cr>"; action = "<cmd>lua Snacks.picker.resume()<cr>";
options.desc = "Last Telescope"; options.desc = "Last Picker";
}
{
mode = "n";
key = "<leader>;";
action = "<cmd>lua Snacks.picker.command_history()<cr>";
options.desc = "Command History";
} }
# {
# mode = "n";
# key = "<leader>;";
# action = "<cmd>Telescope command_history<cr>";
# options.desc = "Last Commands";
# }
{ {
mode = "n"; mode = "n";
key = "<leader>:"; key = "<leader>:";
action = "<cmd>Telescope commands<cr>"; action = "<cmd>lua Snacks.picker.commands()<cr>";
options.desc = "Telescope Command"; options.desc = "Commands Picker";
}
{
mode = "n";
key = "<leader>M";
action = "<cmd>Telescope marks<cr>";
options.desc = "Telescope Marks";
} }
# { # {
# mode = "n"; # mode = "n";
# key = "<leader>M";
# action = "<cmd>lua Snacks.picker.marks()<cr>";
# options.desc = "Marks Picker";
# }
# {
# mode = "n";
# key = "<leader>J"; # key = "<leader>J";
# action = "<cmd>Telescope jumplist<cr>"; # action = "<cmd>lua Snacks.picker.jumps()<cr>";
# options.desc = "Telescope Jumps"; # options.desc = "Jumps Picker";
# } # }
{ {
mode = "n"; mode = "n";
key = "<leader>d"; key = "<leader>d";
action = "<cmd>TodoTelescope<cr>"; action = "<cmd>lua Snacks.picker.todo_comments()<cr>";
options.desc = "List TODOs"; options.desc = "List TODOs";
} }
{ {
@ -361,13 +361,13 @@
{ {
mode = "n"; mode = "n";
key = "<leader>/"; key = "<leader>/";
action = "<cmd>Telescope live_grep<cr>"; action = "<cmd>lua Snacks.picker.grep()<cr>";
options.desc = "Find in Project"; options.desc = "Find in Project";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>Q"; key = "<leader>Q";
action = "<cmd>Telescope quickfixhistory<cr>"; action = "<cmd>lua Snacks.picker.qflist()<cr>";
options.desc = "Quickfix History"; options.desc = "Quickfix History";
} }
# { # {
@ -393,13 +393,13 @@
{ {
mode = "n"; mode = "n";
key = "<leader>ff"; key = "<leader>ff";
action = "<cmd>Telescope find_files<cr>"; action = "<cmd>lua Snacks.picker.files()<cr>";
options.desc = "Find File"; options.desc = "Find File";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>fl"; key = "<leader>fl";
action = "<cmd>Telescope oldfiles<cr>"; action = "<cmd>lua Snacks.picker.recent()<cr>";
options.desc = "Last Files"; options.desc = "Last Files";
} }
{ {
@ -417,8 +417,8 @@
{ {
mode = "n"; mode = "n";
key = "<leader>fu"; key = "<leader>fu";
action = "<cmd>Telescope undo<cr>"; action = "<cmd>lua Snacks.picker.und()<cr>";
options.desc = "Telescope Undo"; options.desc = "Undo Picker";
} }
{ {
mode = "n"; mode = "n";
@ -445,29 +445,29 @@
key = "<leader>h"; key = "<leader>h";
action = "+help"; action = "+help";
} }
{ # {
mode = "n"; # mode = "n";
key = "<leader>hv"; # key = "<leader>hv";
action = "<cmd>Telescope vim_options<cr>"; # action = "<cmd>Telescope vim_options<cr>";
options.desc = "Telescope Vimopts"; # options.desc = "Telescope Vimopts";
} # }
{ {
mode = "n"; mode = "n";
key = "<leader>hk"; key = "<leader>hk";
action = "<cmd>Telescope keymaps<cr>"; action = "<cmd>lua Snacks.picker.keymaps()<cr>";
options.desc = "Telescope Keys"; options.desc = "Keymaps Picker";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>hm"; key = "<leader>hm";
action = "<cmd>Telescope man_pages<cr>"; action = "<cmd>lua Snacks.picker.man()<cr>";
options.desc = "Telescope Manpages"; options.desc = "Manpages Picker";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>hh"; key = "<leader>hh";
action = "<cmd>Telescope help_tags<cr>"; action = "<cmd>lua Snacks.picker.help()<cr>";
options.desc = "Telescope Helptags"; options.desc = "Helptags Picker";
} }
]; ];
@ -500,7 +500,7 @@
{ {
mode = "n"; mode = "n";
key = "<leader>sl"; key = "<leader>sl";
action = "<cmd>Telescope persisted<cr>"; action = "<cmd>lua require('persisted').select()<cr>";
options.desc = "Restore Session"; options.desc = "Restore Session";
} }
{ {
@ -526,14 +526,14 @@
{ {
mode = "n"; mode = "n";
key = "<leader>bb"; key = "<leader>bb";
action = "<cmd>Telescope buffers<cr>"; action = "<cmd>lua Snacks.picker.buffers()<cr>";
options.desc = "List Buffers"; options.desc = "Buffers Picker";
} }
{ {
mode = "n"; mode = "n";
key = "<leader><Space>"; key = "<leader><Space>";
action = "<cmd>Telescope buffers<cr>"; action = "<cmd>lua Snacks.picker.buffers()<cr>";
options.desc = "List Buffers"; options.desc = "Buffers Picker";
} }
{ {
mode = "n"; mode = "n";
@ -556,15 +556,9 @@
{ {
mode = "n"; mode = "n";
key = "<leader>bd"; key = "<leader>bd";
action = "<cmd>Bdelete<cr>"; action = "<cmd>lua Snacks.bufdelete()<cr>";
options.desc = "Close Buffer"; options.desc = "Close Buffer";
} }
{
mode = "n";
key = "<leader>bD";
action = "<cmd>Bdelete!<cr>";
options.desc = "Force Close Buffer";
}
]; ];
leader-tabs = [ leader-tabs = [
@ -573,18 +567,18 @@
key = "<leader>t"; key = "<leader>t";
action = "+tab"; action = "+tab";
} }
{ # {
mode = "n"; # mode = "n";
key = "<leader>tt"; # key = "<leader>tt";
action = "<cmd>Telescope telescope-tabs list_tabs<cr>"; # action = "<cmd>Telescope telescope-tabs list_tabs<cr>";
options.desc = "List Tabpages"; # options.desc = "List Tabpages";
} # }
{ # {
mode = "n"; # mode = "n";
key = "<leader><C-Space>"; # key = "<leader><C-Space>";
action = "<cmd>Telescope telescope-tabs list_tabs<cr>"; # action = "<cmd>Telescope telescope-tabs list_tabs<cr>";
options.desc = "List Tabpages"; # options.desc = "List Tabpages";
} # }
{ {
mode = "n"; mode = "n";
key = "<leader>tn"; key = "<leader>tn";
@ -690,38 +684,38 @@
{ {
mode = "n"; mode = "n";
key = "<leader>gg"; key = "<leader>gg";
action = "<cmd>LazyGit<cr>"; action = "<cmd>lua Snacks.lazygit.open()<cr>";
options.desc = "LazyGit"; options.desc = "LazyGit";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>gm"; key = "<leader>gm";
action = "<cmd>GitMessenger<cr>"; action = "<cmd>lua Snacks.git.blame_line()<cr>";
options.desc = "GitMessenger"; options.desc = "Git Blame";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>gs"; key = "<leader>gs";
action = "<cmd>Telescope git_status<cr>"; action = "<cmd>lua Snacks.picker.git_status()<cr>";
options.desc = "Git Status"; options.desc = "Git Status";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>gl"; key = "<leader>gl";
action = "<cmd>Telescope git_commits<cr>"; action = "<cmd>lua Snacks.picker.git_log()<cr>";
options.desc = "Git Log"; options.desc = "Git Log";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>gb"; key = "<leader>gb";
action = "<cmd>Telescope git_branches<cr>"; action = "<cmd>lua Snacks.picker.git_branches()<cr>";
options.desc = "Git Branches"; options.desc = "Git Branches";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>gf"; key = "<leader>gf";
action = "<cmd>Telescope git_bcommits<cr>"; action = "<cmd>lua Snacks.picker.git_log_file()<cr>";
options.desc = "Git File History"; options.desc = "Git File History";
} }
{ {
@ -754,7 +748,7 @@
{ {
mode = "n"; mode = "n";
key = "<leader>cD"; key = "<leader>cD";
action = "<cmd>Telescope diagnostics<cr>"; action = "<cmd>lua Snacks.picker.diagnostics()<cr>";
options.desc = "List Diagnostics"; options.desc = "List Diagnostics";
} }
@ -770,18 +764,18 @@
action = "<cmd>lua vim.lsp.buf.code_action()<cr>"; action = "<cmd>lua vim.lsp.buf.code_action()<cr>";
options.desc = "Code Actions"; options.desc = "Code Actions";
} }
{ # {
mode = "n"; # mode = "n";
key = "<leader>cI"; # key = "<leader>cI";
action = "<cmd>Telescope lsp_incoming_calls<cr>"; # action = "<cmd>Telescope lsp_incoming_calls<cr>";
options.desc = "LSP Incoming Calls"; # options.desc = "LSP Incoming Calls";
} # }
{ # {
mode = "n"; # mode = "n";
key = "<leader>cO"; # key = "<leader>cO";
action = "<cmd>Telescope lsp_outgoing_calls<cr>"; # action = "<cmd>Telescope lsp_outgoing_calls<cr>";
options.desc = "LSP Outgoing Calls"; # options.desc = "LSP Outgoing Calls";
} # }
{ {
mode = "n"; mode = "n";
key = "<leader>cC"; key = "<leader>cC";
@ -795,12 +789,6 @@
key = "<leader>ct"; key = "<leader>ct";
action = "+toggle"; action = "+toggle";
} }
{
mode = "n";
key = "<leader>ctn";
action = "<cmd>Navbuddy<cr>";
options.desc = "NavBuddy";
}
{ {
mode = "n"; mode = "n";
key = "<leader>ctd"; key = "<leader>ctd";
@ -847,26 +835,26 @@
{ {
mode = "n"; mode = "n";
key = "<leader>cgr"; key = "<leader>cgr";
action = "<cmd>Telescope lsp_references<cr>"; action = "<cmd>lua Snacks.picker.lsp_references()<cr>";
options.desc = "LSP References"; options.desc = "LSP References";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>cgd"; key = "<leader>cgd";
action = "<cmd>Telescope lsp_definitions<cr>"; action = "<cmd>lua Snacks.picker.lsp_definitions()<cr>";
options.desc = "LSP Definition"; options.desc = "LSP Definitions";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>cgi"; key = "<leader>cgi";
action = "<cmd>Telescope lsp_implementations<cr>"; action = "<cmd>lua Snacks.picker.lsp_implementations()<cr>";
options.desc = "LSP Implementation"; options.desc = "LSP Implementations";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>cgt"; key = "<leader>cgt";
action = "<cmd>Telescope lsp_type_definitions<cr>"; action = "<cmd>lua Snacks.picker.lsp_type_definitions()<cr>";
options.desc = "LSP Type Definition"; options.desc = "LSP Type Definitions";
} }
{ {
mode = "n"; mode = "n";