diff --git a/src/Context.cpp b/src/Context.cpp index d45e157c4..640c75d4c 100644 --- a/src/Context.cpp +++ b/src/Context.cpp @@ -159,29 +159,37 @@ int Context::run () } // Dump all debug messages. + hooks.trigger ("pre-debug"); if (config.getBoolean ("debug")) foreach (d, debugMessages) if (config.getBoolean ("color") || config.getBoolean ("_forcecolor")) std::cout << colorizeDebug (*d) << std::endl; else std::cout << *d << std::endl; + hooks.trigger ("post-debug"); // Dump all headers. + hooks.trigger ("pre-header"); foreach (h, headers) if (config.getBoolean ("color") || config.getBoolean ("_forcecolor")) std::cout << colorizeHeader (*h) << std::endl; else std::cout << *h << std::endl; + hooks.trigger ("post-header"); // Dump the report output. + hooks.trigger ("pre-output"); std::cout << output; + hooks.trigger ("post-output"); // Dump all footnotes. + hooks.trigger ("pre-footnote"); foreach (f, footnotes) if (config.getBoolean ("color") || config.getBoolean ("_forcecolor")) std::cout << colorizeFootnote (*f) << std::endl; else std::cout << *f << std::endl; + hooks.trigger ("post-footnote"); hooks.trigger ("pre-exit"); return rc; diff --git a/src/Hooks.cpp b/src/Hooks.cpp index 90715df58..72ef8d840 100644 --- a/src/Hooks.cpp +++ b/src/Hooks.cpp @@ -127,9 +127,16 @@ bool Hooks::trigger (const std::string& event) //////////////////////////////////////////////////////////////////////////////// bool Hooks::eventType (const std::string& event, std::string& type) { - if (event == "post-start" || - event == "pre-exit" || - event == "pre-dispatch" || event == "post-dispatch") + if (event == "post-start" || + event == "pre-exit" || + event == "pre-debug" || event == "post-debug" || + event == "pre-header" || event == "post-header" || + event == "pre-footnote" || event == "post-footnote" || + event == "pre-output" || event == "post-output" || + event == "pre-dispatch" || event == "post-dispatch" || + event == "pre-gc" || event == "post-gc" || + event == "pre-undo" || event == "post-undo" || + event == "pre-add-command" || event == "post-add-command") { type = "program"; return true; diff --git a/src/TDB.cpp b/src/TDB.cpp index f2c8d4a4a..49794aca1 100644 --- a/src/TDB.cpp +++ b/src/TDB.cpp @@ -343,6 +343,7 @@ void TDB::update (const Task& task) int TDB::commit () { Timer t ("TDB::commit"); + context.hooks.trigger ("pre-gc"); int quantity = mNew.size () + mModified.size (); @@ -362,6 +363,7 @@ int TDB::commit () writeUndo (*task, mLocations[0].undo); mNew.clear (); + context.hooks.trigger ("post-gc"); return quantity; } @@ -408,6 +410,7 @@ int TDB::commit () mNew.clear (); } + context.hooks.trigger ("post-gc"); return quantity; } @@ -506,6 +509,7 @@ int TDB::nextId () //////////////////////////////////////////////////////////////////////////////// void TDB::undo () { + context.hooks.trigger ("pre-undo"); Directory location (context.config.get ("data.location")); std::string undoFile = location.data + "/undo.data"; @@ -670,6 +674,7 @@ void TDB::undo () // Rewrite files. File::write (pendingFile, p); File::write (undoFile, u); + context.hooks.trigger ("post-undo"); return; } } @@ -708,6 +713,7 @@ void TDB::undo () } std::cout << "Undo complete." << std::endl; + context.hooks.trigger ("post-undo"); return; } } diff --git a/src/command.cpp b/src/command.cpp index 8c6b6bdeb..e325c7962 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -52,6 +52,7 @@ extern Context context; //////////////////////////////////////////////////////////////////////////////// int handleAdd (std::string &outs) { + context.hooks.trigger ("pre-add-command"); std::stringstream out; context.task.set ("uuid", uuid ()); @@ -112,6 +113,7 @@ int handleAdd (std::string &outs) context.tdb.unlock (); outs = out.str (); + context.hooks.trigger ("post-add-command"); return 0; }