#ifndef command_manager_hh_INCLUDED #define command_manager_hh_INCLUDED #include #include #include #include #include "exception.hh" #include "completion.hh" namespace Kakoune { struct wrong_argument_count : runtime_error { wrong_argument_count() : runtime_error("wrong argument count") {} }; typedef std::vector CommandParameters; typedef std::function Command; class CommandManager { public: void execute(const std::string& command_line); Completions complete(const std::string& command_line, size_t cursor_pos); void register_command(const std::string& command_name, Command command); void register_command(const std::vector& command_names, Command command); private: std::unordered_map m_commands; }; } #endif // command_manager_hh_INCLUDED