// @name        複数キーワード ハイライト
// @description 最大 5 つのキーワードを異なる色でハイライトします。カンマ区切りで一括設定。

var COLORS = [
    { fg: "#000000", bg: "#FFD700" },   // 黄
    { fg: "#000000", bg: "#87CEEB" },   // 水色
    { fg: "#FFFFFF", bg: "#FF6347" },   // 赤
    { fg: "#000000", bg: "#98FB98" },   // 緑
    { fg: "#000000", bg: "#DDA0DD" },   // 紫
];

// ─── モード選択 ───────────────────────────────────────────────────
var mode = phantis.selectItem(
    "複数キーワード ハイライト",
    ["キーワードを入力して設定", "現在のハイライトをクリア"]
);

if (mode === null) {
    // ダイアログ外クリック → 何もしない
} else if (mode === "現在のハイライトをクリア") {
    phantis.clearHighlights();
    phantis.setStatusMessage("ハイライトをクリアしました");
} else {
    setHighlights();
}

function setHighlights() {
    var input = phantis.prompt(
        "ハイライトするキーワードをカンマ区切りで入力してください。\n" +
        "最大 5 つまで、それぞれ異なる色で表示されます。\n\n" +
        "例: ERROR, WARN, TODO, FIXME",
        ""
    );

    if (input === null || input.trim() === "") {
        phantis.setStatusMessage("キャンセルしました");
        return;
    }

    var rawWords = input.split(",");
    var keywords = [];
    for (var i = 0; i < rawWords.length && keywords.length < 5; i++) {
        var w = rawWords[i].trim();
        if (w.length > 0) keywords.push(w);
    }

    if (keywords.length === 0) {
        phantis.message("有効なキーワードが入力されませんでした。");
        return;
    }

    var useRegex = phantis.confirm("正規表現として扱いますか？");

    // ─── 件数を確認しながらハイライト設定 ───────────────────────
    phantis.clearHighlights();

    var applied  = [];
    var notFound = [];

    for (var j = 0; j < keywords.length; j++) {
        phantis.setProgress(j + 1, keywords.length);
        var kw    = keywords[j];
        var color = COLORS[j];

        var hits = phantis.filter(kw, { regex: useRegex, caseSensitive: false });

        if (hits.length > 0) {
            phantis.addHighlight(kw, color.fg, color.bg, useRegex, false);
            applied.push("  " + (j + 1) + ". 「" + kw + "」→ " + hits.length + " 件");
        } else {
            notFound.push("  ・「" + kw + "」");
        }
    }

    // ─── 結果サマリー ─────────────────────────────────────────────
    var summary = "【ハイライト設定完了】\n\n";
    if (applied.length > 0)  summary += "設定済み:\n"     + applied.join("\n")  + "\n";
    if (notFound.length > 0) summary += "\n見つからず（ハイライトなし）:\n" + notFound.join("\n");

    phantis.message(summary);
    phantis.setStatusMessage("ハイライト: " + applied.length + " キーワード設定済み");
}
