aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ring.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ring.cpp')
-rw-r--r--src/ring.cpp24
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 */