aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/qregisters.cpp22
-rw-r--r--src/qregisters.h9
-rw-r--r--src/ring.h5
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);
diff --git a/src/ring.h b/src/ring.h
index 5dc3a37..7aa4f27 100644
--- a/src/ring.h
+++ b/src/ring.h
@@ -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);