From bca0a57008988566e33b6b31809e943a126bbc6c Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sun, 13 Aug 2017 21:39:56 +0200 Subject: Eliminate empty runs after delete --- src/frame.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/frame.c b/src/frame.c index bc96f4a..bdfb453 100644 --- a/src/frame.c +++ b/src/frame.c @@ -993,6 +993,23 @@ void delete_text_from_frame(struct frame *fr, struct edit_pos p1, struct edit_po } +static void eliminate_empty_runs(Paragraph *para) +{ + int i; + + for ( i=0; in_runs; i++ ) { + if ( para->runs[i].len_bytes == 0 ) { + int j; + printf("run %i empty\n", i); + for ( j=i; jn_runs-1; j++ ) { + para->runs[j] = para->runs[j+1]; + } + para->n_runs--; + } + } +} + + /* offs2 negative means "to end" */ size_t delete_text_in_paragraph(Paragraph *para, size_t offs1, ssize_t offs2) { @@ -1060,6 +1077,8 @@ size_t delete_text_in_paragraph(Paragraph *para, size_t offs1, ssize_t offs2) } + eliminate_empty_runs(para); + return sum_del; } -- cgit v1.2.3