diff options
Diffstat (limited to 'src/buffer_manager.cc')
| -rw-r--r-- | src/buffer_manager.cc | 12 |
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) |
