Skip to content

Commit 537fe55

Browse files
committed
fixed Korean
1 parent 67732cc commit 537fe55

File tree

4 files changed

+28
-15
lines changed

4 files changed

+28
-15
lines changed

app/src/main/java/io/github/sspanak/tt9/db/mindReading/MindReader.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ public MindReader(@Nullable SettingsStore settings, @Nullable ExecutorService ex
6262

6363

6464
public void clearContext() {
65+
// @todo: probably, always do this when the input field resets, and the language is transcribed or uses no spaces
6566
if (!isOff() && wordContext.setText("")) {
6667
words.clear();
6768
Logger.d(LOG_TAG, "Mind reader context cleared");
@@ -88,7 +89,7 @@ public void guessNext(@NonNull InputMode inputMode, @NonNull Language language,
8889

8990
loadingId = 0;
9091

91-
// @todo: Korean does not work
92+
// @todo: In Korean count space as the last word character
9293
// @todo: this fails for ABC. Fix it!
9394
if (setContextSync(inputMode, language, surroundingText, lastWord)) {
9495
runInThread(() -> {
@@ -163,7 +164,7 @@ private boolean setContextSync(@Nullable InputMode inputMode, @NonNull Language
163164
&& Character.isWhitespace(lastWord.codePointAt(0))
164165
&& wordContext.setText(surroundingText[0])
165166
&& wordContext.appendText(lastWord, false);
166-
} else if (LanguageKind.usesSpaceAsPunctuation(language)) {
167+
} else if (LanguageKind.usesSpaceAsPunctuation(language) && !LanguageKind.isKorean(language)) {
167168
return wordContext.appendText(lastWord, true);
168169
} else {
169170
return wordContext.setText(surroundingText[0]);

app/src/main/java/io/github/sspanak/tt9/db/mindReading/MindReaderContext.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import io.github.sspanak.tt9.ime.modes.InputMode;
1010
import io.github.sspanak.tt9.ime.modes.InputModeKind;
1111
import io.github.sspanak.tt9.languages.Language;
12+
import io.github.sspanak.tt9.languages.LanguageKind;
1213
import io.github.sspanak.tt9.languages.exceptions.InvalidLanguageCharactersException;
1314
import io.github.sspanak.tt9.util.Logger;
1415
import io.github.sspanak.tt9.util.TextTools;
@@ -125,7 +126,7 @@ boolean setText(@NonNull String beforeCursor) {
125126
}
126127

127128
raw.setLength(0);
128-
raw.append(beforeCursor.trim());
129+
raw.append(LanguageKind.usesSpaceAsPunctuation(language) ? beforeCursor : beforeCursor.trim());
129130
lastAppendedWord = null;
130131
tokens = new String[0];
131132

app/src/main/java/io/github/sspanak/tt9/ime/SuggestionHandler.java

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -234,22 +234,33 @@ protected void setGuessesTextCase(int textCase) {
234234

235235

236236
@Override
237-
protected void guessOnNumber(double loadingId, @NonNull String[] surroundingText, @Nullable String lastWord, int number, int useTextCase) {
238-
if (number == 0 && mLanguage.hasLettersOnAllKeys()) {
237+
protected void guessOnNumber(double loadingId, @NonNull String[] surroundingText, @Nullable String lastWord, int number) {
238+
if (mLanguage.hasLettersOnAllKeys()) {
239239
return;
240240
}
241241

242-
if (!mLanguage.hasSpaceBetweenWords()) {
243-
if (lastWord != null) {
244-
if (!mInputMode.isTyping()) {
245-
guessNextWord(surroundingText, lastWord);
246-
} else if (mInputMode.getSequenceLength() == 1) {
247-
guessCurrentWord(loadingId, surroundingText, number);
248-
}
249-
}
242+
if (mLanguage.hasSpaceBetweenWords()) {
243+
guessOnNumberRegularLanguage(loadingId, surroundingText, lastWord, number);
244+
} else {
245+
guessOnNumberNoSpaceLanguage(loadingId, surroundingText, lastWord, number);
246+
}
247+
}
248+
249+
250+
private void guessOnNumberNoSpaceLanguage(double loadingId, @NonNull String[] surroundingText, @Nullable String lastWord, int number) {
251+
if (lastWord == null) {
250252
return;
251253
}
252254

255+
if (!mInputMode.isTyping()) {
256+
guessNextWord(surroundingText, lastWord);
257+
} else if (mInputMode.getSequenceLength() == 1) {
258+
guessCurrentWord(loadingId, surroundingText, number);
259+
}
260+
}
261+
262+
263+
private void guessOnNumberRegularLanguage(double loadingId, @NonNull String[] surroundingText, @Nullable String lastWord, int number) {
253264
if (mInputMode.getSequenceLength() != 1 || new Text(mLanguage, surroundingText[1]).startsWithWord()) {
254265
clearGuessingContext();
255266
return;

app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public abstract class TypingHandler extends KeyPadHandler {
4848
abstract protected void onAcceptSuggestionsDelayed(String s);
4949
abstract protected void getSuggestions(double loadingId, @Nullable String currentWord, @Nullable Runnable onComplete);
5050

51-
protected abstract void guessOnNumber(double loadingId, @NonNull String[] surroundingChars, @Nullable String lastWord, int number, int useTextCase);
51+
protected abstract void guessOnNumber(double loadingId, @NonNull String[] surroundingChars, @Nullable String lastWord, int number);
5252
abstract protected void guessNextWord(@NonNull String[] surroundingText, @Nullable String lastWord);
5353
abstract protected void clearGuessingContext();
5454
abstract protected void setGuessingContext(@NonNull String[] surroundingText);
@@ -221,7 +221,7 @@ protected boolean onNumber(int key, boolean hold, int repeat) {
221221
suggestionOps.scheduleDelayedAccept(mInputMode.getAutoAcceptTimeout());
222222
} else {
223223
final double loadingId = Math.random();
224-
guessOnNumber(loadingId, surroundingChars, lastWord, key, mInputMode.getTextCase());
224+
guessOnNumber(loadingId, surroundingChars, lastWord, key);
225225
getSuggestions(loadingId, null, null);
226226
}
227227

0 commit comments

Comments
 (0)