aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/qreg.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/qreg.c')
-rw-r--r--src/qreg.c39
1 files changed, 8 insertions, 31 deletions
diff --git a/src/qreg.c b/src/qreg.c
index dae4c9b..559373c 100644
--- a/src/qreg.c
+++ b/src/qreg.c
@@ -138,15 +138,9 @@ teco_qreg_set_eol_mode(teco_qreg_t *qreg, gint mode)
static gboolean
teco_qreg_plain_set_integer(teco_qreg_t *qreg, teco_int_t value, GError **error)
{
- qreg->integer = value;
- return TRUE;
-}
-
-static gboolean
-teco_qreg_plain_undo_set_integer(teco_qreg_t *qreg, GError **error)
-{
if (qreg->must_undo) // FIXME
teco_undo_int(qreg->integer);
+ qreg->integer = value;
return TRUE;
}
@@ -370,7 +364,6 @@ teco_qreg_plain_save(teco_qreg_t *qreg, const gchar *filename, GError **error)
*/
#define TECO_INIT_QREG(...) { \
.set_integer = teco_qreg_plain_set_integer, \
- .undo_set_integer = teco_qreg_plain_undo_set_integer, \
.get_integer = teco_qreg_plain_get_integer, \
.set_string = teco_qreg_plain_set_string, \
.undo_set_string = teco_qreg_plain_undo_set_string, \
@@ -407,21 +400,13 @@ teco_qreg_dot_set_integer(teco_qreg_t *qreg, teco_int_t value, GError **error)
return FALSE;
}
- teco_interface_ssm(SCI_GOTOPOS, pos, 0);
- /*
- * FIXME: Currently emits undo tokens.
- * But we could just get rid of the undo_set_integer() callback.
- */
- teco_current_doc_set_dot(value);
- return TRUE;
-}
-
-static gboolean
-teco_qreg_dot_undo_set_integer(teco_qreg_t *qreg, GError **error)
-{
if (teco_current_doc_must_undo())
undo__teco_interface_ssm(SCI_GOTOPOS,
teco_interface_ssm(SCI_GETCURRENTPOS, 0, 0), 0);
+
+ teco_interface_ssm(SCI_GOTOPOS, pos, 0);
+ teco_current_doc_set_dot(value);
+
return TRUE;
}
@@ -439,7 +424,6 @@ teco_qreg_dot_new(void)
{
static teco_qreg_vtable_t vtable = TECO_INIT_QREG(
.set_integer = teco_qreg_dot_set_integer,
- .undo_set_integer = teco_qreg_dot_undo_set_integer,
.get_integer = teco_qreg_dot_get_integer
);
@@ -639,13 +623,8 @@ teco_qreg_external_save(teco_qreg_t *qreg, const gchar *filename, GError **error
static gboolean
teco_qreg_bufferinfo_set_integer(teco_qreg_t *qreg, teco_int_t value, GError **error)
{
- return teco_ring_edit(value, error);
-}
-
-static gboolean
-teco_qreg_bufferinfo_undo_set_integer(teco_qreg_t *qreg, GError **error)
-{
- return teco_current_doc_undo_edit(error);
+ return teco_current_doc_undo_edit(error) &&
+ teco_ring_edit(value, error);
}
static gboolean
@@ -711,7 +690,6 @@ teco_qreg_bufferinfo_new(void)
{
static teco_qreg_vtable_t vtable = TECO_INIT_QREG_EXTERNAL(
.set_integer = teco_qreg_bufferinfo_set_integer,
- .undo_set_integer = teco_qreg_bufferinfo_undo_set_integer,
.get_integer = teco_qreg_bufferinfo_get_integer,
.set_string = teco_qreg_bufferinfo_set_string,
.undo_set_string = teco_qreg_bufferinfo_undo_set_string,
@@ -1268,8 +1246,7 @@ teco_qreg_stack_pop(teco_qreg_t *qreg, GError **error)
teco_qreg_stack_entry_t *entry;
entry = &g_array_index(teco_qreg_stack, teco_qreg_stack_entry_t, teco_qreg_stack->len-1);
- if (!qreg->vtable->undo_set_integer(qreg, error) ||
- !qreg->vtable->set_integer(qreg, entry->integer, error))
+ if (!qreg->vtable->set_integer(qreg, entry->integer, error))
return FALSE;
/* exchange document ownership between stack entry and Q-Register */