ledit

Text editor (WIP)
git clone git://lumidify.org/ledit.git (fast, but not encrypted)
git clone https://lumidify.org/git/ledit.git (encrypted, but very slow)
Log | Files | Refs | README | LICENSE

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:
Mbuffer.c | 2+-
Mundo.c | 15+++++++++++++++
Mview.c | 3+--
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) {