{ config, lib, pkgs, inputs, ... }: let inherit (lib) mkEnableOption mkIf readFile; in { home-manager.users.moritz.programs.nixvim = { plugins.treesitter-textobjects = { enable = true; move = { enable = true; gotoNext = { "]f" = { desc = "Next function"; query = "@function.outer"; }; "]c" = { desc = "Next class"; query = "@class.outer"; }; "]b" = { desc = "Next block"; query = "@block.outer"; }; "]P" = { desc = "Next parameter"; query = "@parameter.outer"; }; }; gotoPrevious = { "[f" = { desc = "Previous function"; query = "@function.outer"; }; "[c" = { desc = "Previous class"; query = "@class.outer"; }; "[b" = { desc = "Previous block"; query = "@block.outer"; }; "[P" = { desc = "Previous parameter"; query = "@parameter.outer"; }; }; }; select = { enable = true; keymaps = { "af" = { desc = "function"; query = "@function.outer"; }; "if" = { desc = "inner function"; query = "@function.inner"; }; "ac" = { desc = "class"; query = "@class.outer"; }; "ic" = { desc = "inner class"; query = "@class.inner"; }; "ab" = { desc = "block"; query = "@block.outer"; }; "ib" = { desc = "inner block"; query = "@block.inner"; }; "aP" = { desc = "parameter"; query = "@parameter.outer"; }; "iP" = { desc = "inner parameter"; query = "@parameter.inner"; }; }; }; }; performance.combinePlugins.standalonePlugins = [ "nvim-treesitter-textobjects" ]; }; }