Only commit undo groups when buffer was modified

This fixes an interaction with kak-lsp that would trigger undo group
commit when setting a buffer option value.
This commit is contained in:
Maxime Coste 2018-09-12 20:02:57 +10:00
parent beb5d00992
commit d3be78cca2
6 changed files with 12 additions and 1 deletions

View File

@ -211,8 +211,12 @@ Vector<String> Context::selections_content() const
void Context::begin_edition()
{
if (m_edition_level >= 0)
{
if (m_edition_level == 0)
m_edition_timestamp = buffer().timestamp();
++m_edition_level;
}
}
void Context::end_edition()
{
@ -220,7 +224,8 @@ void Context::end_edition()
return;
kak_assert(m_edition_level != 0);
if (m_edition_level == 1)
if (m_edition_level == 1 and
buffer().timestamp() != m_edition_timestamp)
buffer().commit_undo_group();
--m_edition_level;

View File

@ -134,6 +134,7 @@ private:
void begin_edition();
void end_edition();
int m_edition_level = 0;
size_t m_edition_timestamp = 0;
friend struct ScopedEdition;

View File

@ -0,0 +1 @@
Abarbaz<esc>u

View File

@ -0,0 +1 @@
foo

View File

@ -0,0 +1 @@
foo

View File

@ -0,0 +1,2 @@
decl int my_option
hook global InsertChar r %{ eval -buffer %val{buffile} %{ eval "set buffer my_option 1" } }