diff --git a/app/src/main/java/helium314/keyboard/latin/SuggestedWords.java b/app/src/main/java/helium314/keyboard/latin/SuggestedWords.java
index a6eae098..df9b8837 100644
--- a/app/src/main/java/helium314/keyboard/latin/SuggestedWords.java
+++ b/app/src/main/java/helium314/keyboard/latin/SuggestedWords.java
@@ -14,6 +14,7 @@ import androidx.annotation.Nullable;
import helium314.keyboard.latin.common.StringUtils;
import helium314.keyboard.latin.define.DebugFlags;
+import helium314.keyboard.latin.settings.Settings;
import java.util.ArrayList;
import java.util.Arrays;
@@ -345,7 +346,7 @@ public class SuggestedWords {
public boolean isAppropriateForAutoCorrection() {
return (mKindAndFlags & KIND_FLAG_APPROPRIATE_FOR_AUTO_CORRECTION) != 0
- || isKindOf(KIND_SHORTCUT);
+ || (isKindOf(KIND_SHORTCUT) && Settings.getInstance().getCurrent().mAutoCorrectShortcuts);
}
public void setDebugString(final String str) {
diff --git a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java
index a612ae79..0f9d1411 100644
--- a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java
+++ b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java
@@ -94,6 +94,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
public static final String PREF_AUTO_CORRECTION = "auto_correction";
public static final String PREF_MORE_AUTO_CORRECTION = "more_auto_correction";
public static final String PREF_AUTO_CORRECTION_CONFIDENCE = "auto_correction_confidence";
+ public static final String PREF_AUTOCORRECT_SHORTCUTS = "autocorrect_shortcuts";
public static final String PREF_CENTER_SUGGESTION_TEXT_TO_ENTER = "center_suggestion_text_to_enter";
public static final String PREF_SHOW_SUGGESTIONS = "show_suggestions";
public static final String PREF_ALWAYS_SHOW_SUGGESTIONS = "always_show_suggestions";
diff --git a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java
index 39a34c14..eae7b375 100644
--- a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java
+++ b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java
@@ -132,6 +132,7 @@ public class SettingsValues {
public final boolean mAutoCorrectEnabled;
public final float mAutoCorrectionThreshold;
public final int mScoreLimitForAutocorrect;
+ public final boolean mAutoCorrectShortcuts;
private final boolean mSuggestionsEnabledPerUserSettings;
private final boolean mOverrideShowingSuggestions;
public final boolean mSuggestClipboardContent;
@@ -190,6 +191,7 @@ public class SettingsValues {
: AUTO_CORRECTION_DISABLED_THRESHOLD;
mScoreLimitForAutocorrect = (mAutoCorrectionThreshold < 0) ? 600000 // very aggressive
: (mAutoCorrectionThreshold < 0.07 ? 800000 : 950000); // aggressive or modest
+ mAutoCorrectShortcuts = prefs.getBoolean(Settings.PREF_AUTOCORRECT_SHORTCUTS, true);
mBigramPredictionEnabled = readBigramPredictionEnabled(prefs, res);
mSuggestClipboardContent = readSuggestClipboardContent(prefs, res);
mDoubleSpacePeriodTimeout = res.getInteger(R.integer.config_double_space_period_timeout);
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 64937dba..6e20f49a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -120,6 +120,10 @@
Auto-correct even when not explicitly requested by the input field
Auto-correction confidence
+
+ Auto-correct shortcuts
+
+ When enabled shortcuts might be expanded by autocorrect
Off
diff --git a/app/src/main/res/xml/prefs_screen_correction.xml b/app/src/main/res/xml/prefs_screen_correction.xml
index ab505cac..44372086 100644
--- a/app/src/main/res/xml/prefs_screen_correction.xml
+++ b/app/src/main/res/xml/prefs_screen_correction.xml
@@ -39,6 +39,13 @@
android:defaultValue="true"
android:persistent="true" />
+
+