mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[apps/code] Autocomplete only at the end of the word
For instance, if the cursor is: "he|llo" and the user adds the letter 'i', there is no autocompletion provided as the cursor is still in the middle of a word.
This commit is contained in:
@@ -246,9 +246,11 @@ void PythonTextArea::addAutocompletion() {
|
||||
const char * autocompletionLocation = const_cast<char *>(cursorLocation());
|
||||
const char * textToInsert = nullptr;
|
||||
CodePoint prevCodePoint = UTF8Helper::PreviousCodePoint(m_contentView.editedText(), autocompletionLocation);
|
||||
if (!UTF8Helper::CodePointIsEndOfWord(prevCodePoint)) {
|
||||
if (!UTF8Helper::CodePointIsEndOfWord(prevCodePoint)
|
||||
&& UTF8Helper::CodePointIsEndOfWord(UTF8Helper::CodePointAtLocation(autocompletionLocation)))
|
||||
{
|
||||
/* The previous code point is neither the beginning of the text, nor a
|
||||
* space, nor a \n.
|
||||
* space, nor a \n, and the next code point is the end of the word.
|
||||
* Compute the text to insert */
|
||||
// TODO LEA
|
||||
textToInsert = "test";
|
||||
|
||||
@@ -67,6 +67,7 @@ const char * PerformAtCodePoints(
|
||||
const char * stoppingPosition = nullptr);
|
||||
|
||||
CodePoint PreviousCodePoint(const char * buffer, const char * location); // returns 0 if location == buffer
|
||||
CodePoint CodePointAtLocation(const char * location);
|
||||
bool PreviousCodePointIs(const char * buffer, const char * location, CodePoint c);
|
||||
bool CodePointIs(const char * location, CodePoint c);
|
||||
bool CodePointIsEndOfWord(CodePoint c);
|
||||
|
||||
@@ -265,6 +265,11 @@ CodePoint PreviousCodePoint(const char * buffer, const char * location) {
|
||||
return decoder.previousCodePoint();
|
||||
}
|
||||
|
||||
CodePoint CodePointAtLocation(const char * location) {
|
||||
UTF8Decoder decoder(location);
|
||||
return decoder.nextCodePoint();
|
||||
}
|
||||
|
||||
bool PreviousCodePointIs(const char * buffer, const char * location, CodePoint c) {
|
||||
assert(location > buffer);
|
||||
if (UTF8Decoder::CharSizeOfCodePoint(c) == 1) {
|
||||
@@ -277,8 +282,7 @@ bool CodePointIs(const char * location, CodePoint c) {
|
||||
if (UTF8Decoder::CharSizeOfCodePoint(c) == 1) {
|
||||
return *(location) == c;
|
||||
}
|
||||
UTF8Decoder decoder(location);
|
||||
return decoder.nextCodePoint() == c;
|
||||
return CodePointAtLocation(location) == c;
|
||||
}
|
||||
|
||||
bool CodePointIsEndOfWord(CodePoint c) {
|
||||
|
||||
Reference in New Issue
Block a user