mirror of
https://github.com/mawww/kakoune.git
synced 2024-12-25 12:36:11 +03:00
'exec' and (resurected) 'eval' commands can take a '-client' parameter
This commit is contained in:
parent
cf39835805
commit
ce6e864772
@ -706,17 +706,38 @@ void exec_keys(const KeyList& keys, Context& context)
|
|||||||
|
|
||||||
void exec_string(const CommandParameters& params, Context& context)
|
void exec_string(const CommandParameters& params, Context& context)
|
||||||
{
|
{
|
||||||
if (params.empty())
|
ParametersParser parser(params, { { "client", true } });
|
||||||
|
if (parser.positional_count() == 0)
|
||||||
throw wrong_argument_count();
|
throw wrong_argument_count();
|
||||||
|
|
||||||
KeyList keys;
|
KeyList keys;
|
||||||
for (auto& param : params)
|
for (auto& param : parser)
|
||||||
{
|
{
|
||||||
KeyList param_keys = parse_keys(param);
|
KeyList param_keys = parse_keys(param);
|
||||||
keys.insert(keys.end(), param_keys.begin(), param_keys.end());
|
keys.insert(keys.end(), param_keys.begin(), param_keys.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
exec_keys(keys, context);
|
|
||||||
|
Context& keys_context = parser.has_option("client") ?
|
||||||
|
ClientManager::instance().get_client_context(parser.option_value("client"))
|
||||||
|
: context;
|
||||||
|
exec_keys(keys, keys_context);
|
||||||
|
}
|
||||||
|
|
||||||
|
void eval_string(const CommandParameters& params, Context& context)
|
||||||
|
{
|
||||||
|
ParametersParser parser(params, { { "client", true } });
|
||||||
|
if (parser.positional_count() == 0)
|
||||||
|
throw wrong_argument_count();
|
||||||
|
|
||||||
|
String command;
|
||||||
|
for (auto& param : parser)
|
||||||
|
command += param + " ";
|
||||||
|
|
||||||
|
Context& command_context = parser.has_option("client") ?
|
||||||
|
ClientManager::instance().get_client_context(parser.option_value("client"))
|
||||||
|
: context;
|
||||||
|
CommandManager::instance().execute(command, command_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
void menu(const CommandParameters& params, Context& context)
|
void menu(const CommandParameters& params, Context& context)
|
||||||
@ -868,6 +889,7 @@ void register_commands()
|
|||||||
cm.register_command("source", exec_commands_in_file, filename_completer);
|
cm.register_command("source", exec_commands_in_file, filename_completer);
|
||||||
|
|
||||||
cm.register_command("exec", exec_string);
|
cm.register_command("exec", exec_string);
|
||||||
|
cm.register_command("eval", eval_string);
|
||||||
cm.register_command("menu", menu);
|
cm.register_command("menu", menu);
|
||||||
cm.register_command("try", try_catch);
|
cm.register_command("try", try_catch);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user