From fc7eb5f7de6dd68ca9d1d15cd5e08b960cc6cbd2 Mon Sep 17 00:00:00 2001 From: Gabriel Arazas Date: Tue, 30 Jan 2024 18:04:56 +0800 Subject: [PATCH] nixvimConfigs/fiesta/setups/fuzzy-finder: init --- configs/nixvim/fiesta/default.nix | 1 + configs/nixvim/fiesta/modules/default.nix | 1 + .../fiesta/modules/setups/fuzzy-finder.nix | 88 +++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 configs/nixvim/fiesta/modules/setups/fuzzy-finder.nix diff --git a/configs/nixvim/fiesta/default.nix b/configs/nixvim/fiesta/default.nix index d29de1be..9bb19458 100644 --- a/configs/nixvim/fiesta/default.nix +++ b/configs/nixvim/fiesta/default.nix @@ -9,6 +9,7 @@ ui.enable = true; completion.enable = true; treesitter.enable = true; + fuzzy-finder.enable = true; debugging.enable = true; desktop-utils.enable = true; note-taking.enable = true; diff --git a/configs/nixvim/fiesta/modules/default.nix b/configs/nixvim/fiesta/modules/default.nix index db49b2de..83e4b5d1 100644 --- a/configs/nixvim/fiesta/modules/default.nix +++ b/configs/nixvim/fiesta/modules/default.nix @@ -3,6 +3,7 @@ ./setups/completion.nix ./setups/debugging.nix ./setups/desktop-utils.nix + ./setups/fuzzy-finder.nix ./setups/snippets ./setups/treesitter.nix ./setups/ui.nix diff --git a/configs/nixvim/fiesta/modules/setups/fuzzy-finder.nix b/configs/nixvim/fiesta/modules/setups/fuzzy-finder.nix new file mode 100644 index 00000000..9f2481cd --- /dev/null +++ b/configs/nixvim/fiesta/modules/setups/fuzzy-finder.nix @@ -0,0 +1,88 @@ +{ config, lib, ... }: + +let + nixvimCfg = config.nixvimConfigs.fiesta; + cfg = nixvimCfg.setups.fuzzy-finder; +in +{ + options.nixvimConfigs.fiesta.setups.fuzzy-finder.enable = + lib.mkEnableOption "fuzzy finder setup"; + + config = lib.mkIf cfg.enable { + plugins.telescope.enable = true; + + # Configure all of the keymaps. + keymaps = + let + bindingPrefix = "f"; + mkTelescopeKeymap = acc: binding: settings: + acc ++ [ + (lib.mergeAttrs { + mode = "n"; + key = "${bindingPrefix}${binding}"; + } settings) + ]; + in + lib.foldlAttrs mkTelescopeKeymap [ ] ({ + "A" = { + options.desc = "Resume from last use"; + action = "require('telescope.builtin').resume"; + lua = true; + }; + "b" = { + options.desc = "List buffers"; + action = "require('telescope.builtin').buffers"; + lua = true; + }; + "f" = { + options.desc = "Find files"; + action = '' + function() + require('telescope.builtin').find_files { hidden = true } + end + ''; + lua = true; + }; + "F" = { + options.desc = "Find files in current directory"; + action = '' + function() + require('telescope.builtin').find_files { + cwd = require('telescope.utils').buffer_dir(), + hidden = true, + } + end + ''; + lua = true; + }; + "g" = { + options.desc = "Find files tracked by Git"; + action = "require('telescope.builtin').git_files"; + lua = true; + }; + "G" = { + options.desc = "Live grep for the whole project"; + action = "require('telescope.builtin').live_grep"; + lua = true; + }; + "h" = { + options.desc = "Find section from help tags"; + action = "require('telescope.builtin').help_tags"; + lua = true; + }; + "m" = { + options.desc = "Find manpage entries"; + action = "require('telescope.builtin').man_pages"; + lua = true; + }; + } + // lib.optionalAttrs nixvimCfg.setups.treesitter.enable { + "t" = { + options.desc = "List symbols from treesitter queries"; + action = "require('telescope.builtin').treesitter"; + lua = true; + }; + }); + }; +} +