Add a -verbatim switch to evaluate-commands for perfect forwarding
-verbatim will disable argument parsing in evaluate-commands, making it possible to forward a single command to a different context without triggering a reparsing of the arguments. Fixes -try-client support in grep.kak Closes #3153
This commit is contained in:
parent
362021c1d3
commit
a49ae162f4
|
@ -12,6 +12,9 @@ released versions.
|
|||
`InsertBegin`, `InsertEnd`, `NormalBegin` and `NormalEnd`
|
||||
were removed.
|
||||
|
||||
* `-verbatim` switch in `evaluate-commands` for perfect command
|
||||
forwarding to another context.
|
||||
|
||||
== Kakoune 2019.07.01
|
||||
|
||||
* Re-organized bundled script files directory hierarchy.
|
||||
|
|
|
@ -55,6 +55,10 @@ when the commands have been executed: */*, *"*, *|*, *^*, *@*.
|
|||
disable hook execution while executing the keys/commands
|
||||
(See <<hooks#disabling-hooks,`:doc hooks`>>)
|
||||
|
||||
*-verbatim*::
|
||||
do not reparse and split positional arguments. Forward them
|
||||
exactly as given to the `evaluate-commands` command.
|
||||
|
||||
== execute-keys specific switches
|
||||
|
||||
*-with-maps*::
|
||||
|
|
|
@ -44,7 +44,7 @@ define-command -hidden grep-jump %{
|
|||
try %{
|
||||
execute-keys '<a-x>s^((?:\w:)?[^:]+):(\d+):(\d+)?<ret>'
|
||||
set-option buffer grep_current_line %val{cursor_line}
|
||||
evaluate-commands -try-client %opt{jumpclient} %{ edit -existing %reg{1} %reg{2} %reg{3} }
|
||||
evaluate-commands -try-client %opt{jumpclient} -verbatim -- edit -existing %reg{1} %reg{2} %reg{3}
|
||||
try %{ focus %opt{jumpclient} }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -100,6 +100,12 @@ public:
|
|||
void execute(StringView command_line, Context& context,
|
||||
const ShellContext& shell_context = ShellContext{});
|
||||
|
||||
void execute_single_command(CommandParameters params,
|
||||
Context& context,
|
||||
const ShellContext& shell_context,
|
||||
BufferCoord pos = {});
|
||||
|
||||
|
||||
Completions complete(const Context& context, CompletionFlags flags,
|
||||
StringView command_line, ByteCount cursor_pos);
|
||||
|
||||
|
@ -132,11 +138,6 @@ public:
|
|||
Completions complete_module_name(StringView query) const;
|
||||
|
||||
private:
|
||||
void execute_single_command(CommandParameters params,
|
||||
Context& context,
|
||||
const ShellContext& shell_context,
|
||||
BufferCoord pos);
|
||||
|
||||
struct Command
|
||||
{
|
||||
CommandFunc func;
|
||||
|
|
|
@ -1910,7 +1910,10 @@ const CommandDesc eval_string_cmd = {
|
|||
"evaluate-commands",
|
||||
"eval",
|
||||
"evaluate-commands [<switches>] <commands>...: execute commands as if entered by user",
|
||||
make_context_wrap_params<1>({{{"no-hooks", { false, "disable hooks while executing commands" }}}}),
|
||||
make_context_wrap_params<2>({{
|
||||
{"no-hooks", { false, "disable hooks while executing commands" }},
|
||||
{"verbatim", { false, "do not reparse argument" }}
|
||||
}}),
|
||||
CommandFlags::None,
|
||||
CommandHelper{},
|
||||
CommandCompleter{},
|
||||
|
@ -1920,6 +1923,9 @@ const CommandDesc eval_string_cmd = {
|
|||
const bool no_hooks = context.hooks_disabled() or parser.get_switch("no-hooks");
|
||||
ScopedSetBool disable_hoooks(context.hooks_disabled(), no_hooks);
|
||||
|
||||
if (parser.get_switch("verbatim"))
|
||||
CommandManager::instance().execute_single_command(parser | gather<Vector>(), context, shell_context);
|
||||
else
|
||||
CommandManager::instance().execute(join(parser, ' ', false), context, shell_context);
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user