Do not allow changing buffer when the context is editing

This commit is contained in:
Maxime Coste 2014-01-06 20:07:08 +00:00
parent aadbd390c7
commit 9455303a1e
2 changed files with 9 additions and 3 deletions

View File

@ -159,6 +159,8 @@ void Context::forget_jumps_to_buffer(Buffer& buffer)
void Context::change_buffer(Buffer& buffer)
{
if (m_edition_level > 0)
throw runtime_error("the current buffer is still being edited");
m_window.reset();
if (has_client())
client().change_buffer(buffer);
@ -192,12 +194,16 @@ std::vector<String> Context::selections_content() const
void Context::begin_edition()
{
if (m_edition_level >= 0)
++m_edition_level;
}
void Context::end_edition()
{
kak_assert(m_edition_level > 0);
if (m_edition_level < 0)
return;
kak_assert(m_edition_level != 0);
if (m_edition_level == 1)
buffer().commit_undo_group();

View File

@ -72,7 +72,7 @@ public:
void set_name(String name) { m_name = std::move(name); }
bool is_editing() const { return m_edition_level!= 0; }
void disable_undo_handling() { ++m_edition_level; }
void disable_undo_handling() { m_edition_level = -1; }
private:
void begin_edition();
void end_edition();