( cvs diff -u -r 1.179.2.125 -r 1.179.2.126 src/imap.c; ) > 2.3.1cvs42.patchset
( cvs diff -u -r 1.9.2.40 -r 1.9.2.41 src/gtk/gtkaspell.c; ) > 2.3.1cvs43.patchset
( cvs diff -u -r 1.207.2.104 -r 1.207.2.105 src/folderview.c; cvs diff -u -r 1.20.2.11 -r 1.20.2.12 src/folderview.h; cvs diff -u -r 1.274.2.121 -r 1.274.2.122 src/mainwindow.c; cvs diff -u -r 1.395.2.221 -r 1.395.2.222 src/summaryview.c; cvs diff -u -r 1.36.2.69 -r 1.36.2.70 src/common/utils.c; ) > 2.3.1cvs44.patchset
+( cvs diff -u -r 1.382.2.289 -r 1.382.2.290 src/compose.c; ) > 2.3.1cvs45.patchset
compose_destroy(compose);
return NULL;
}
+
+ compose->sig_str = compose_get_signature_str(compose);
+
return compose;
}
GtkTextMark *mark;
GtkTextIter iter, iter_end;
gint cur_pos;
+ gchar *search = NULL;
gboolean prev_autowrap;
+ gboolean found = FALSE, shift = FALSE;
g_return_if_fail(compose->account != NULL);
gtk_text_buffer_get_end_iter(buffer, &iter);
- if (replace && compose->sig_str) {
- gboolean found;
+ search = compose->sig_str;
+again:
+ if (replace && search) {
GtkTextIter first_iter, start_iter, end_iter;
gtk_text_buffer_get_start_iter(buffer, &first_iter);
found = FALSE;
else
found = gtk_text_iter_forward_search(&first_iter,
- compose->sig_str,
+ search,
GTK_TEXT_SEARCH_TEXT_ONLY,
&start_iter, &end_iter,
NULL);
gtk_text_buffer_delete(buffer, &start_iter, &end_iter);
iter = start_iter;
}
+ }
+ if (replace && !found && search && strlen(search) > 2
+ && search[0] == '\n' && search[1] == '\n') {
+ search ++;
+ shift = TRUE;
+ goto again;
}
g_free(compose->sig_str);
compose->sig_str = g_strdup("");
cur_pos = gtk_text_iter_get_offset(&iter);
- gtk_text_buffer_insert(buffer, &iter, compose->sig_str, -1);
+ if (shift && found)
+ gtk_text_buffer_insert(buffer, &iter, compose->sig_str + 1, -1);
+ else
+ gtk_text_buffer_insert(buffer, &iter, compose->sig_str, -1);
/* skip \n\n */
gtk_text_buffer_get_iter_at_offset(buffer, &iter, cur_pos);
gtk_text_iter_forward_char(&iter);