Save last pipe command to the '|' register, and use it for empty cmd

This commit is contained in:
Maxime Coste 2013-10-11 00:31:03 +01:00
parent 3c959cee99
commit 632e7e217e

View File

@ -264,6 +264,18 @@ void pipe(Context& context, int)
if (event != PromptEvent::Validate) if (event != PromptEvent::Validate)
return; return;
String real_cmd;
if (cmdline.empty())
real_cmd = RegisterManager::instance()['|'].values(context)[0];
else
{
RegisterManager::instance()['|'] = cmdline;
real_cmd = cmdline;
}
if (real_cmd.empty())
return;
Editor& editor = context.editor(); Editor& editor = context.editor();
std::vector<String> strings; std::vector<String> strings;
for (auto& sel : context.editor().selections()) for (auto& sel : context.editor().selections())
@ -272,7 +284,7 @@ void pipe(Context& context, int)
bool insert_eol = str.back() != '\n'; bool insert_eol = str.back() != '\n';
if (insert_eol) if (insert_eol)
str += '\n'; str += '\n';
str = ShellManager::instance().pipe(str, cmdline, context, str = ShellManager::instance().pipe(str, real_cmd, context,
{}, EnvVarMap{}); {}, EnvVarMap{});
if (insert_eol and str.back() == '\n') if (insert_eol and str.back() == '\n')
str = str.substr(0, str.length()-1); str = str.substr(0, str.length()-1);