{lib, ...}: let
  inherit (lib) mkEnableOption mkOption types mkMappingOption;
in {
  options.vim.notes.todo-comments = {
    enable = mkEnableOption "todo-comments: highlight and search for todo comments like TODO, HACK, BUG in your code base";

    patterns = {
      highlight = mkOption {
        type = types.str;
        default = ''[[.*<(KEYWORDS)(\([^\)]*\))?:]]'';
        description = "vim regex pattern used for highlighting comments";
      };

      search = mkOption {
        type = types.str;
        default = ''[[\b(KEYWORDS)(\([^\)]*\))?:]]'';
        description = "ripgrep regex pattern used for searching comments";
      };
    };

    mappings = {
      quickFix = mkMappingOption "Open Todo-s in a quickfix list" "<leader>tdq";
      telescope = mkMappingOption "Open Todo-s in telescope" "<leader>tds";
      trouble = mkMappingOption "Open Todo-s in Trouble" "<leader>tdt";
    };
  };
}