{ lib, ... }:

lib.nixvim.plugins.mkNeovimPlugin {
  name = "perfanno";
  package = "perfanno-nvim";
  description = "NeoVim lua plugin that annotates source code with profiling information from perf, LuaJIT, or other profilers.";

  maintainers = [ lib.maintainers.fredeb ];

  settingsExample = {
    line_highlights = lib.nixvim.nestedLiteralLua "require('perfanno.util').make_bg_highlights(nil, '#CC3300', 10)";
    vt_highlight = lib.nixvim.nestedLiteralLua "require('perfanno.util').make_fg_highlight('#CC3300')";
    formats = [
      {
        percent = true;
        format = "%.2f%%";
        minimum = 0.5;
      }
      {
        percent = false;
        format = "%d";
        minimum = 1;
      }
    ];

    annotate_after_load = true;
    annotate_on_open = true;
    telescope = {
      enabled = lib.nixvim.nestedLiteralLua "pcall(require, 'telescope')";
      annotate = true;
    };

    ts_function_patterns = {
      default = [
        "function"
        "method"
      ];
    };
  };
}
