{pkgs, ...}: { programs.nixvim = { extraPackages = with pkgs; [ripgrep]; keymaps = [ { mode = "n"; key = "fc"; action.__raw = # lua '' function() require("telescope.builtin").find_files { prompt_title = "Config Files", cwd = vim.fn.stdpath "config", follow = true, } end ''; options = { desc = "Find config files"; silent = true; }; } { mode = "n"; key = "fF"; action.__raw = # lua '' function() require("telescope.builtin").find_files({ hidden = true, no_ignore = true}) end ''; options = { desc = "Find all files"; silent = true; }; } { mode = "n"; key = "fT"; action.__raw = # lua '' function() require("telescope.builtin").colorscheme({ enable_preview = true }) end ''; options = { desc = "Find theme"; silent = true; }; } { mode = "n"; key = "fW"; action.__raw = # lua '' function() require("telescope.builtin").live_grep { additional_args = function(args) return vim.list_extend(args, { "--hidden", "--no-ignore" }) end, } end ''; options = { desc = "Find words in all files"; silent = true; }; } { mode = "n"; key = "f?"; action.__raw = # lua '' function() require("telescope.builtin").live_grep { grep_open_files=true } end ''; options = { desc = "Find words in all open buffers"; silent = true; }; } { mode = "n"; key = "fe"; action = ":Telescope file_browser"; options = { desc = "File Explorer"; silent = true; }; } # { # mode = "n"; # key = "fO"; # action = ":Telescope frecency"; # options = { # desc = "Find Frequent Files"; # silent = true; # }; # } ]; plugins.telescope = { enable = true; extensions = { file-browser = { enable = true; settings = { hidden = true; }; }; # FIX: annoying frecency validation on startup about removed files # frecency = { # enable = true; # }; ui-select = { enable = true; }; }; keymaps = { "f'" = { action = "marks"; options.desc = "View marks"; }; "f/" = { action = "current_buffer_fuzzy_find"; options.desc = "Fuzzy find in current buffer"; }; "f" = { action = "resume"; options.desc = "Resume action"; }; "fa" = { action = "autocommands"; options.desc = "View autocommands"; }; "fC" = { action = "commands"; options.desc = "View commands"; }; "fb" = { action = "buffers"; options.desc = "View buffers"; }; "fc" = { action = "grep_string"; options.desc = "Grep string"; }; "fd" = { action = "diagnostics"; options.desc = "View diagnostics"; }; "ff" = { action = "find_files"; options.desc = "Find files"; }; "fh" = { action = "help_tags"; options.desc = "View help tags"; }; "fk" = { action = "keymaps"; options.desc = "View keymaps"; }; "fm" = { action = "man_pages"; options.desc = "View man pages"; }; "fo" = { action = "oldfiles"; options.desc = "View old files"; }; "fr" = { action = "registers"; options.desc = "View registers"; }; "fs" = { action = "lsp_document_symbols"; options.desc = "Search symbols"; }; "fq" = { action = "quickfix"; options.desc = "Search quickfix"; }; "fw" = { action = "live_grep"; options.desc = "Live grep"; }; "gC" = { action = "git_bcommits"; options.desc = "View git bcommits"; }; "gB" = { action = "git_branches"; options.desc = "View git branches"; }; "gc" = { action = "git_commits"; options.desc = "View git commits"; }; "gs" = { action = "git_status"; options.desc = "View git status"; }; "gS" = { action = "git_stash"; options.desc = "View git stashes"; }; }; settings = { defaults = { file_ignore_patterns = [ "^.git/" "^.mypy_cache/" "^__pycache__/" "^output/" "^data/" "%.ipynb" ]; set_env.COLORTERM = "truecolor"; }; pickers = { colorscheme = { enable_preview = true; }; }; }; }; }; }