diff --git a/ChangeLog b/ChangeLog
index c596af67b9cbe62b296df335ed0fa52ba29a5617..d7fc38b9c2c9e7fd7c5188713648bc6735151665 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,9 @@
 
 	* ChangeLog.pre-2.1: Add missing attribution.
 	* NEWS: Resync with NEWS from the 2.0 branch.
+	* text.c (execute_command): Call terminal_init() instead of just
+	disable_signals() after executing the command, as the command
+	may have changed the terminal settings.
 
 2007-12-10  David Lawrence Ramsey  <pooka109@gmail.com>
 
diff --git a/src/text.c b/src/text.c
index 0ec884d0236a0ec2114f74678163dd2230147e30..166c182e679c1c46e016c86aea2c2f41867a7ab1 100644
--- a/src/text.c
+++ b/src/text.c
@@ -503,9 +503,10 @@ bool execute_command(const char *command)
     if (!sig_failed && sigaction(SIGINT, &oldaction, NULL) == -1)
 	nperror("sigaction");
 
-    /* Disable interpretation of the special control keys so that we can
+    /* Restore the terminal to its previous state.  In the process,
+     * disable interpretation of the special control keys so that we can
      * use Ctrl-C for other things. */
-    disable_signals();
+    terminal_init();
 
     return TRUE;
 }