diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2014-11-16 23:29:34 +0100 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2014-11-16 23:34:25 +0100 |
commit | 52db2f4e20d7c544d3040af1f359dd3365ca204b (patch) | |
tree | 5f1d9ae0e9673215a2cb99965943e4ed93e50850 /src/ring.cpp | |
parent | 38fcf6d15cdf09591e7d7a142ad724164875e433 (diff) | |
download | sciteco-52db2f4e20d7c544d3040af1f359dd3365ca204b.tar.gz |
cleaned up Scintilla document "updating"
* allowed me to remove some obscure global functions and methods like
QRegister::update_string().
* Document updating is concentrated in qregisters.cpp now
* also fixes some bugs introduced earlier, like undo tokens being
generated for non-undo registers (resulting in segfaults on rubout)
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 */ |