Make edit command work fine when running from an empty context

This way, the kind of context we get from a piped command allows
for opening a buffer and working with it directly.
This commit is contained in:
Maxime Coste 2017-12-12 18:22:05 +11:00
parent ce2c0e54f4
commit 4b06c09c68
2 changed files with 6 additions and 4 deletions

View File

@ -249,11 +249,13 @@ void edit(const ParametersParser& parser, Context& context, const ShellContext&)
buffer->flags() &= ~Buffer::Flags::NoHooks; buffer->flags() &= ~Buffer::Flags::NoHooks;
} }
Buffer* current_buffer = context.has_buffer() ? &context.buffer() : nullptr;
const size_t param_count = parser.positional_count(); const size_t param_count = parser.positional_count();
if (buffer != &context.buffer() or param_count > 1) if (current_buffer and (buffer != current_buffer or param_count > 1))
context.push_jump(); context.push_jump();
if (buffer != &context.buffer()) if (buffer != current_buffer)
context.change_buffer(*buffer); context.change_buffer(*buffer);
if (param_count > 1 and not parser[1].empty()) if (param_count > 1 and not parser[1].empty())

View File

@ -159,10 +159,10 @@ void JumpList::forget_buffer(Buffer& buffer)
void Context::change_buffer(Buffer& buffer) void Context::change_buffer(Buffer& buffer)
{ {
if (&buffer == &this->buffer()) if (has_buffer() and &buffer == &this->buffer())
return; return;
if (m_edition_level > 0) if (has_buffer() and m_edition_level > 0)
this->buffer().commit_undo_group(); this->buffer().commit_undo_group();
m_window.reset(); m_window.reset();