diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ScintillaBase.cxx | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/ScintillaBase.cxx b/src/ScintillaBase.cxx index 039539ad3..ed391c846 100644 --- a/src/ScintillaBase.cxx +++ b/src/ScintillaBase.cxx @@ -198,16 +198,18 @@ void ScintillaBase::AutoCompleteStart(int lenEntered, const char *list) { if (ac.chooseSingle && (listType == 0)) { if (list && !strchr(list, ac.GetSeparator())) { + const char *typeSep = strchr(list, ac.GetTypesep()); + size_t lenInsert = (typeSep) ? (typeSep-list) : strlen(list); if (ac.ignoreCase) { SetEmptySelection(currentPos - lenEntered); pdoc->DeleteChars(currentPos, lenEntered); SetEmptySelection(currentPos); - pdoc->InsertString(currentPos, list); - SetEmptySelection(currentPos + static_cast<int>(strlen(list))); + pdoc->InsertString(currentPos, list, lenInsert); + SetEmptySelection(currentPos + lenInsert); } else { SetEmptySelection(currentPos); - pdoc->InsertString(currentPos, list + lenEntered); - SetEmptySelection(currentPos + static_cast<int>(strlen(list + lenEntered))); + pdoc->InsertString(currentPos, list + lenEntered, lenInsert - lenEntered); + SetEmptySelection(currentPos + lenInsert - lenEntered); } return; } |