aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/frame.c13
-rw-r--r--src/sc_editor.c12
2 files changed, 14 insertions, 11 deletions
diff --git a/src/frame.c b/src/frame.c
index c9189d2..5793e97 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -1427,8 +1427,19 @@ void delete_text_from_frame(struct frame *fr, struct edit_pos p1, struct edit_po
sort_positions(&p1, &p2);
+ /* To make sure there are no nasty surprises ahead, run through the
+ * paragraphs we're about to touch, and make sure they all have at least
+ * an empty dummy run */
+ for ( i=p1.para; i<=p2.para; i++ ) {
+ struct edit_pos ep;
+ ep.para = i;
+ ep.pos = 0;
+ ep.trail = 0;
+ ensure_run(fr, ep);
+ }
+
if ( !position_editable(fr, p1) || !position_editable(fr, p2) ) {
- fprintf(stderr, "Block delete outside editable region\n");
+ fprintf(stderr, "Delete outside editable region\n");
return;
}
diff --git a/src/sc_editor.c b/src/sc_editor.c
index 897a2a4..a870059 100644
--- a/src/sc_editor.c
+++ b/src/sc_editor.c
@@ -748,16 +748,8 @@ static void do_backspace(struct frame *fr, SCEditor *e)
show_edit_pos(p1);
show_edit_pos(p2);
- if ( position_editable(e->cursor_frame, p1)
- && position_editable(e->cursor_frame, p2) )
- {
-
- delete_text_from_frame(e->cursor_frame, p1, p2, wrapw);
- e->cpos = p2;
-
- } else {
- fprintf(stderr, "Deleting not editable.\n");
- }
+ delete_text_from_frame(e->cursor_frame, p1, p2, wrapw);
+ e->cpos = p2;
} else {