summaryrefslogtreecommitdiff
path: root/src/buffer_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2018-04-05 10:31:41 +1000
committerMaxime Coste <mawww@kakoune.org>2018-04-05 10:31:41 +1000
commit21603983c52b6cdca0bf7fd0b200b1061811c789 (patch)
tree76896e288c18633741c3c9a7b091199749df8b78 /src/buffer_manager.cc
parentf018a29b588bf6e254b7d790530667f33d4ccf33 (diff)
Add new buffers at the back of the buffer list
This will be reverted if we discover why we were doing things the over way around. Fixes #1881
Diffstat (limited to 'src/buffer_manager.cc')
-rw-r--r--src/buffer_manager.cc13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/buffer_manager.cc b/src/buffer_manager.cc
index f9030b0a..66206fe0 100644
--- a/src/buffer_manager.cc
+++ b/src/buffer_manager.cc
@@ -36,15 +36,14 @@ Buffer* BufferManager::create_buffer(String name, Buffer::Flags flags,
throw runtime_error{"buffer name is already in use"};
}
- m_buffers.emplace(m_buffers.begin(),
- new Buffer{std::move(name), flags, data, fs_timestamp});
- auto& buffer = *m_buffers.front();
- buffer.on_registered();
+ m_buffers.push_back(std::make_unique<Buffer>(std::move(name), flags, data, fs_timestamp));
+ auto* buffer = m_buffers.back().get();
+ buffer->on_registered();
- if (contains(m_buffer_trash, &buffer))
+ if (contains(m_buffer_trash, buffer))
throw runtime_error{"Buffer got removed during its creation"};
- return &buffer;
+ return buffer;
}
void BufferManager::delete_buffer(Buffer& buffer)
@@ -86,7 +85,7 @@ Buffer& BufferManager::get_first_buffer()
if (all_of(m_buffers, [](auto& b) { return (b->flags() & Buffer::Flags::Debug); }))
create_buffer("*scratch*", Buffer::Flags::None);
- return *m_buffers.front();
+ return *m_buffers.back();
}
void BufferManager::backup_modified_buffers()