src: Add a commands debug flag

This commit allows setting the `commands` flag to the `debug` option, in
order to have the engine write on the *debug* buffer the commands that are
being executed, along with their arguments.
This commit is contained in:
Frank LENORMAND 2017-06-17 11:27:07 +03:00
parent f9c48237a7
commit 8d24768d5d
2 changed files with 20 additions and 7 deletions

View File

@ -9,6 +9,7 @@
#include "utils.hh" #include "utils.hh"
#include "optional.hh" #include "optional.hh"
#include "containers.hh" #include "containers.hh"
#include "buffer_utils.hh"
#include <algorithm> #include <algorithm>
@ -443,6 +444,16 @@ void CommandManager::execute_single_command(CommandParameters params,
if (command_it == m_commands.end()) if (command_it == m_commands.end())
throw command_not_found(params[0]); throw command_not_found(params[0]);
const DebugFlags debug_flags = context.options()["debug"].get<DebugFlags>();
if (debug_flags & DebugFlags::Commands)
{
String repr_parameters;
for (auto repr_param : param_view)
repr_parameters += " " + repr_param;
write_to_debug_buffer(format("command {}{}", params[0], repr_parameters));
}
try try
{ {
ParametersParser parameter_parser(param_view, ParametersParser parameter_parser(param_view,

View File

@ -41,17 +41,19 @@ enum class DebugFlags
Shell = 1 << 1, Shell = 1 << 1,
Profile = 1 << 2, Profile = 1 << 2,
Keys = 1 << 3, Keys = 1 << 3,
Commands = 1 << 4,
}; };
constexpr bool with_bit_ops(Meta::Type<DebugFlags>) { return true; } constexpr bool with_bit_ops(Meta::Type<DebugFlags>) { return true; }
constexpr Array<EnumDesc<DebugFlags>, 4> enum_desc(Meta::Type<DebugFlags>) constexpr Array<EnumDesc<DebugFlags>, 5> enum_desc(Meta::Type<DebugFlags>)
{ {
return { { return { {
{ DebugFlags::Hooks, "hooks" }, { DebugFlags::Hooks, "hooks" },
{ DebugFlags::Shell, "shell" }, { DebugFlags::Shell, "shell" },
{ DebugFlags::Profile, "profile" }, { DebugFlags::Profile, "profile" },
{ DebugFlags::Keys, "keys" } { DebugFlags::Keys, "keys" },
{ DebugFlags::Commands, "commands" },
} }; } };
} }