Do not save any registers by default in evaluate-commands
This commit is contained in:
parent
ec16969609
commit
5902c7b790
|
@ -15,8 +15,9 @@ evaluates its given parameters as if they were entered in the command prompt.
|
|||
By default, their execution happens within the context of the current client,
|
||||
and stops when the last key/command is reached, or an error is raised.
|
||||
|
||||
These two commands also save the following registers, who are then restored
|
||||
*execute-keys* also save the following registers, who are then restored
|
||||
when the commands have been executed: */*, *"*, *|*, *^*, *@*.
|
||||
*evaluate-commands* does not save any registers by default.
|
||||
(See <<registers#,`:doc registers`>>)
|
||||
|
||||
== Optional switches
|
||||
|
|
|
@ -1577,7 +1577,7 @@ const ParameterDesc context_wrap_params = {
|
|||
};
|
||||
|
||||
template<typename Func>
|
||||
void context_wrap(const ParametersParser& parser, Context& context, Func func)
|
||||
void context_wrap(const ParametersParser& parser, Context& context, StringView default_saved_regs, Func func)
|
||||
{
|
||||
if ((int)(bool)parser.get_switch("buffer") +
|
||||
(int)(bool)parser.get_switch("client") +
|
||||
|
@ -1601,7 +1601,7 @@ void context_wrap(const ParametersParser& parser, Context& context, Func func)
|
|||
});
|
||||
};
|
||||
Vector<decltype(make_register_restorer(0))> saved_registers;
|
||||
for (auto c : parser.get_switch("save-regs").value_or("/\"|^@"))
|
||||
for (auto c : parser.get_switch("save-regs").value_or(default_saved_regs))
|
||||
saved_registers.push_back(make_register_restorer(c));
|
||||
|
||||
if (auto bufnames = parser.get_switch("buffer"))
|
||||
|
@ -1728,7 +1728,7 @@ const CommandDesc exec_string_cmd = {
|
|||
CommandCompleter{},
|
||||
[](const ParametersParser& parser, Context& context, const ShellContext&)
|
||||
{
|
||||
context_wrap(parser, context, [](const ParametersParser& parser, Context& context) {
|
||||
context_wrap(parser, context, "/\"|^@", [](const ParametersParser& parser, Context& context) {
|
||||
KeyList keys;
|
||||
for (auto& param : parser)
|
||||
{
|
||||
|
@ -1752,7 +1752,7 @@ const CommandDesc eval_string_cmd = {
|
|||
CommandCompleter{},
|
||||
[](const ParametersParser& parser, Context& context, const ShellContext& shell_context)
|
||||
{
|
||||
context_wrap(parser, context, [&](const ParametersParser& parser, Context& context) {
|
||||
context_wrap(parser, context, {}, [&](const ParametersParser& parser, Context& context) {
|
||||
CommandManager::instance().execute(join(parser, ' ', false), context, shell_context);
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user