Simplify finding word boundaries

This also makes it work with prompts without spaces between words
This commit is contained in:
missionfloyd 2023-04-20 01:34:13 -06:00
parent fbd34a6847
commit ee172c0fc1

View File

@ -46,26 +46,18 @@ function keyupEditAttention(event){
function selectCurrentWord(){
if (selectionStart !== selectionEnd) return false;
const delimiters = ".,\/#!$%\^&\*;:{}=\-_`~()";
const delimiters = ".,\/#!$%\^&\*;:{}=\-_`~() ";
// Select the current word, find the start and end of the word (first space before and after)
const wordStart = text.substring(0, selectionStart).lastIndexOf(" ") + 1;
const wordEnd = text.substring(selectionEnd).indexOf(" ");
// If there is no space after the word, select to the end of the string
if (wordEnd === -1) {
selectionEnd = text.length;
} else {
selectionEnd += wordEnd;
// seek backward until to find beggining
while (!delimiters.includes(text[selectionStart - 1]) && selectionStart > 0) {
selectionStart--;
}
// seek forward to find end
while (!delimiters.includes(text[selectionEnd]) && selectionEnd < text.length) {
selectionEnd++;
}
selectionStart = wordStart;
// Remove all punctuation at the end and beginning of the word
while (delimiters.includes(text[selectionStart])) {
selectionStart++;
}
while (delimiters.includes(text[selectionEnd - 1])) {
selectionEnd--;
}
target.setSelectionRange(selectionStart, selectionEnd);
return true;
}