summaryrefslogtreecommitdiff
path: root/src/buffer_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2016-10-11 00:45:05 +0100
committerMaxime Coste <frrrwww@gmail.com>2016-10-11 00:45:05 +0100
commit5440d31f995d9143e4f14a343a41aaab227ffbad (patch)
tree44410e9292d6f4df2f58c67e748772676b633612 /src/buffer_manager.cc
parent780a4605fa700874af7c9ed501d49c8e9722eac3 (diff)
Only create a default *scratch* when we dont have any non debug buffers
Fixes #852 Closes #856
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)