commit ef274ec6dc1e799a3e33b7dc203cded67160752e
parent 1b405e16faddabd36b26297c27c746aa7788a2d4
Author: lumidify <nobody@lumidify.org>
Date: Thu, 26 May 2022 22:03:49 +0200
Merge remote-tracking branch 'origin/master'
Diffstat:
3 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/buffer.c b/buffer.c
@@ -316,7 +316,7 @@ buffer_remove_view(ledit_buffer *buffer, ledit_view *view) {
free(buffer->views);
buffer->views = NULL;
} else {
- buffer->views = ledit_reallocarray(buffer->views, --buffer->views_num, sizeof(ledit_view *));
+ buffer->views = ledit_reallocarray(buffer->views, buffer->views_num, sizeof(ledit_view *));
}
}
}
diff --git a/undo.c b/undo.c
@@ -123,6 +123,17 @@ push_undo(
txtbuf_copy(e->text, text);
else
e->text = txtbuf_dup(text);
+ /*
+ printf("START UNDO STACK\n");
+ for (size_t i = 0; i < undo->len; i++) {
+ undo_elem *e = &undo->stack[i];
+ printf(
+ "type %d, mode %d, group %d, mode_group %d, text '%.*s'\n",
+ e->type, e->mode, e->group, e->mode_group, (int)e->text->len, e->text->text
+ );
+ }
+ printf("END UNDO STACK\n");
+ */
}
void
@@ -221,6 +232,8 @@ ledit_undo(undo_stack *undo, ledit_mode mode, void *callback_data,
*cur_line_ret = cur_line;
*cur_index_ret = cur_index;
*min_line_ret = min_line;
+ if (mode == NORMAL || mode == VISUAL)
+ undo_change_mode_group(undo);
return UNDO_NORMAL;
}
@@ -289,6 +302,8 @@ ledit_redo(undo_stack *undo, ledit_mode mode, void *callback_data,
if (undo->cur > 0)
undo->cur--;
*min_line_ret = min_line;
+ if (mode == NORMAL || mode == VISUAL)
+ undo_change_mode_group(undo);
return UNDO_NORMAL;
}
diff --git a/view.c b/view.c
@@ -1048,9 +1048,8 @@ set_pango_text_and_highlight(ledit_view *view, size_t line) {
err_overflow();
pango_layout_set_text(cl->layout, ll->text, (int)ll->len);
set_line_layout_attrs(view, line, cl->layout);
- /* FIXME: is this guard necessary? */
- vl->softlines = ll->len > 0 ? pango_layout_get_line_count(cl->layout) : 1;
pango_layout_set_width(cl->layout, vl->w * PANGO_SCALE);
+ vl->softlines = pango_layout_get_line_count(cl->layout);
int w, h;
pango_layout_get_pixel_size(cl->layout, &w, &h);
if (h != vl->h) {