diff options
Diffstat (limited to 'src/command_manager.cc')
| -rw-r--r-- | src/command_manager.cc | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/command_manager.cc b/src/command_manager.cc index cbe2a1cb..7c3606a7 100644 --- a/src/command_manager.cc +++ b/src/command_manager.cc @@ -57,7 +57,8 @@ struct command_not_found : runtime_error : runtime_error(command + " : no such command") {} }; -void CommandManager::execute(const std::string& command_line) +void CommandManager::execute(const std::string& command_line, + const Context& context) { TokenList tokens = split(command_line); if (tokens.empty()) @@ -78,7 +79,18 @@ void CommandManager::execute(const std::string& command_line) it->second - it->first)); } - command_it->second.command(params); + command_it->second.command(params, context); +} + +void CommandManager::execute(const std::string& command, + const CommandParameters& params, + const Context& context) +{ + auto command_it = m_commands.find(command); + if (command_it == m_commands.end()) + throw command_not_found(command); + + command_it->second.command(params, context); } Completions CommandManager::complete(const std::string& command_line, size_t cursor_pos) |
