diff --git a/ChangeLog b/ChangeLog
index 8c812c1502ca8135a3a6b2dac8c042c82b26c34d..96ee66168e11e47d038f542e1963179de0290e4c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -38,6 +38,9 @@ CVS code -
   do_insertfile()
 	- Wrap one reference to NANO_EXTCMD_KEY in a NANO_SMALL #ifdef.
 	  (DLR)
+	- Save the already-typed answer when switching from "Insert
+	  File" to "Execute Command" mode via Ctrl-X, just in case we
+	  started typing a command before switching. (DLR)
   add_open_files()
 	- Make the saving of marked status in open_files->file_flags
 	  work properly again; a tweak to the ISSET() macro in 1.3.0
@@ -152,6 +155,9 @@ CVS code -
 	  efficiency tweaks. (David Benbennick)  DLR: Tweak to follow
 	  the old behavior of adding non-blank strings entered at the
 	  "Replace: " prompt to the search history. (DLR)
+  do_gotoline()
+	- Simplify the edit_update() call depending on the value of
+	  save_pos. (David Benbennick)
   do_bracket()
 	- Add efficiency tweaks. (David Benbennick)  DLR: Remove
 	  reliance on the hardcoded bracket string length; instead, only
diff --git a/src/files.c b/src/files.c
index ea9dd368b9eee01ab1b2cb6369f84e93795fe4c5..35610dc3f719351a38e4f3cd606343a9c1581c4f 100644
--- a/src/files.c
+++ b/src/files.c
@@ -501,7 +501,7 @@ int do_insertfile(int loading_file)
 #endif /* ENABLE_MULTIBUFFER */
 
 	if (i == NANO_EXTCMD_KEY) {
-	    int ts = statusq(TRUE, extcmd_list, "", NULL, 
+	    int ts = statusq(TRUE, extcmd_list, answer, NULL, 
 		_("Command to execute"));
 	    if (ts  == -1 || answer == NULL || answer[0] == '\0') {
 		statusbar(_("Cancelled"));
diff --git a/src/search.c b/src/search.c
index 9ce635c39a45d4f8a40894b9f43a7bb43c251ccf..020eb4db9628b58fa86af029082d577715c550b7 100644
--- a/src/search.c
+++ b/src/search.c
@@ -829,7 +829,7 @@ int do_gotoline(int line, int save_pos)
 
 	line = atoi(answer);
 
-	/* Bounds check */
+	/* Bounds check. */
 	if (line <= 0) {
 	    statusbar(_("Come on, be reasonable"));
 	    display_main_list();
@@ -842,12 +842,10 @@ int do_gotoline(int line, int save_pos)
 
     current_x = 0;
 
-    /* if save_pos is nonzero, don't change the cursor position when
-       updating the edit window */
-    if (save_pos)
-    	edit_update(current, NONE);
-    else
-	edit_update(current, CENTER);
+    /* If save_pos is nonzero, don't change the cursor position when
+     * updating the edit window. */
+    edit_update(current, save_pos ? NONE : CENTER);
+
     placewewant = 0;
     display_main_list();
     return 1;