diff --git a/plugins/default.nix b/plugins/default.nix index 025922cd..0ae8aa8a 100644 --- a/plugins/default.nix +++ b/plugins/default.nix @@ -30,6 +30,7 @@ ./utils/nvim-autopairs.nix ./utils/intellitab.nix ./utils/specs.nix + ./utils/mark-radar.nix ./languages/treesitter.nix ./languages/nix.nix diff --git a/plugins/plugin-defs.nix b/plugins/plugin-defs.nix index 9473969e..204c376c 100644 --- a/plugins/plugin-defs.nix +++ b/plugins/plugin-defs.nix @@ -13,4 +13,14 @@ sha256 = "19my464jsji7cb81h0agflzb0vmmb3f5kapv0wwhpdddcfzvp4fg"; }; }; + mark-radar = pkgs.vimUtils.buildVimPlugin rec { + pname = "mark-radar"; + version = "d7fb84a670795a5b36b18a5b59afd1d3865cbec7"; + src = pkgs.fetchFromGitHub { + owner = "winston0410"; + repo = "mark-radar.nvim"; + rev = version; + sha256 = "1y3l2c7h8czhw0b5m25iyjdyy0p4nqk4a3bxv583m72hn4ac8rz9"; + }; + }; } diff --git a/plugins/utils/mark-radar.nix b/plugins/utils/mark-radar.nix new file mode 100644 index 00000000..7080b022 --- /dev/null +++ b/plugins/utils/mark-radar.nix @@ -0,0 +1,48 @@ +{ pkgs, config, lib, ... }: + +with lib; +let + cfg = config.programs.nixvim.plugins.mark-radar; + helpers = import ../helpers.nix { inherit lib; }; + defs = import ../plugin-defs.nix { inherit pkgs; }; +in { + options.programs.nixvim.plugins.mark-radar = { + enable = mkEnableOption "Enable mark-radar"; + + highlight_background = mkOption { + type = with types; nullOr bool; + default = null; + }; + + background_highlight_group = mkOption { + type = with types; nullOr str; + default = null; + }; + + highlight_group = mkOption { + type = with types; nullOr str; + default = null; + }; + + set_default_keybinds = mkOption { + type = with types; nullOr str; + default = null; + }; + }; + + config = let + opts = helpers.toLuaObject { + inherit (cfg) highlight_group background_highlight_group; + set_default_mappings = cfg.set_default_keybinds; + background_highlight = cfg.highlight_background; + }; + in mkIf cfg.enable { + programs.nixvim = { + extraPlugins = [ defs.mark-radar ]; + + extraConfigLua = '' + require("mark-radar").setup(${opts}) + ''; + }; + }; +}