aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--parser.cpp1
-rw-r--r--qbuffers.cpp23
-rw-r--r--qbuffers.h6
3 files changed, 30 insertions, 0 deletions
diff --git a/parser.cpp b/parser.cpp
index 92e6ac7..49ae1d6 100644
--- a/parser.cpp
+++ b/parser.cpp
@@ -449,6 +449,7 @@ StateStart::StateStart() : State()
transitions['['] = &States::pushqreg;
transitions[']'] = &States::popqreg;
+ transitions['G'] = &States::getqregstring;
transitions['Q'] = &States::getqreginteger;
transitions['U'] = &States::setqreginteger;
transitions['%'] = &States::increaseqreg;
diff --git a/qbuffers.cpp b/qbuffers.cpp
index a3b4651..26034f2 100644
--- a/qbuffers.cpp
+++ b/qbuffers.cpp
@@ -31,6 +31,7 @@ namespace States {
StateLoadQReg loadqreg;
StateCtlUCommand ctlucommand;
StateSetQRegString setqregstring;
+ StateGetQRegString getqregstring;
StateGetQRegInteger getqreginteger;
StateSetQRegInteger setqreginteger;
StateIncreaseQReg increaseqreg;
@@ -834,6 +835,28 @@ StateSetQRegString::done(const gchar *str) throw (Error)
}
State *
+StateGetQRegString::got_register(QRegister *reg) throw (Error)
+{
+ gchar *str;
+
+ BEGIN_EXEC(&States::start);
+
+ str = reg->get_string();
+ if (*str) {
+ interface.ssm(SCI_BEGINUNDOACTION);
+ interface.ssm(SCI_ADDTEXT, strlen(str), (sptr_t)str);
+ interface.ssm(SCI_SCROLLCARET);
+ interface.ssm(SCI_ENDUNDOACTION);
+ ring.dirtify();
+
+ undo.push_msg(SCI_UNDO);
+ }
+ g_free(str);
+
+ return &States::start;
+}
+
+State *
StateGetQRegInteger::got_register(QRegister *reg) throw (Error)
{
BEGIN_EXEC(&States::start);
diff --git a/qbuffers.h b/qbuffers.h
index 19a95ce..ace3358 100644
--- a/qbuffers.h
+++ b/qbuffers.h
@@ -452,6 +452,11 @@ private:
State *done(const gchar *str) throw (Error);
};
+class StateGetQRegString : public StateExpectQReg {
+private:
+ State *got_register(QRegister *reg) throw (Error);
+};
+
class StateGetQRegInteger : public StateExpectQReg {
private:
State *got_register(QRegister *reg) throw (Error);
@@ -487,6 +492,7 @@ namespace States {
extern StateLoadQReg loadqreg;
extern StateCtlUCommand ctlucommand;
extern StateSetQRegString setqregstring;
+ extern StateGetQRegString getqregstring;
extern StateGetQRegInteger getqreginteger;
extern StateSetQRegInteger setqreginteger;
extern StateIncreaseQReg increaseqreg;