Commit e34949be authored by missionfloyd's avatar missionfloyd
Browse files

Edit-attention fixes

parent 7d60076b
Loading
Loading
Loading
Loading
+35 −21
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ function keyupEditAttention(event) {

        // Set the selection to the text between the parenthesis
        const parenContent = text.substring(beforeParen + 1, selectionStart + afterParen);
        if (!/.*:[\d.]+/.test(parenContent)) return false;
        const lastColon = parenContent.lastIndexOf(":");
        selectionStart = beforeParen + 1;
        selectionEnd = selectionStart + lastColon;
@@ -66,25 +67,37 @@ function keyupEditAttention(event) {
    var closeCharacter = ')';
    var delta = opts.keyedit_precision_attention;

    if (selectionStart > 0 && text[selectionStart - 1] == '<') {
    if (selectionStart > 0 && /<.*:[\d.]+>/.test(text.slice(selectionStart - 1, selectionEnd + text.slice(selectionEnd).indexOf(">") + 1))) {
        closeCharacter = '>';
        delta = opts.keyedit_precision_extra;
    } else if (selectionStart == 0 || text[selectionStart - 1] != "(") {

    } else if (selectionStart > 0 && /\(.*\)|\[.*\]/.test(text.slice(selectionStart - 1, selectionEnd + 1))) {
        closeCharacter = null;
        if (isPlus) {
            text = text.slice(0, selectionStart) + text[selectionStart - 1] + text.slice(selectionStart, selectionEnd) + text[selectionEnd] + text.slice(selectionEnd);
            selectionStart++;
            selectionEnd++;
        } else {
            text = text.slice(0, selectionStart - 1) + text.slice(selectionStart, selectionEnd) + text.slice(selectionEnd + 1);
            selectionStart--;
            selectionEnd--;
        }
    } else if (selectionStart == 0 || !/\(.*:[\d.]+\)/.test(text.slice(selectionStart - 1, selectionEnd + text.slice(selectionEnd).indexOf(")") + 1))) {
        // do not include spaces at the end
        while (selectionEnd > selectionStart && text[selectionEnd - 1] == ' ') {
            selectionEnd -= 1;
            selectionEnd--;
        }

        if (selectionStart == selectionEnd) {
            return;
        }

        text = text.slice(0, selectionStart) + "(" + text.slice(selectionStart, selectionEnd) + ":1.0)" + text.slice(selectionEnd);

        selectionStart += 1;
        selectionEnd += 1;
        selectionStart++;
        selectionEnd++;
    }

    if (closeCharacter) {
        var end = text.slice(selectionEnd + 1).indexOf(closeCharacter) + 1;
        var weight = parseFloat(text.slice(selectionEnd + 1, selectionEnd + end));
        if (isNaN(weight)) return;
@@ -101,6 +114,7 @@ function keyupEditAttention(event) {
        } else {
            text = text.slice(0, selectionEnd + 1) + weight + text.slice(selectionEnd + end);
        }
    }

    target.focus();
    target.value = text;