aboutsummaryrefslogtreecommitdiffstats
path: root/home-manager/soispha/config
diff options
context:
space:
mode:
authorSoispha <soispha@vhack.eu>2023-08-24 21:37:23 +0200
committerSoispha <soispha@vhack.eu>2023-08-24 21:37:23 +0200
commitd7d940ead56b9acb9575694170c8df2ed3c586d9 (patch)
tree49dcb398845e1443684c7f122b7f037297f28caf /home-manager/soispha/config
parentFix(hm/conf/gammastep): Go down to 3000K again as its just comfortable (diff)
downloadnixos-config-d7d940ead56b9acb9575694170c8df2ed3c586d9.zip
Feat(hm/conf/neovim/plugins/harpoon): Init
Diffstat (limited to 'home-manager/soispha/config')
-rw-r--r--home-manager/soispha/config/neovim/nixvim/plugins/harpoon/default.nix95
1 files changed, 95 insertions, 0 deletions
diff --git a/home-manager/soispha/config/neovim/nixvim/plugins/harpoon/default.nix b/home-manager/soispha/config/neovim/nixvim/plugins/harpoon/default.nix
new file mode 100644
index 00000000..1f409530
--- /dev/null
+++ b/home-manager/soispha/config/neovim/nixvim/plugins/harpoon/default.nix
@@ -0,0 +1,95 @@
+{...}: let
+ numbers = ["0" "1" "2" "3" "4" "5" "6" "7" "8" "9"];
+ mkNumberedCommand = {
+ command_template,
+ prefix,
+ number,
+ desc_template,
+ }: {
+ name = "${prefix}${number}";
+ value = {
+ action = ''
+ function()
+ ${command_template number}
+ end
+ '';
+ lua = true;
+ desc = "${desc_template number}";
+ };
+ };
+ mkGotoTerminalCommand = number: let
+ desc_template = number: "Goto terminal number ${number}";
+ command_template = number: ''require("harpoon.term").gotoTerminal(${number})'';
+ prefix = "gt";
+ in
+ mkNumberedCommand {inherit desc_template command_template prefix number;};
+ mkGotoFileCommand = number: let
+ desc_template = number: "Goto Buffer number ${number}";
+ command_template = number: ''require("harpoon.ui").nav_file(${number})'';
+ prefix = "gf";
+ in
+ mkNumberedCommand {inherit desc_template command_template prefix number;};
+
+ gotoTerminalMappings = builtins.listToAttrs (builtins.map mkGotoTerminalCommand numbers);
+ gotoFileMappings = builtins.listToAttrs (builtins.map mkGotoFileCommand numbers);
+in {
+ programs.nixvim = {
+ plugins.harpoon = {
+ enable = true;
+ # menu.width = "vim.api.nvim_win_get_width(0) - 4"; # TODO integrate that
+ keymaps = {
+ tmuxGotoTerminal = null; # TODO
+ };
+ };
+ maps.normalVisualOp =
+ {
+ "gfn" = {
+ action = ''
+ function()
+ require("harpoon.ui").nav_next()
+ end
+ '';
+ lua = true;
+ desc = "go to the next marked file";
+ };
+ "gfp" = {
+ action = ''
+ function()
+ require("harpoon.ui").nav_prev()
+ end
+ '';
+ lua = true;
+ desc = "go to the previous marked file";
+ };
+ "gad" = {
+ action = ''
+ function()
+ require("harpoon.mark").add_file()
+ end
+ '';
+ lua = true;
+ desc = "add a mark to the open file in harpoon.";
+ };
+ "gqc" = {
+ action = ''
+ function()
+ require("harpoon.cmd-ui").toggle_quick_menu()
+ end
+ '';
+ lua = true;
+ desc = "toggle the harpoon command quick menu to see all commands.";
+ };
+ "gqn" = {
+ action = ''
+ function()
+ require("harpoon.ui").toggle_quick_menu()
+ end
+ '';
+ lua = true;
+ desc = "toggle the harpoon normal quick menu to see all marks.";
+ };
+ }
+ // gotoFileMappings
+ // gotoTerminalMappings;
+ };
+}