diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/qregisters.cpp | 22 | ||||
-rw-r--r-- | src/qregisters.h | 9 | ||||
-rw-r--r-- | src/ring.h | 5 |
3 files changed, 23 insertions, 13 deletions
diff --git a/src/qregisters.cpp b/src/qregisters.cpp index 24ca904..846a5a4 100644 --- a/src/qregisters.cpp +++ b/src/qregisters.cpp @@ -229,16 +229,24 @@ QRegister::load(const gchar *filename) } tecoInt -QRegisterBufferInfo::get_integer(void) +QRegisterBufferInfo::set_integer(tecoInt v) { - tecoInt id = 1; + if (!ring.edit(v)) + throw Error("Invalid buffer id %" TECO_INTEGER_FORMAT, v); - for (Buffer *buffer = ring.first(); - buffer != ring.current; - buffer = buffer->next()) - id++; + return v; +} - return id; +void +QRegisterBufferInfo::undo_set_integer(void) +{ + current_doc_undo_edit(); +} + +tecoInt +QRegisterBufferInfo::get_integer(void) +{ + return ring.get_id(); } gchar * diff --git a/src/qregisters.h b/src/qregisters.h index cf2c644..9a7618b 100644 --- a/src/qregisters.h +++ b/src/qregisters.h @@ -146,12 +146,9 @@ class QRegisterBufferInfo : public QRegister { public: QRegisterBufferInfo() : QRegister("*") {} - tecoInt - set_integer(tecoInt v) - { - return v; - } - void undo_set_integer(void) {} + /* setting "*" is equivalent to nEB */ + tecoInt set_integer(tecoInt v); + void undo_set_integer(void); tecoInt get_integer(void); @@ -187,6 +187,11 @@ public: } tecoInt get_id(Buffer *buffer); + inline tecoInt + get_id(void) + { + return get_id(current); + } Buffer *find(const gchar *filename); Buffer *find(tecoInt id); |