From 5440d31f995d9143e4f14a343a41aaab227ffbad Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Tue, 11 Oct 2016 00:45:05 +0100 Subject: Only create a default *scratch* when we dont have any non debug buffers Fixes #852 Closes #856 --- src/buffer_manager.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/buffer_manager.cc') 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& 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) -- cgit v1.2.3