aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/qreg.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/qreg.c')
-rw-r--r--src/qreg.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/qreg.c b/src/qreg.c
index 559373c..9e19202 100644
--- a/src/qreg.c
+++ b/src/qreg.c
@@ -188,7 +188,9 @@ teco_qreg_plain_append_string(teco_qreg_t *qreg, const gchar *str, gsize len, GE
teco_doc_undo_edit(&teco_qreg_current->string);
teco_doc_undo_reset(&qreg->string);
- undo__teco_view_ssm(teco_qreg_view, SCI_UNDO, 0, 0);
+
+ sptr_t pos = teco_view_ssm(teco_qreg_view, SCI_GETCURRENTPOS, 0, 0);
+ undo__teco_view_ssm(teco_qreg_view, SCI_DELETERANGE, pos, len);
}
if (teco_qreg_current)
@@ -196,9 +198,7 @@ teco_qreg_plain_append_string(teco_qreg_t *qreg, const gchar *str, gsize len, GE
teco_doc_edit(&qreg->string, teco_default_codepage());
- teco_view_ssm(teco_qreg_view, SCI_BEGINUNDOACTION, 0, 0);
teco_view_ssm(teco_qreg_view, SCI_APPENDTEXT, len, (sptr_t)str);
- teco_view_ssm(teco_qreg_view, SCI_ENDUNDOACTION, 0, 0);
if (teco_qreg_current)
teco_doc_edit(&teco_qreg_current->string, 0);
@@ -469,12 +469,12 @@ teco_qreg_external_edit(teco_qreg_t *qreg, GError **error)
!qreg->vtable->get_string(qreg, &str.data, &str.len, NULL, error))
return FALSE;
- teco_view_ssm(teco_qreg_view, SCI_BEGINUNDOACTION, 0, 0);
+ teco_undo_view_insert(teco_qreg_view, 0,
+ teco_view_ssm(teco_qreg_view, SCI_GETLENGTH, 0, 0));
teco_view_ssm(teco_qreg_view, SCI_CLEARALL, 0, 0);
+ undo__teco_view_ssm(teco_qreg_view, SCI_CLEARALL, 0, 0);
teco_view_ssm(teco_qreg_view, SCI_ADDTEXT, str.len, (sptr_t)str.data);
- teco_view_ssm(teco_qreg_view, SCI_ENDUNDOACTION, 0, 0);
- undo__teco_view_ssm(teco_qreg_view, SCI_UNDO, 0, 0);
return TRUE;
}
@@ -586,12 +586,11 @@ teco_qreg_external_save(teco_qreg_t *qreg, const gchar *filename, GError **error
if (!qreg->vtable->get_string(qreg, &str.data, &str.len, NULL, error))
return FALSE;
- teco_view_ssm(teco_qreg_view, SCI_BEGINUNDOACTION, 0, 0);
+ teco_undo_view_insert(teco_qreg_view, 0,
+ teco_view_ssm(teco_qreg_view, SCI_GETLENGTH, 0, 0));
teco_view_ssm(teco_qreg_view, SCI_CLEARALL, 0, 0);
+ undo__teco_view_ssm(teco_qreg_view, SCI_CLEARALL, 0, 0);
teco_view_ssm(teco_qreg_view, SCI_ADDTEXT, str.len, (sptr_t)str.data);
- teco_view_ssm(teco_qreg_view, SCI_ENDUNDOACTION, 0, 0);
-
- undo__teco_view_ssm(teco_qreg_view, SCI_UNDO, 0, 0);
gboolean ret = teco_view_save(teco_qreg_view, filename, error);