Commit ee172c0f authored by missionfloyd's avatar missionfloyd

Simplify finding word boundaries

This also makes it work with prompts without spaces between words
parent fbd34a68
...@@ -46,26 +46,18 @@ function keyupEditAttention(event){ ...@@ -46,26 +46,18 @@ function keyupEditAttention(event){
function selectCurrentWord(){ function selectCurrentWord(){
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;
// seek forward to find end
// Remove all punctuation at the end and beginning of the word while (!delimiters.includes(text[selectionEnd]) && selectionEnd < text.length) {
while (delimiters.includes(text[selectionStart])) { selectionEnd++;
selectionStart++;
}
while (delimiters.includes(text[selectionEnd - 1])) {
selectionEnd--;
} }
target.setSelectionRange(selectionStart, selectionEnd); target.setSelectionRange(selectionStart, selectionEnd);
return true; return true;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment