diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 4e12a0a31e758cc00eb343696b509ccc3ff0c200..0dccba09ceb402d2ecfedf5686704193f7125959 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -644,7 +644,16 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
         final SettingsValues settingsValues = mSettings.getCurrent();
         if (settingsValues.mDisplayOrientation != conf.orientation) {
             mHandler.startOrientationChanging();
-            mInputLogic.finishInput();
+            // If !isComposingWord, #commitTyped() is a no-op, but still, it's better to avoid
+            // the useless IPC of {begin,end}BatchEdit.
+            if (mInputLogic.mWordComposer.isComposingWord()) {
+                mInputLogic.mConnection.beginBatchEdit();
+                // If we had a composition in progress, we need to commit the word so that the
+                // suggestionsSpan will be added. This will allow resuming on the same suggestions
+                // after rotation is finished.
+                mInputLogic.commitTyped(mSettings.getCurrent(), LastComposedWord.NOT_A_SEPARATOR);
+                mInputLogic.mConnection.endBatchEdit();
+            }
         }
         PersonalizationDictionarySessionRegistrar.onConfigurationChanged(this, conf,
                 mDictionaryFacilitator);