{ pkgs, config, lib, ... }: with lib; with builtins; let cfg = config.vim.gestures.gesture-nvim; in { options.vim.gestures.gesture-nvim = { enable = mkEnableOption "Enable GitHub Copilot"; }; config = mkIf cfg.enable { vim.startPlugins = ["gesture-nvim"]; vim.luaConfigRC.gesture-nvim = nvim.dag.entryAnywhere '' vim.opt.mouse = "a" vim.keymap.set("n", "", [[lua require("gesture").draw()]], { silent = true }) vim.keymap.set("n", "", [[lua require("gesture").finish()]], { silent = true }) -- or if you would like to use right click -- vim.keymap.set("n", "", [[]]) -- vim.keymap.set("n", "", [[lua require("gesture").draw()]], { silent = true }) -- vim.keymap.set("n", "", [[lua require("gesture").finish()]], { silent = true }) local gesture = require("gesture") gesture.register({ name = "scroll to bottom", inputs = { gesture.up(), gesture.down() }, action = "normal! G", }) gesture.register({ name = "next tab", inputs = { gesture.right() }, action = "tabnext", }) gesture.register({ name = "previous tab", inputs = { gesture.left() }, action = function(ctx) -- also can use callable vim.cmd.tabprevious() end, }) gesture.register({ name = "go back", inputs = { gesture.right(), gesture.left() }, -- map to `` keycode action = [[lua vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("", true, false, true), "n", true)]], }) ''; }; }