|
|
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)
|