1

Modules/Neovim: Replace telescope with Snacks.picker

This commit is contained in:
2025-06-19 21:00:24 +02:00
parent 2cdefc6809
commit 862363b5c6
2 changed files with 137 additions and 230 deletions

View File

@ -80,8 +80,8 @@ in {
};
programs.nixvim = {
enable = true;
defaultEditor = true;
enable = true;
enableMan = false; # Nixvim man pages
luaLoader.enable = true; # NOTE: Experimental
viAlias = neovim.alias;
@ -228,25 +228,6 @@ in {
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;};
@ -541,34 +522,6 @@ 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 = {
name = "direnv";
pkg = pkgs.vimPlugins.direnv-vim;
@ -627,7 +580,6 @@ in {
filetypesDenylist = [
"DressingSelect"
"Outline"
"TelescopePrompt"
"alpha"
"harpoon"
"toggleterm"
@ -1004,7 +956,7 @@ in {
}
'';
in {
extensions = ["fzf" "lazy" "neo-tree" "oil" "quickfix" "toggleterm" "trouble"];
extensions = ["fzf" "lazy" "quickfix" "toggleterm" "trouble"];
options = {
# theme = "catppuccin";
@ -1256,6 +1208,28 @@ in {
};
};
# TODO: Don't autosave, but if a session exists, update it (using should_save)
# TODO: No idea which opts below really exist...
persisted = rec {
name = "persisted";
pkg = pkgs.vimPlugins.persisted-nvim;
lazy = false;
config = mkDefaultConfig name;
opts = {
silent = false;
use_git_branch = false;
autostart = false;
autosave = false;
autoload = false;
follow_cwd = true;
ignored_dirs = [
"/"
"~/"
"~/Projects/"
];
};
};
presence = rec {
name = "presence";
pkg = pkgs.vimPlugins.presence-nvim;
@ -1349,7 +1323,6 @@ in {
pkg = pkgs.vimPlugins.snacks-nvim;
dependencies = [
web-devicons
_persisted
];
lazy = false;
priority = 1000;
@ -1396,7 +1369,7 @@ in {
icon = " ";
key = "s";
desc = "Restore Session";
action = "<cmd>Telescope persisted<cr>";
action = "<cmd>lua require('persisted').select()<cr>";
}
{
icon = "󰒲 ";
@ -1428,6 +1401,27 @@ in {
enabled = true;
replace_netrw = 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;
};
};
};
};
};
@ -1483,98 +1477,11 @@ in {
};
_plenary = {
name = "plenary"; # For telescope
name = "plenary";
pkg = pkgs.vimPlugins.plenary-nvim;
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 {
name = "todo-comments";
pkg = pkgs.vimPlugins.todo-comments-nvim;
@ -1975,6 +1882,7 @@ in {
# overseer # Run tasks from within neovim (e.g. cargo) # TODO:
persisted # Session management
presence # Discord rich presence
quickfix-reflector # Make the quickfix list editable and saveable to apply changes
rainbow-delimiters # Bracket/Paren colorization
@ -1985,7 +1893,6 @@ in {
snacks # Lots of QoL
tabby # Nicer tabline (only showing tabpages)
telescope # Option picker frontend
todo-comments # Highlight TODOs
toggleterm # Integrated terminal
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...
disabled-mappings = let
mkDisabledMapping = mapping: {
@ -268,14 +268,8 @@
{
mode = "n";
key = "/";
action = "<cmd>Telescope current_buffer_fuzzy_find<cr>";
options.desc = "Grep Buffer";
}
{
mode = "v";
key = "?";
action = "<cmd>Telescope grep_string<cr>";
options.desc = "Find Selection";
action = "<cmd>lua Snacks.picker.lines()<cr>";
options.desc = "Find in Buffer";
}
{
mode = "n";
@ -310,46 +304,52 @@
action = "<cmd>Navbuddy<cr>";
options.desc = "Toggle NavBuddy";
}
{
mode = "n";
key = "<leader>p";
action = "<cmd>lua Snacks.picker.pickers()<cr>";
options.desc = "Show Pickers";
}
{
mode = "n";
key = "<leader>N";
action = "<cmd>Telescope notify<cr>";
options.desc = "Telescope Notify";
action = "<cmd>lua Snacks.picker.notifications()<cr>";
options.desc = "Notifications Picker";
}
{
mode = "n";
key = "<leader>r";
action = "<cmd>Telescope resume<cr>";
options.desc = "Last Telescope";
action = "<cmd>lua Snacks.picker.resume()<cr>";
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";
key = "<leader>:";
action = "<cmd>Telescope commands<cr>";
options.desc = "Telescope Command";
}
{
mode = "n";
key = "<leader>M";
action = "<cmd>Telescope marks<cr>";
options.desc = "Telescope Marks";
action = "<cmd>lua Snacks.picker.commands()<cr>";
options.desc = "Commands Picker";
}
# {
# mode = "n";
# key = "<leader>M";
# action = "<cmd>lua Snacks.picker.marks()<cr>";
# options.desc = "Marks Picker";
# }
# {
# mode = "n";
# key = "<leader>J";
# action = "<cmd>Telescope jumplist<cr>";
# options.desc = "Telescope Jumps";
# action = "<cmd>lua Snacks.picker.jumps()<cr>";
# options.desc = "Jumps Picker";
# }
{
mode = "n";
key = "<leader>d";
action = "<cmd>TodoTelescope<cr>";
action = "<cmd>lua Snacks.picker.todo_comments()<cr>";
options.desc = "List TODOs";
}
{
@ -361,13 +361,13 @@
{
mode = "n";
key = "<leader>/";
action = "<cmd>Telescope live_grep<cr>";
action = "<cmd>lua Snacks.picker.grep()<cr>";
options.desc = "Find in Project";
}
{
mode = "n";
key = "<leader>Q";
action = "<cmd>Telescope quickfixhistory<cr>";
action = "<cmd>lua Snacks.picker.qflist()<cr>";
options.desc = "Quickfix History";
}
# {
@ -393,13 +393,13 @@
{
mode = "n";
key = "<leader>ff";
action = "<cmd>Telescope find_files<cr>";
action = "<cmd>lua Snacks.picker.files()<cr>";
options.desc = "Find File";
}
{
mode = "n";
key = "<leader>fl";
action = "<cmd>Telescope oldfiles<cr>";
action = "<cmd>lua Snacks.picker.recent()<cr>";
options.desc = "Last Files";
}
{
@ -417,8 +417,8 @@
{
mode = "n";
key = "<leader>fu";
action = "<cmd>Telescope undo<cr>";
options.desc = "Telescope Undo";
action = "<cmd>lua Snacks.picker.und()<cr>";
options.desc = "Undo Picker";
}
{
mode = "n";
@ -445,29 +445,29 @@
key = "<leader>h";
action = "+help";
}
{
mode = "n";
key = "<leader>hv";
action = "<cmd>Telescope vim_options<cr>";
options.desc = "Telescope Vimopts";
}
# {
# mode = "n";
# key = "<leader>hv";
# action = "<cmd>Telescope vim_options<cr>";
# options.desc = "Telescope Vimopts";
# }
{
mode = "n";
key = "<leader>hk";
action = "<cmd>Telescope keymaps<cr>";
options.desc = "Telescope Keys";
action = "<cmd>lua Snacks.picker.keymaps()<cr>";
options.desc = "Keymaps Picker";
}
{
mode = "n";
key = "<leader>hm";
action = "<cmd>Telescope man_pages<cr>";
options.desc = "Telescope Manpages";
action = "<cmd>lua Snacks.picker.man()<cr>";
options.desc = "Manpages Picker";
}
{
mode = "n";
key = "<leader>hh";
action = "<cmd>Telescope help_tags<cr>";
options.desc = "Telescope Helptags";
action = "<cmd>lua Snacks.picker.help()<cr>";
options.desc = "Helptags Picker";
}
];
@ -500,7 +500,7 @@
{
mode = "n";
key = "<leader>sl";
action = "<cmd>Telescope persisted<cr>";
action = "<cmd>lua require('persisted').select()<cr>";
options.desc = "Restore Session";
}
{
@ -526,14 +526,14 @@
{
mode = "n";
key = "<leader>bb";
action = "<cmd>Telescope buffers<cr>";
options.desc = "List Buffers";
action = "<cmd>lua Snacks.picker.buffers()<cr>";
options.desc = "Buffers Picker";
}
{
mode = "n";
key = "<leader><Space>";
action = "<cmd>Telescope buffers<cr>";
options.desc = "List Buffers";
action = "<cmd>lua Snacks.picker.buffers()<cr>";
options.desc = "Buffers Picker";
}
{
mode = "n";
@ -567,18 +567,18 @@
key = "<leader>t";
action = "+tab";
}
{
mode = "n";
key = "<leader>tt";
action = "<cmd>Telescope telescope-tabs list_tabs<cr>";
options.desc = "List Tabpages";
}
{
mode = "n";
key = "<leader><C-Space>";
action = "<cmd>Telescope telescope-tabs list_tabs<cr>";
options.desc = "List Tabpages";
}
# {
# mode = "n";
# key = "<leader>tt";
# action = "<cmd>Telescope telescope-tabs list_tabs<cr>";
# options.desc = "List Tabpages";
# }
# {
# mode = "n";
# key = "<leader><C-Space>";
# action = "<cmd>Telescope telescope-tabs list_tabs<cr>";
# options.desc = "List Tabpages";
# }
{
mode = "n";
key = "<leader>tn";
@ -697,25 +697,25 @@
{
mode = "n";
key = "<leader>gs";
action = "<cmd>Telescope git_status<cr>";
action = "<cmd>lua Snacks.picker.git_status()<cr>";
options.desc = "Git Status";
}
{
mode = "n";
key = "<leader>gl";
action = "<cmd>Telescope git_commits<cr>";
action = "<cmd>lua Snacks.picker.git_log()<cr>";
options.desc = "Git Log";
}
{
mode = "n";
key = "<leader>gb";
action = "<cmd>Telescope git_branches<cr>";
action = "<cmd>lua Snacks.picker.git_branches()<cr>";
options.desc = "Git Branches";
}
{
mode = "n";
key = "<leader>gf";
action = "<cmd>Telescope git_bcommits<cr>";
action = "<cmd>lua Snacks.picker.git_log_file()<cr>";
options.desc = "Git File History";
}
{
@ -748,7 +748,7 @@
{
mode = "n";
key = "<leader>cD";
action = "<cmd>Telescope diagnostics<cr>";
action = "<cmd>lua Snacks.picker.diagnostics()<cr>";
options.desc = "List Diagnostics";
}
@ -764,18 +764,18 @@
action = "<cmd>lua vim.lsp.buf.code_action()<cr>";
options.desc = "Code Actions";
}
{
mode = "n";
key = "<leader>cI";
action = "<cmd>Telescope lsp_incoming_calls<cr>";
options.desc = "LSP Incoming Calls";
}
{
mode = "n";
key = "<leader>cO";
action = "<cmd>Telescope lsp_outgoing_calls<cr>";
options.desc = "LSP Outgoing Calls";
}
# {
# mode = "n";
# key = "<leader>cI";
# action = "<cmd>Telescope lsp_incoming_calls<cr>";
# options.desc = "LSP Incoming Calls";
# }
# {
# mode = "n";
# key = "<leader>cO";
# action = "<cmd>Telescope lsp_outgoing_calls<cr>";
# options.desc = "LSP Outgoing Calls";
# }
{
mode = "n";
key = "<leader>cC";
@ -835,26 +835,26 @@
{
mode = "n";
key = "<leader>cgr";
action = "<cmd>Telescope lsp_references<cr>";
action = "<cmd>lua Snacks.picker.lsp_references()<cr>";
options.desc = "LSP References";
}
{
mode = "n";
key = "<leader>cgd";
action = "<cmd>Telescope lsp_definitions<cr>";
options.desc = "LSP Definition";
action = "<cmd>lua Snacks.picker.lsp_definitions()<cr>";
options.desc = "LSP Definitions";
}
{
mode = "n";
key = "<leader>cgi";
action = "<cmd>Telescope lsp_implementations<cr>";
options.desc = "LSP Implementation";
action = "<cmd>lua Snacks.picker.lsp_implementations()<cr>";
options.desc = "LSP Implementations";
}
{
mode = "n";
key = "<leader>cgt";
action = "<cmd>Telescope lsp_type_definitions<cr>";
options.desc = "LSP Type Definition";
action = "<cmd>lua Snacks.picker.lsp_type_definitions()<cr>";
options.desc = "LSP Type Definitions";
}
{
mode = "n";