Improve current word selection

This commit is contained in:
missionfloyd 2023-04-20 18:23:51 -06:00 committed by GitHub
parent 31e60adb28
commit d2ef3465ca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -89,24 +89,17 @@ app.registerExtension({
end = nearestEnclosure.end; end = nearestEnclosure.end;
selectedText = inputField.value.substring(start, end); selectedText = inputField.value.substring(start, end);
} else { } else {
// Select the current word, find the start and end of the word (first space before and after) // Select the current word, find the start and end of the word
const wordStart = inputField.value.substring(0, start).lastIndexOf(" ") + 1; const delimiters = " .,\\/!?%^*;:{}=-_`~()\r\n\t";
const wordEnd = inputField.value.substring(end).indexOf(" ");
// If there is no space after the word, select to the end of the string
if (wordEnd === -1) {
end = inputField.value.length;
} else {
end += wordEnd;
}
start = wordStart;
// Remove all punctuation at the end and beginning of the word while (!delimiters.includes(inputField.value[start - 1]) && start > 0) {
while (inputField.value[start].match(/[.,\/#!$%\^&\*;:{}=\-_`~()]/)) { start--;
start++;
} }
while (inputField.value[end - 1].match(/[.,\/#!$%\^&\*;:{}=\-_`~()]/)) {
end--; while (!delimiters.includes(inputField.value[end]) && end < inputField.value.length) {
end++;
} }
selectedText = inputField.value.substring(start, end); selectedText = inputField.value.substring(start, end);
if (!selectedText) return; if (!selectedText) return;
} }