diff options
-rw-r--r-- | parser.cpp | 1 | ||||
-rw-r--r-- | qbuffers.cpp | 23 | ||||
-rw-r--r-- | qbuffers.h | 6 |
3 files changed, 30 insertions, 0 deletions
@@ -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); @@ -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; |