aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/qregisters.cpp
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2013-02-25 00:49:27 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2013-02-25 00:49:27 +0100
commit18b1ac8cd1fe81af721ed903c23813f568630d9c (patch)
tree30d73ec98c47862411772fac4df7d4e95682fccc /src/qregisters.cpp
parente3ea9032f6e3105d9c0a720db8bc413b4a3e016f (diff)
downloadsciteco-18b1ac8cd1fe81af721ed903c23813f568630d9c.tar.gz
EM...$ command to read macro from file and execute immediately (just like "M")
* useful for using macro libraries
Diffstat (limited to 'src/qregisters.cpp')
-rw-r--r--src/qregisters.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/qregisters.cpp b/src/qregisters.cpp
index 17be046..e65365d 100644
--- a/src/qregisters.cpp
+++ b/src/qregisters.cpp
@@ -49,6 +49,7 @@ namespace States {
StateSetQRegInteger setqreginteger;
StateIncreaseQReg increaseqreg;
StateMacro macro;
+ StateMacroFile macro_file;
StateCopyToQReg copytoqreg;
}
@@ -591,6 +592,18 @@ StateMacro::got_register(QRegister &reg) throw (Error, ReplaceCmdline)
}
State *
+StateMacroFile::done(const gchar *str) throw (Error)
+{
+ BEGIN_EXEC(&States::start);
+
+ /* don't create new local Q-Registers if colon modifier is given */
+ if (!Execute::file(str, !eval_colon()))
+ throw Error("Cannot execute macro from file \"%s\"", str);
+
+ return &States::start;
+}
+
+State *
StateCopyToQReg::got_register(QRegister &reg) throw (Error)
{
tecoInt from, len;