diff options
| author | Robin Haberkorn <rhaberkorn@fmsbw.de> | 2026-09-25 01:43:56 +0200 |
|---|---|---|
| committer | Robin Haberkorn <rhaberkorn@fmsbw.de> | 2026-09-25 01:43:56 +0200 |
| commit | e371b5fc710c597e175e6b7d7645b3a224a731a1 (patch) | |
| tree | 3861fa4949adfd1c95a06ae0b7dd41c4167a3b7a /src/view.h | |
| parent | 207af96f4eb3220534ea06c2e107517372246544 (diff) | |
instead of relying on Scintilla undo actions, use SciTECO undo tokens exclusively
Previously we were using both Scintilla undo actions and our own undo tokens
and both had to be coordinated via `undo__teco_interface_ssm(SCI_UNDO, 0, 0)`.
This was error prone since we have to predict when an undo action is actually
generated. Furthermore, you had to update SCI_SETUNDOCOLLECTION on all buffers
and the Q-Reg view whenever switching to and from interactive mode.
Also, this probably wasted memory for the doubled undo bookkeeping.
Now, we always set SCI_SETUNDOCOLLECTION(FALSE), even in interactive mode.
teco_undo_view_insert() was introduced to undo text deletions.
While this saves almost no lines of code, it's just a clearer and simpler
architecture.
Diffstat (limited to 'src/view.h')
| -rw-r--r-- | src/view.h | 10 |
1 files changed, 2 insertions, 8 deletions
@@ -44,14 +44,6 @@ void undo__teco_view_ssm(teco_view_t *, unsigned int, uptr_t, sptr_t); void teco_view_set_representations(teco_view_t *ctx); -/** @memberof teco_view_t */ -static inline void -teco_view_set_scintilla_undo(teco_view_t *ctx, gboolean state) -{ - teco_view_ssm(ctx, SCI_EMPTYUNDOBUFFER, 0, 0); - teco_view_ssm(ctx, SCI_SETUNDOCOLLECTION, state, 0); -} - gboolean teco_view_load_from_channel(teco_view_t *ctx, GIOChannel *channel, gboolean clear, GError **error); gboolean teco_view_load_from_file(teco_view_t *ctx, const gchar *filename, @@ -92,4 +84,6 @@ teco_int_t teco_view_bytes2glyphs_rel(teco_view_t *ctx, teco_int_t pos_glyphs, teco_int_t teco_view_get_character(teco_view_t *ctx, gsize pos, gsize len); +void teco_undo_view_insert(teco_view_t *view, gsize pos, gsize len); + void teco_view_process_notify(teco_view_t *ctx, const SCNotification *notify); |
