diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2016-10-11 00:45:05 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2016-10-11 00:45:05 +0100 |
| commit | 5440d31f995d9143e4f14a343a41aaab227ffbad (patch) | |
| tree | 44410e9292d6f4df2f58c67e748772676b633612 /src/buffer_manager.cc | |
| parent | 780a4605fa700874af7c9ed501d49c8e9722eac3 (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.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) |
