92144a5
diff --git a/src/editor/editcmd.c b/src/editor/editcmd.c
92144a5
index 0e8bb1d..f568bdf 100644
92144a5
--- a/src/editor/editcmd.c
92144a5
+++ b/src/editor/editcmd.c
92144a5
@@ -1785,7 +1785,6 @@ edit_replace_cmd (WEdit * edit, int again)
92144a5
 
92144a5
         if ((edit->search_start >= 0) && (edit->search_start < edit->last_byte))
92144a5
         {
92144a5
-            gboolean replace_yes;
92144a5
             gsize i;
92144a5
 
92144a5
             edit->found_start = edit->search_start;
92144a5
@@ -1794,11 +1793,11 @@ edit_replace_cmd (WEdit * edit, int again)
92144a5
             edit_cursor_move (edit, edit->search_start - edit->curs1);
92144a5
             edit_scroll_screen_over_cursor (edit);
92144a5
 
92144a5
-            replace_yes = TRUE;
92144a5
-
92144a5
             if (edit->replace_mode == 0)
92144a5
             {
92144a5
                 int l;
92144a5
+                int prompt;
92144a5
+
92144a5
                 l = edit->curs_row - edit->num_widget_lines / 3;
92144a5
                 if (l > 0)
92144a5
                     edit_scroll_downward (edit, l);
92144a5
@@ -1814,52 +1813,49 @@ edit_replace_cmd (WEdit * edit, int again)
92144a5
                 /* and prompt 2/3 down */
92144a5
                 disp1 = edit_replace_cmd__conv_to_display (saved1);
92144a5
                 disp2 = edit_replace_cmd__conv_to_display (saved2);
92144a5
+                prompt = editcmd_dialog_replace_prompt_show (edit, disp1, disp2, -1, -1);
92144a5
+                g_free (disp1);
92144a5
+                g_free (disp2);
92144a5
 
92144a5
-                switch (editcmd_dialog_replace_prompt_show (edit, disp1, disp2, -1, -1))
92144a5
-                {
92144a5
-                case B_ENTER:
92144a5
-                    replace_yes = TRUE;
92144a5
-                    break;
92144a5
-                case B_SKIP_REPLACE:
92144a5
-                    replace_yes = FALSE;
92144a5
-                    break;
92144a5
-                case B_REPLACE_ALL:
92144a5
+                if (prompt == B_REPLACE_ALL)
92144a5
                     edit->replace_mode = 1;
92144a5
-                    break;
92144a5
-                case B_CANCEL:
92144a5
-                    replace_yes = FALSE;
92144a5
+                else if (prompt == B_SKIP_REPLACE)
92144a5
+                {
92144a5
+                    if (edit_search_options.backwards)
92144a5
+                        edit->search_start--;
92144a5
+                    else
92144a5
+                        edit->search_start++;
92144a5
+                    continue; /* loop */
92144a5
+                }
92144a5
+                else if (prompt == B_CANCEL)
92144a5
+                {
92144a5
                     edit->replace_mode = -1;
92144a5
-                    break;
92144a5
+                    break; /* loop */
92144a5
                 }
92144a5
-                g_free (disp1);
92144a5
-                g_free (disp2);
92144a5
             }
92144a5
 
92144a5
-            if (replace_yes)
92144a5
+            /* don't process string each time */
92144a5
+            if (tmp_str == NULL)
92144a5
             {
92144a5
-                /* don't process string each time */
92144a5
-                if (tmp_str == NULL)
92144a5
-                {
92144a5
-                    tmp_str = g_string_new (input2);
92144a5
-                    repl_str = mc_search_prepare_replace_str (edit->search, tmp_str);
92144a5
+                tmp_str = g_string_new (input2);
92144a5
+                repl_str = mc_search_prepare_replace_str (edit->search, tmp_str);
92144a5
 
92144a5
-                    if (edit->search->error != MC_SEARCH_E_OK)
92144a5
-                    {
92144a5
-                        edit_error_dialog (_("Replace"), edit->search->error_str);
92144a5
-                        break;
92144a5
-                    }
92144a5
+                if (edit->search->error != MC_SEARCH_E_OK)
92144a5
+                {
92144a5
+                    edit_error_dialog (_("Replace"), edit->search->error_str);
92144a5
+                    break;
92144a5
                 }
92144a5
+            }
92144a5
 
92144a5
-               /* delete then insert new */
92144a5
-                for (i = 0; i < len; i++)
92144a5
-                    edit_delete (edit, 1);
92144a5
+              /* delete then insert new */
92144a5
+            for (i = 0; i < len; i++)
92144a5
+                edit_delete (edit, 1);
92144a5
 
92144a5
-                for (i = 0; i < repl_str->len; i++)
92144a5
-                    edit_insert (edit, repl_str->str[i]);
92144a5
+            for (i = 0; i < repl_str->len; i++)
92144a5
+                edit_insert (edit, repl_str->str[i]);
92144a5
 
92144a5
-                edit->found_len = repl_str->len;
92144a5
-                times_replaced++;
92144a5
-            }
92144a5
+            edit->found_len = repl_str->len;
92144a5
+            times_replaced++;
92144a5
 
92144a5
             /* so that we don't find the same string again */
92144a5
             if (edit_search_options.backwards)