diff options
Diffstat (limited to 'src/ring.cpp')
-rw-r--r-- | src/ring.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/ring.cpp b/src/ring.cpp index 443b22d..492845f 100644 --- a/src/ring.cpp +++ b/src/ring.cpp @@ -37,6 +37,7 @@ #include "undo.h" #include "parser.h" #include "expressions.h" +#include "qregisters.h" #include "ring.h" #include "error.h" @@ -229,8 +230,6 @@ Ring::edit(tecoInt id) if (!buffer) return false; - current_doc_update(); - QRegisters::current = NULL; current = buffer; buffer->edit(); @@ -245,8 +244,6 @@ Ring::edit(const gchar *filename) { Buffer *buffer = find(filename); - current_doc_update(); - QRegisters::current = NULL; if (buffer) { current = buffer; @@ -572,20 +569,14 @@ get_absolute_path(const gchar *path) void StateEditFile::do_edit(const gchar *filename) { - if (ring.current) - ring.undo_edit(); - else /* QRegisters::current != NULL */ - QRegisters::undo_edit(); + current_doc_undo_edit(); ring.edit(filename); } void StateEditFile::do_edit(tecoInt id) { - if (ring.current) - ring.undo_edit(); - else /* QRegisters::current != NULL */ - QRegisters::undo_edit(); + current_doc_undo_edit(); if (!ring.edit(id)) throw Error("Invalid buffer id %" TECO_INTEGER_FORMAT, id); } @@ -752,4 +743,13 @@ StateSaveFile::done(const gchar *str) return &States::start; } +void +current_doc_undo_edit(void) +{ + if (ring.current) + ring.undo_edit(); + else if (QRegisters::current) + undo.push_var(QRegisters::current)->undo_edit(); +} + } /* namespace SciTECO */ |