From f259af9326b4e2140f856f1651eaeb0d74537621 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Sun, 15 Jan 2012 03:02:08 +0000 Subject: CommandManager: add flags support and IgnoreSemiColons flag commands are now registred with flags, and the IgnoreSemiColons flag permit to specify a command which needs all the parameters on the line, bypassing the command sequence operator ';'. the hook command is tagged as such. --- src/command_manager.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/command_manager.cc') diff --git a/src/command_manager.cc b/src/command_manager.cc index 973e95de..33815be4 100644 --- a/src/command_manager.cc +++ b/src/command_manager.cc @@ -9,16 +9,18 @@ namespace Kakoune { void CommandManager::register_command(const std::string& command_name, Command command, + unsigned flags, const CommandCompleter& completer) { - m_commands[command_name] = CommandAndCompleter { command, completer }; + m_commands[command_name] = CommandDescriptor { command, flags, completer }; } void CommandManager::register_command(const std::vector& command_names, Command command, + unsigned flags, const CommandCompleter& completer) { for (auto command_name : command_names) - register_command(command_name, command, completer); + register_command(command_name, command, flags, completer); } typedef std::vector> TokenList; @@ -97,6 +99,9 @@ void CommandManager::execute(const CommandParameters& params, if (command_it == m_commands.end()) throw command_not_found(*begin); + if (command_it->second.flags & IgnoreSemiColons) + end = params.end(); + command_it->second.command(CommandParameters(begin + 1, end), context); } -- cgit v1.2.3