diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2013-02-25 00:49:27 +0100 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2013-02-25 00:49:27 +0100 |
commit | 18b1ac8cd1fe81af721ed903c23813f568630d9c (patch) | |
tree | 30d73ec98c47862411772fac4df7d4e95682fccc /src | |
parent | e3ea9032f6e3105d9c0a720db8bc413b4a3e016f (diff) | |
download | sciteco-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')
-rw-r--r-- | src/parser.cpp | 1 | ||||
-rw-r--r-- | src/qregisters.cpp | 13 | ||||
-rw-r--r-- | src/qregisters.h | 6 | ||||
-rwxr-xr-x | src/symbols-extract.tes | 2 |
4 files changed, 21 insertions, 1 deletions
diff --git a/src/parser.cpp b/src/parser.cpp index 729e718..7a534e6 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -1296,6 +1296,7 @@ StateECommand::StateECommand() : State() { transitions['\0'] = this; transitions['B'] = &States::editfile; + transitions['M'] = &States::macro_file; transitions['S'] = &States::scintilla_symbols; transitions['Q'] = &States::eqcommand; transitions['W'] = &States::savefile; 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 ®) 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 ®) throw (Error) { tecoInt from, len; diff --git a/src/qregisters.h b/src/qregisters.h index c212fc9..58451ed 100644 --- a/src/qregisters.h +++ b/src/qregisters.h @@ -380,6 +380,11 @@ private: State *got_register(QRegister ®) throw (Error, ReplaceCmdline); }; +class StateMacroFile : public StateExpectString { +private: + State *done(const gchar *str) throw (Error); +}; + class StateCopyToQReg : public StateExpectQReg { public: StateCopyToQReg() : StateExpectQReg(true) {} @@ -400,6 +405,7 @@ namespace States { extern StateSetQRegInteger setqreginteger; extern StateIncreaseQReg increaseqreg; extern StateMacro macro; + extern StateMacroFile macro_file; extern StateCopyToQReg copytoqreg; } diff --git a/src/symbols-extract.tes b/src/symbols-extract.tes index 6e09380..8a47ede 100755 --- a/src/symbols-extract.tes +++ b/src/symbols-extract.tes @@ -1,7 +1,7 @@ #!./sciteco-minimal -m ! ./symbols-extract.tes <input file> <output file> <prefix pattern list> <array name> ! -[.m EQ.mQ{$SCITECOPATH}/string.tes M.m ].m +EMQ{$SCITECOPATH}/string.tes ! read commandline arguments ! LR 0X#in 2LR 0X#ou 2LR 0X#pa 2LR 0X#na HK |