client/search: make autocomplete replace current word and set cursor pos

Better behavior for autocomplete in the middle of an already typed tag.
This commit is contained in:
Eva
2025-03-29 04:06:35 +01:00
parent f5c5b0bfb1
commit 417675cc4c

View File

@ -70,11 +70,18 @@ class AutoCompleteControl {
prefix = this._sourceInputNode.value.substring(0, index + 1);
middle = this._sourceInputNode.value.substring(index + 1);
}
suffix = spaceIndex < commaIndex ? suffix.replace(/^[^,]+/, "") : suffix.replace(/^\S+/, "");
suffix = suffix.trimLeft();
this._sourceInputNode.value =
prefix + result.toString() + delimiter + suffix.trimLeft();
prefix + result.toString() + delimiter + suffix;
if (!addSpace) {
this._sourceInputNode.value = this._sourceInputNode.value.trim();
this._sourceInputNode.value = this._sourceInputNode.value.trimLeft();
}
const selection = this._sourceInputNode.value.length - suffix.length;
if (!addSpace) {
this._sourceInputNode.value = this._sourceInputNode.value.trimRight();
}
this._sourceInputNode.setSelectionRange(selection, selection);
this._sourceInputNode.focus();
}