src/editor/editcmd.c: minor refactoring and fix coding style.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
Andrew Borodin 2020-03-29 18:25:48 +03:00
parent 7652b0f3cb
commit cf1d4d80be

View File

@ -160,7 +160,6 @@ edit_save_mode_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm
widget_disable (ww, RADIO (sender)->sel != 2); widget_disable (ww, RADIO (sender)->sel != 2);
return MSG_HANDLED; return MSG_HANDLED;
} }
return MSG_NOT_HANDLED; return MSG_NOT_HANDLED;
default: default:
@ -209,15 +208,17 @@ edit_save_file (WEdit * edit, const vfs_path_t * filename_vpath)
this_save_mode = option_save_mode; this_save_mode = option_save_mode;
if (this_save_mode != EDIT_QUICK_SAVE) if (this_save_mode != EDIT_QUICK_SAVE)
{ {
if (!vfs_file_is_local (real_filename_vpath) if (!vfs_file_is_local (real_filename_vpath))
|| (fd = mc_open (real_filename_vpath, O_RDONLY | O_BINARY)) == -1) /* The file does not exists yet, so no safe save or backup are necessary. */
{
/*
* The file does not exists yet, so no safe save or
* backup are necessary.
*/
this_save_mode = EDIT_QUICK_SAVE; this_save_mode = EDIT_QUICK_SAVE;
else
{
fd = mc_open (real_filename_vpath, O_RDONLY | O_BINARY);
if (fd == -1)
/* The file does not exists yet, so no safe save or backup are necessary. */
this_save_mode = EDIT_QUICK_SAVE;
} }
if (fd != -1) if (fd != -1)
mc_close (fd); mc_close (fd);
} }
@ -261,7 +262,9 @@ edit_save_file (WEdit * edit, const vfs_path_t * filename_vpath)
} }
} }
if (this_save_mode != EDIT_QUICK_SAVE) if (this_save_mode == EDIT_QUICK_SAVE)
savename_vpath = vfs_path_clone (real_filename_vpath);
else
{ {
char *savedir, *saveprefix; char *savedir, *saveprefix;
@ -286,8 +289,6 @@ edit_save_file (WEdit * edit, const vfs_path_t * filename_vpath)
*/ */
close (fd); close (fd);
} }
else
savename_vpath = vfs_path_clone (real_filename_vpath);
(void) mc_chown (savename_vpath, edit->stat1.st_uid, edit->stat1.st_gid); (void) mc_chown (savename_vpath, edit->stat1.st_uid, edit->stat1.st_gid);
(void) mc_chmod (savename_vpath, edit->stat1.st_mode); (void) mc_chmod (savename_vpath, edit->stat1.st_mode);
@ -305,7 +306,7 @@ edit_save_file (WEdit * edit, const vfs_path_t * filename_vpath)
mc_close (fd); mc_close (fd);
file = (FILE *) popen (p, "w"); file = (FILE *) popen (p, "w");
if (file) if (file != NULL)
{ {
filelen = edit_write_stream (edit, file); filelen = edit_write_stream (edit, file);
#if 1 #if 1
@ -340,8 +341,10 @@ edit_save_file (WEdit * edit, const vfs_path_t * filename_vpath)
mc_close (fd); mc_close (fd);
goto error_save; goto error_save;
} }
if (mc_close (fd) != 0) if (mc_close (fd) != 0)
goto error_save; goto error_save;
/* Update the file information, especially the mtime. */ /* Update the file information, especially the mtime. */
if (mc_stat (savename_vpath, &edit->stat1) == -1) if (mc_stat (savename_vpath, &edit->stat1) == -1)
goto error_save; goto error_save;
@ -396,9 +399,8 @@ edit_save_file (WEdit * edit, const vfs_path_t * filename_vpath)
goto error_save; goto error_save;
} }
if (this_save_mode != EDIT_QUICK_SAVE) if (this_save_mode != EDIT_QUICK_SAVE && mc_rename (savename_vpath, real_filename_vpath) == -1)
if (mc_rename (savename_vpath, real_filename_vpath) == -1) goto error_save;
goto error_save;
vfs_path_free (real_filename_vpath); vfs_path_free (real_filename_vpath);
vfs_path_free (savename_vpath); vfs_path_free (savename_vpath);
@ -494,13 +496,15 @@ edit_save_cmd (WEdit * edit)
/* On failure try 'save as', it does locking on its own */ /* On failure try 'save as', it does locking on its own */
if (res == 0) if (res == 0)
return edit_save_as_cmd (edit); return edit_save_as_cmd (edit);
edit->force |= REDRAW_COMPLETELY;
if (res > 0) if (res > 0)
{ {
edit->delete_file = 0; edit->delete_file = 0;
edit->modified = 0; edit->modified = 0;
} }
edit->force |= REDRAW_COMPLETELY;
return TRUE; return TRUE;
} }
@ -526,7 +530,6 @@ edit_load_file_from_filename (WDialog * h, const vfs_path_t * vpath)
static void static void
edit_delete_column_of_text (WEdit * edit) edit_delete_column_of_text (WEdit * edit)
{ {
off_t p, q, r;
off_t m1, m2; off_t m1, m2;
off_t n; off_t n;
long b, c, d; long b, c, d;
@ -538,25 +541,23 @@ edit_delete_column_of_text (WEdit * edit)
b = MAX (MIN (c, d), MIN (edit->column1, edit->column2)); b = MAX (MIN (c, d), MIN (edit->column1, edit->column2));
c = MAX (c, MAX (edit->column1, edit->column2)); c = MAX (c, MAX (edit->column1, edit->column2));
while (n--) while (n-- != 0)
{ {
off_t r, p, q;
r = edit_buffer_get_current_bol (&edit->buffer); r = edit_buffer_get_current_bol (&edit->buffer);
p = edit_move_forward3 (edit, r, b, 0); p = edit_move_forward3 (edit, r, b, 0);
q = edit_move_forward3 (edit, r, c, 0); q = edit_move_forward3 (edit, r, c, 0);
if (p < m1) p = MAX (p, m1);
p = m1; q = MIN (q, m2);
if (q > m2)
q = m2;
edit_cursor_move (edit, p - edit->buffer.curs1); edit_cursor_move (edit, p - edit->buffer.curs1);
while (q > p) /* delete line between margins */
{ for (; q > p; q--)
/* delete line between margins */
if (edit_buffer_get_current_byte (&edit->buffer) != '\n') if (edit_buffer_get_current_byte (&edit->buffer) != '\n')
edit_delete (edit, TRUE); edit_delete (edit, TRUE);
q--;
} /* move to next line except on the last delete */
if (n) if (n != 0)
/* move to next line except on the last delete */
edit_cursor_move (edit, edit_cursor_move (edit,
edit_buffer_get_forward_offset (&edit->buffer, edit->buffer.curs1, 1, edit_buffer_get_forward_offset (&edit->buffer, edit->buffer.curs1, 1,
0) - edit->buffer.curs1); 0) - edit->buffer.curs1);
@ -578,18 +579,14 @@ edit_block_delete (WEdit * edit)
if (edit->column_highlight && edit->mark2 < 0) if (edit->column_highlight && edit->mark2 < 0)
edit_mark_cmd (edit, FALSE); edit_mark_cmd (edit, FALSE);
if ((end_mark - start_mark) > option_max_undo / 2)
{ /* Warning message with a query to continue or cancel the operation */
/* Warning message with a query to continue or cancel the operation */ if ((end_mark - start_mark) > option_max_undo / 2 &&
if (edit_query_dialog2 edit_query_dialog2 (_("Warning"),
(_("Warning"), ("Block is large, you may not be able to undo this action"),
_ _("C&ontinue"), _("&Cancel")) != 0)
("Block is large, you may not be able to undo this action"), return 1;
_("C&ontinue"), _("&Cancel")))
{
return 1;
}
}
c1 = MIN (edit->column1, edit->column2); c1 = MIN (edit->column1, edit->column2);
c2 = MAX (edit->column1, edit->column2); c2 = MAX (edit->column1, edit->column2);
edit->column1 = c1; edit->column1 = c1;
@ -630,8 +627,10 @@ edit_block_delete (WEdit * edit)
edit_delete (edit, TRUE); edit_delete (edit, TRUE);
} }
} }
edit_set_markers (edit, 0, 0, 0, 0); edit_set_markers (edit, 0, 0, 0, 0);
edit->force |= REDRAW_PAGE; edit->force |= REDRAW_PAGE;
return 0; return 0;
} }
@ -975,11 +974,10 @@ edit_do_search (WEdit * edit)
if (!found) if (!found)
edit->search_start = edit->search->normal_offset; edit->search_start = edit->search->normal_offset;
found = TRUE; found = TRUE;
l += edit_buffer_count_lines (&edit->buffer, q, edit->search->normal_offset); l += edit_buffer_count_lines (&edit->buffer, q, edit->search->normal_offset);
if (l != l_last) if (l != l_last)
{
book_mark_insert (edit, l, BOOK_MARK_FOUND_COLOR); book_mark_insert (edit, l, BOOK_MARK_FOUND_COLOR);
}
l_last = l; l_last = l;
q = edit->search->normal_offset + 1; q = edit->search->normal_offset + 1;
} }
@ -1046,11 +1044,13 @@ edit_get_block (WEdit * edit, off_t start, off_t finish, off_t * l)
unsigned char *s, *r; unsigned char *s, *r;
r = s = g_malloc0 (finish - start + 1); r = s = g_malloc0 (finish - start + 1);
if (edit->column_highlight) if (edit->column_highlight)
{ {
*l = 0; *l = 0;
/* copy from buffer, excluding chars that are out of the column 'margins' */ /* copy from buffer, excluding chars that are out of the column 'margins' */
while (start < finish) for (; start < finish; start++)
{ {
int c; int c;
off_t x; off_t x;
@ -1063,16 +1063,18 @@ edit_get_block (WEdit * edit, off_t start, off_t finish, off_t * l)
*s++ = c; *s++ = c;
(*l)++; (*l)++;
} }
start++;
} }
} }
else else
{ {
*l = finish - start; *l = finish - start;
while (start < finish)
*s++ = edit_buffer_get_byte (&edit->buffer, start++); for (; start < finish; start++)
*s++ = edit_buffer_get_byte (&edit->buffer, start);
} }
*s = '\0'; *s = '\0';
return r; return r;
} }
@ -1088,6 +1090,7 @@ edit_save_block_to_clip_file (WEdit * edit, off_t start, off_t finish)
tmp = mc_config_get_full_path (EDIT_CLIP_FILE); tmp = mc_config_get_full_path (EDIT_CLIP_FILE);
ret = edit_save_block (edit, tmp, start, finish); ret = edit_save_block (edit, tmp, start, finish);
g_free (tmp); g_free (tmp);
return ret; return ret;
} }
@ -1162,6 +1165,7 @@ edit_find_word_start (const edit_buffer_t * buf, off_t * word_start, gsize * wor
/* success */ /* success */
*word_start = buf->curs1 - i; /* start found */ *word_start = buf->curs1 - i; /* start found */
*word_len = (gsize) i; *word_len = (gsize) i;
return TRUE; return TRUE;
} }
@ -1285,9 +1289,11 @@ edit_collect_completions (WEdit * edit, off_t word_start, gsize word_len,
(char *) &temp->str[word_len], MAX (len, compl[i]->len) - word_len) == 0) (char *) &temp->str[word_len], MAX (len, compl[i]->len) - word_len) == 0)
{ {
GString *this = compl[i]; GString *this = compl[i];
for (++i; i < *num; i++) for (++i; i < *num; i++)
compl[i - 1] = compl[i]; compl[i - 1] = compl[i];
compl[*num - 1] = this; compl[*num - 1] = this;
skip = 1; skip = 1;
break; /* skip it, already added */ break; /* skip it, already added */
} }
@ -1659,7 +1665,8 @@ edit_save_as_cmd (WEdit * edit)
/* This heads the 'Save As' dialog box */ /* This heads the 'Save As' dialog box */
vfs_path_t *exp_vpath; vfs_path_t *exp_vpath;
int save_lock = 0; int save_lock = 0;
int different_filename = 0; gboolean different_filename = FALSE;
gboolean ret = FALSE;
if (!edit_check_newline (&edit->buffer)) if (!edit_check_newline (&edit->buffer))
return FALSE; return FALSE;
@ -1667,106 +1674,91 @@ edit_save_as_cmd (WEdit * edit)
exp_vpath = edit_get_save_file_as (edit); exp_vpath = edit_get_save_file_as (edit);
edit_push_undo_action (edit, KEY_PRESS + edit->start_display); edit_push_undo_action (edit, KEY_PRESS + edit->start_display);
if (exp_vpath != NULL) if (exp_vpath != NULL && vfs_path_len (exp_vpath) != 0)
{ {
if (vfs_path_len (exp_vpath) == 0) int rv;
goto ret;
else if (!vfs_path_equal (edit->filename_vpath, exp_vpath))
{ {
int rv; int file;
struct stat sb;
if (!vfs_path_equal (edit->filename_vpath, exp_vpath)) if (mc_stat (exp_vpath, &sb) == 0 && !S_ISREG (sb.st_mode))
{ {
int file; edit_error_dialog (_("Save as"),
struct stat sb; get_sys_error (_
("Cannot save: destination is not a regular file")));
if (mc_stat (exp_vpath, &sb) == 0 && !S_ISREG (sb.st_mode)) goto ret;
{
edit_error_dialog (_("Save as"),
get_sys_error (_
("Cannot save: destination is not a regular file")));
goto ret;
}
different_filename = 1;
file = mc_open (exp_vpath, O_RDONLY | O_BINARY);
if (file != -1)
{
/* the file exists */
mc_close (file);
/* Overwrite the current file or cancel the operation */
if (edit_query_dialog2
(_("Warning"),
_("A file already exists with this name"), _("&Overwrite"), _("&Cancel")))
goto ret;
}
else
{
edit->stat1.st_mode |= S_IWUSR;
}
save_lock = lock_file (exp_vpath);
} }
different_filename = TRUE;
file = mc_open (exp_vpath, O_RDONLY | O_BINARY);
if (file == -1)
edit->stat1.st_mode |= S_IWUSR;
else else
{ {
/* filenames equal, check if already locked */ /* the file exists */
if (!edit->locked && !edit->delete_file) mc_close (file);
save_lock = lock_file (exp_vpath); /* Overwrite the current file or cancel the operation */
if (edit_query_dialog2
(_("Warning"),
_("A file already exists with this name"), _("&Overwrite"), _("&Cancel")))
goto ret;
} }
save_lock = lock_file (exp_vpath);
}
else if (!edit->locked && !edit->delete_file)
/* filenames equal, check if already locked */
save_lock = lock_file (exp_vpath);
if (different_filename)
/* Allow user to write into saved (under another name) file
* even if original file had r/o user permissions. */
edit->stat1.st_mode |= S_IWRITE;
rv = edit_save_file (edit, exp_vpath);
switch (rv)
{
case 1:
/* Successful, so unlock both files */
if (different_filename) if (different_filename)
{ {
/*
* Allow user to write into saved (under another name) file
* even if original file had r/o user permissions.
*/
edit->stat1.st_mode |= S_IWRITE;
}
rv = edit_save_file (edit, exp_vpath);
switch (rv)
{
case 1:
/* Successful, so unlock both files */
if (different_filename)
{
if (save_lock)
unlock_file (exp_vpath);
if (edit->locked)
edit->locked = unlock_file (edit->filename_vpath);
}
else
{
if (edit->locked || save_lock)
edit->locked = unlock_file (edit->filename_vpath);
}
edit_set_filename (edit, exp_vpath);
if (edit->lb != LB_ASIS)
edit_reload (edit, exp_vpath);
edit->modified = 0;
edit->delete_file = 0;
if (different_filename)
edit_load_syntax (edit, NULL, edit->syntax_type);
vfs_path_free (exp_vpath);
edit->force |= REDRAW_COMPLETELY;
return TRUE;
default:
edit_error_dialog (_("Save as"), get_sys_error (_("Cannot save file")));
MC_FALLTHROUGH;
case -1:
/* Failed, so maintain modify (not save) lock */
if (save_lock) if (save_lock)
unlock_file (exp_vpath); unlock_file (exp_vpath);
break; if (edit->locked)
edit->locked = unlock_file (edit->filename_vpath);
} }
else if (edit->locked || save_lock)
edit->locked = unlock_file (edit->filename_vpath);
edit_set_filename (edit, exp_vpath);
if (edit->lb != LB_ASIS)
edit_reload (edit, exp_vpath);
edit->modified = 0;
edit->delete_file = 0;
if (different_filename)
edit_load_syntax (edit, NULL, edit->syntax_type);
ret = TRUE;
break;
default:
edit_error_dialog (_("Save as"), get_sys_error (_("Cannot save file")));
MC_FALLTHROUGH;
case -1:
/* Failed, so maintain modify (not save) lock */
if (save_lock)
unlock_file (exp_vpath);
break;
} }
} }
ret: ret:
vfs_path_free (exp_vpath); vfs_path_free (exp_vpath);
edit->force |= REDRAW_COMPLETELY; edit->force |= REDRAW_COMPLETELY;
return FALSE; return ret;
} }
/* {{{ Macro stuff starts here */ /* {{{ Macro stuff starts here */
@ -1879,16 +1871,17 @@ edit_store_macro_cmd (WEdit * edit)
g_string_append_printf (marcros_string, "%s:%i;", action_name, g_string_append_printf (marcros_string, "%s:%i;", action_name,
(int) record_macro_buf[i].ch); (int) record_macro_buf[i].ch);
} }
if (have_macro)
if (!have_macro)
mc_config_del_key (macros_config, section_name, skeyname);
{ {
macros_t macro; macros_t macro;
macro.hotkey = hotkey; macro.hotkey = hotkey;
macro.macro = macros; macro.macro = macros;
g_array_append_val (macros_list, macro); g_array_append_val (macros_list, macro);
mc_config_set_string (macros_config, section_name, skeyname, marcros_string->str); mc_config_set_string (macros_config, section_name, skeyname, marcros_string->str);
} }
else
mc_config_del_key (macros_config, section_name, skeyname);
g_free (skeyname); g_free (skeyname);
edit_macro_sort_by_hotkey (); edit_macro_sort_by_hotkey ();
@ -1933,6 +1926,7 @@ edit_repeat_macro_cmd (WEdit * edit)
for (j = 0; j < count_repeat; j++) for (j = 0; j < count_repeat; j++)
for (i = 0; i < macro_index; i++) for (i = 0; i < macro_index; i++)
edit_execute_cmd (edit, record_macro_buf[i].action, record_macro_buf[i].ch); edit_execute_cmd (edit, record_macro_buf[i].action, record_macro_buf[i].ch);
edit_update_screen (edit); edit_update_screen (edit);
return TRUE; return TRUE;
} }
@ -2011,17 +2005,21 @@ edit_load_macro_cmd (WEdit * edit)
macro_pair = NULL; macro_pair = NULL;
} }
} }
if (have_macro) if (have_macro)
{ {
macro.hotkey = hotkey; macro.hotkey = hotkey;
macro.macro = macros; macro.macro = macros;
g_array_append_val (macros_list, macro); g_array_append_val (macros_list, macro);
} }
g_strfreev (values); g_strfreev (values);
} }
g_strfreev (keys); g_strfreev (keys);
mc_config_deinit (macros_config); mc_config_deinit (macros_config);
edit_macro_sort_by_hotkey (); edit_macro_sort_by_hotkey ();
return TRUE; return TRUE;
} }
@ -2051,6 +2049,7 @@ edit_save_confirm_cmd (WEdit * edit)
if (!ok) if (!ok)
return FALSE; return FALSE;
} }
return edit_save_cmd (edit); return edit_save_cmd (edit);
} }
@ -2328,6 +2327,7 @@ eval_marks (WEdit * edit, off_t * start_mark, off_t * end_mark)
*start_mark = MAX (*start_mark, start_eol); *start_mark = MAX (*start_mark, start_eol);
*end_mark = MIN (*end_mark, end_eol); *end_mark = MIN (*end_mark, end_eol);
} }
return TRUE; return TRUE;
} }
@ -2496,6 +2496,7 @@ edit_block_delete_cmd (WEdit * edit)
return edit_block_delete (edit); return edit_block_delete (edit);
edit_delete_line (edit); edit_delete_line (edit);
return 0; return 0;
} }
@ -2526,20 +2527,20 @@ edit_replace_cmd (WEdit * edit, gboolean again)
edit->force |= REDRAW_COMPLETELY; edit->force |= REDRAW_COMPLETELY;
if (again && !saved1 && !saved2) if (again && saved1 == NULL && saved2 == NULL)
again = FALSE; again = FALSE;
if (again) if (again)
{ {
input1 = g_strdup (saved1 ? saved1 : ""); input1 = g_strdup (saved1 != NULL ? saved1 : "");
input2 = g_strdup (saved2 ? saved2 : ""); input2 = g_strdup (saved2 != NULL ? saved2 : "");
} }
else else
{ {
char *tmp_inp1, *tmp_inp2; char *tmp_inp1, *tmp_inp2;
disp1 = edit_replace_cmd__conv_to_display (saved1 ? saved1 : ""); disp1 = edit_replace_cmd__conv_to_display (saved1 != NULL ? saved1 : "");
disp2 = edit_replace_cmd__conv_to_display (saved2 ? saved2 : ""); disp2 = edit_replace_cmd__conv_to_display (saved2 != NULL ? saved2 : "");
edit_push_undo_action (edit, KEY_PRESS + edit->start_display); edit_push_undo_action (edit, KEY_PRESS + edit->start_display);
@ -2596,11 +2597,11 @@ edit_replace_cmd (WEdit * edit, gboolean again)
edit_search_fix_search_start_if_selection (edit); edit_search_fix_search_start_if_selection (edit);
} }
if (edit->found_len && edit->search_start == edit->found_start + 1 if (edit->found_len != 0 && edit->search_start == edit->found_start + 1
&& edit_search_options.backwards) && edit_search_options.backwards)
edit->search_start--; edit->search_start--;
if (edit->found_len && edit->search_start == edit->found_start - 1 if (edit->found_len != 0 && edit->search_start == edit->found_start - 1
&& !edit_search_options.backwards) && !edit_search_options.backwards)
edit->search_start++; edit->search_start++;
@ -2620,15 +2621,15 @@ edit_replace_cmd (WEdit * edit, gboolean again)
if (!(edit->search->error == MC_SEARCH_E_OK || if (!(edit->search->error == MC_SEARCH_E_OK ||
(once_found && edit->search->error == MC_SEARCH_E_NOTFOUND))) (once_found && edit->search->error == MC_SEARCH_E_NOTFOUND)))
edit_show_search_error (edit, _("Search")); edit_show_search_error (edit, _("Search"));
break; break;
} }
once_found = TRUE; once_found = TRUE;
edit->search_start = edit->search->normal_offset; edit->search_start = edit->search->normal_offset;
/*returns negative on not found or error in pattern */ /* returns negative on not found or error in pattern */
if ((edit->search_start >= 0) && (edit->search_start < edit->buffer.size)) if (edit->search_start >= 0 && edit->search_start < edit->buffer.size)
{ {
gsize i; gsize i;
GString *repl_str; GString *repl_str;
@ -2702,9 +2703,7 @@ edit_replace_cmd (WEdit * edit, gboolean again)
/* so that we don't find the same string again */ /* so that we don't find the same string again */
if (edit_search_options.backwards) if (edit_search_options.backwards)
{
edit->search_start--; edit->search_start--;
}
else else
{ {
edit->search_start += edit->found_len + (len == 0 ? 1 : 0); edit->search_start += edit->found_len + (len == 0 ? 1 : 0);
@ -2736,7 +2735,7 @@ edit_replace_cmd (WEdit * edit, gboolean again)
edit->force |= REDRAW_COMPLETELY; edit->force |= REDRAW_COMPLETELY;
edit_render_keypress (edit); edit_render_keypress (edit);
if ((edit->replace_mode == 1) && (times_replaced != 0)) if (edit->replace_mode == 1 && times_replaced != 0)
message (D_NORMAL, _("Replace"), _("%ld replacements made"), times_replaced); message (D_NORMAL, _("Replace"), _("%ld replacements made"), times_replaced);
cleanup: cleanup:
@ -2754,6 +2753,7 @@ edit_search_cmd_callback (const void *user_data, gsize char_offset, int *current
WEdit *edit = ((const edit_search_status_msg_t *) user_data)->edit; WEdit *edit = ((const edit_search_status_msg_t *) user_data)->edit;
*current_char = edit_buffer_get_byte (&edit->buffer, (off_t) char_offset); *current_char = edit_buffer_get_byte (&edit->buffer, (off_t) char_offset);
return MC_SEARCH_CB_OK; return MC_SEARCH_CB_OK;
} }
@ -2774,7 +2774,6 @@ edit_search_update_callback (const void *user_data, gsize char_offset)
void void
edit_search_cmd (WEdit * edit, gboolean again) edit_search_cmd (WEdit * edit, gboolean again)
{ {
if (edit == NULL) if (edit == NULL)
return; return;
@ -2829,7 +2828,6 @@ edit_search_cmd (WEdit * edit, gboolean again)
} }
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */
/** /**
* Check if it's OK to close the file. If there are unsaved changes, ask user. * Check if it's OK to close the file. If there are unsaved changes, ask user.
@ -2922,7 +2920,7 @@ edit_save_block (WEdit * edit, const char *filename, off_t start, off_t finish)
unsigned char *block, *p; unsigned char *block, *p;
p = block = edit_get_block (edit, start, finish, &len); p = block = edit_get_block (edit, start, finish, &len);
while (len) while (len != 0)
{ {
r = mc_write (file, p, len); r = mc_write (file, p, len);
if (r < 0) if (r < 0)
@ -2937,12 +2935,13 @@ edit_save_block (WEdit * edit, const char *filename, off_t start, off_t finish)
{ {
unsigned char *buf; unsigned char *buf;
off_t i = start; off_t i = start;
off_t end;
len = finish - start; len = finish - start;
buf = g_malloc0 (TEMP_BUF_LEN); buf = g_malloc0 (TEMP_BUF_LEN);
while (start != finish) while (start != finish)
{ {
off_t end;
end = MIN (finish, start + TEMP_BUF_LEN); end = MIN (finish, start + TEMP_BUF_LEN);
for (; i < end; i++) for (; i < end; i++)
buf[i - start] = edit_buffer_get_byte (&edit->buffer, i); buf[i - start] = edit_buffer_get_byte (&edit->buffer, i);
@ -3062,15 +3061,15 @@ edit_goto_cmd (WEdit * edit)
if (l < 0) if (l < 0)
l = edit->buffer.lines + l + 2; l = edit->buffer.lines + l + 2;
edit_move_display (edit, l - WIDGET (edit)->lines / 2 - 1); edit_move_display (edit, l - WIDGET (edit)->lines / 2 - 1);
edit_move_to_line (edit, l - 1); edit_move_to_line (edit, l - 1);
edit->force |= REDRAW_COMPLETELY; edit->force |= REDRAW_COMPLETELY;
g_free (f);
g_free (f);
first_run = FALSE; first_run = FALSE;
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */
/** Return TRUE on success */ /** Return TRUE on success */
@ -3106,7 +3105,6 @@ edit_save_block_cmd (WEdit * edit)
return ret; return ret;
} }
/* --------------------------------------------------------------------------------------------- */ /* --------------------------------------------------------------------------------------------- */
/** returns TRUE on success */ /** returns TRUE on success */
@ -3193,6 +3191,7 @@ edit_sort_cmd (WEdit * edit)
edit_error_dialog (_("Sort"), tmp); edit_error_dialog (_("Sort"), tmp);
g_free (tmp); g_free (tmp);
} }
return -1; return -1;
} }
@ -3208,6 +3207,7 @@ edit_sort_cmd (WEdit * edit)
edit_insert_file (edit, tmp_vpath); edit_insert_file (edit, tmp_vpath);
vfs_path_free (tmp_vpath); vfs_path_free (tmp_vpath);
} }
return 0; return 0;
} }
@ -3240,7 +3240,7 @@ edit_ext_cmd (WEdit * edit)
g_free (tmp); g_free (tmp);
g_free (exp); g_free (exp);
if (e) if (e != 0)
{ {
edit_error_dialog (_("External command"), get_sys_error (_("Cannot execute command"))); edit_error_dialog (_("External command"), get_sys_error (_("Cannot execute command")));
return -1; return -1;
@ -3255,6 +3255,7 @@ edit_ext_cmd (WEdit * edit)
edit_insert_file (edit, tmp_vpath); edit_insert_file (edit, tmp_vpath);
vfs_path_free (tmp_vpath); vfs_path_free (tmp_vpath);
} }
return 0; return 0;
} }
@ -3421,6 +3422,7 @@ edit_begin_end_macro_cmd (WEdit * edit)
if (edit != NULL) if (edit != NULL)
{ {
long command = macro_index < 0 ? CK_MacroStartRecord : CK_MacroStopRecord; long command = macro_index < 0 ? CK_MacroStartRecord : CK_MacroStopRecord;
edit_execute_key_command (edit, command, -1); edit_execute_key_command (edit, command, -1);
} }
} }
@ -3434,6 +3436,7 @@ edit_begin_end_repeat_cmd (WEdit * edit)
if (edit != NULL) if (edit != NULL)
{ {
long command = macro_index < 0 ? CK_RepeatStartRecord : CK_RepeatStopRecord; long command = macro_index < 0 ? CK_RepeatStartRecord : CK_RepeatStopRecord;
edit_execute_key_command (edit, command, -1); edit_execute_key_command (edit, command, -1);
} }
} }
@ -3511,9 +3514,7 @@ edit_get_match_keyword_cmd (WEdit * edit)
etags_hash_t def_hash[MAX_DEFINITIONS]; etags_hash_t def_hash[MAX_DEFINITIONS];
for (i = 0; i < MAX_DEFINITIONS; i++) for (i = 0; i < MAX_DEFINITIONS; i++)
{
def_hash[i].filename = NULL; def_hash[i].filename = NULL;
}
/* search start of word to be completed */ /* search start of word to be completed */
if (!edit_find_word_start (&edit->buffer, &word_start, &word_len)) if (!edit_find_word_start (&edit->buffer, &word_start, &word_len))
@ -3541,7 +3542,7 @@ edit_get_match_keyword_cmd (WEdit * edit)
} }
while (strcmp (path, PATH_SEP_STR) != 0); while (strcmp (path, PATH_SEP_STR) != 0);
if (tagfile) if (tagfile != NULL)
{ {
num_def = num_def =
etags_set_definition_hash (tagfile, path, match_expr->str, (etags_hash_t *) & def_hash); etags_set_definition_hash (tagfile, path, match_expr->str, (etags_hash_t *) & def_hash);
@ -3552,10 +3553,8 @@ edit_get_match_keyword_cmd (WEdit * edit)
max_len = MAX_WIDTH_DEF_DIALOG; max_len = MAX_WIDTH_DEF_DIALOG;
word_len = 0; word_len = 0;
if (num_def > 0) if (num_def > 0)
{
editcmd_dialog_select_definition_show (edit, match_expr->str, max_len, word_len, editcmd_dialog_select_definition_show (edit, match_expr->str, max_len, word_len,
(etags_hash_t *) & def_hash, num_def); (etags_hash_t *) & def_hash, num_def);
}
g_string_free (match_expr, TRUE); g_string_free (match_expr, TRUE);
} }
@ -3577,7 +3576,7 @@ edit_suggest_current_word (WEdit * edit)
word_len = match_word->len; word_len = match_word->len;
#ifdef HAVE_CHARSET #ifdef HAVE_CHARSET
if (mc_global.source_codepage >= 0 && (mc_global.source_codepage != mc_global.display_codepage)) if (mc_global.source_codepage >= 0 && mc_global.source_codepage != mc_global.display_codepage)
{ {
GString *tmp_word; GString *tmp_word;
@ -3634,7 +3633,6 @@ edit_suggest_current_word (WEdit * edit)
aspell_add_to_dict (match_word->str, (int) word_len); aspell_add_to_dict (match_word->str, (int) word_len);
} }
for (i = 0; i < suggest->len; i++) for (i = 0; i < suggest->len; i++)
{ {
char *cur_sugg_word; char *cur_sugg_word;
@ -3646,7 +3644,9 @@ edit_suggest_current_word (WEdit * edit)
edit->found_start = 0; edit->found_start = 0;
edit->found_len = 0; edit->found_len = 0;
} }
g_string_free (match_word, TRUE); g_string_free (match_word, TRUE);
return retval; return retval;
} }