summaryrefslogtreecommitdiff
path: root/src/buffer_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/buffer_manager.cc')
-rw-r--r--src/buffer_manager.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/buffer_manager.cc b/src/buffer_manager.cc
index 03f2424e..bc88a752 100644
--- a/src/buffer_manager.cc
+++ b/src/buffer_manager.cc
@@ -45,6 +45,9 @@ Buffer* BufferManager::create_buffer(String name, Buffer::Flags flags,
auto& buffer = *m_buffers.front();
buffer.on_registered();
+ if (contains(m_buffer_trash, &buffer))
+ throw runtime_error("Buffer got removed during its creation");
+
return &buffer;
}
@@ -82,6 +85,15 @@ Buffer& BufferManager::get_buffer(StringView name)
return *res;
}
+Buffer& BufferManager::get_first_buffer()
+{
+ if (not contains_that(m_buffers, [](const std::unique_ptr<Buffer>& p)
+ { return not (p->flags() & Buffer::Flags::Debug); }))
+ create_buffer("*scratch*", Buffer::Flags::None);
+
+ return *m_buffers.front();
+}
+
void BufferManager::backup_modified_buffers()
{
for (auto& buf : m_buffers)