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

@ -48,24 +48,16 @@ function keyupEditAttention(event){
if (selectionStart !== selectionEnd) return false; 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) // seek backward until to find beggining
const wordStart = text.substring(0, selectionStart).lastIndexOf(" ") + 1; while (!delimiters.includes(text[selectionStart - 1]) && selectionStart > 0) {
const wordEnd = text.substring(selectionEnd).indexOf(" "); selectionStart--;
// If there is no space after the word, select to the end of the string
if (wordEnd === -1) {
selectionEnd = text.length;
} else {
selectionEnd += wordEnd;
} }
selectionStart = wordStart;
// Remove all punctuation at the end and beginning of the word // seek forward to find end
while (delimiters.includes(text[selectionStart])) { while (!delimiters.includes(text[selectionEnd]) && selectionEnd < text.length) {
selectionStart++; selectionEnd++;
}
while (delimiters.includes(text[selectionEnd - 1])) {
selectionEnd--;
} }
target.setSelectionRange(selectionStart, selectionEnd); target.setSelectionRange(selectionStart, selectionEnd);
return true; return true;
} }