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:
parent
beb5d00992
commit
d3be78cca2
|
@ -211,8 +211,12 @@ Vector<String> Context::selections_content() const
|
||||||
void Context::begin_edition()
|
void Context::begin_edition()
|
||||||
{
|
{
|
||||||
if (m_edition_level >= 0)
|
if (m_edition_level >= 0)
|
||||||
|
{
|
||||||
|
if (m_edition_level == 0)
|
||||||
|
m_edition_timestamp = buffer().timestamp();
|
||||||
++m_edition_level;
|
++m_edition_level;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Context::end_edition()
|
void Context::end_edition()
|
||||||
{
|
{
|
||||||
|
@ -220,7 +224,8 @@ void Context::end_edition()
|
||||||
return;
|
return;
|
||||||
|
|
||||||
kak_assert(m_edition_level != 0);
|
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();
|
buffer().commit_undo_group();
|
||||||
|
|
||||||
--m_edition_level;
|
--m_edition_level;
|
||||||
|
|
|
@ -134,6 +134,7 @@ private:
|
||||||
void begin_edition();
|
void begin_edition();
|
||||||
void end_edition();
|
void end_edition();
|
||||||
int m_edition_level = 0;
|
int m_edition_level = 0;
|
||||||
|
size_t m_edition_timestamp = 0;
|
||||||
|
|
||||||
friend struct ScopedEdition;
|
friend struct ScopedEdition;
|
||||||
|
|
||||||
|
|
1
test/regression/0-spurious-undo-group-on-external/cmd
Normal file
1
test/regression/0-spurious-undo-group-on-external/cmd
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Abarbaz<esc>u
|
1
test/regression/0-spurious-undo-group-on-external/in
Normal file
1
test/regression/0-spurious-undo-group-on-external/in
Normal file
|
@ -0,0 +1 @@
|
||||||
|
foo
|
1
test/regression/0-spurious-undo-group-on-external/out
Normal file
1
test/regression/0-spurious-undo-group-on-external/out
Normal file
|
@ -0,0 +1 @@
|
||||||
|
foo
|
2
test/regression/0-spurious-undo-group-on-external/rc
Normal file
2
test/regression/0-spurious-undo-group-on-external/rc
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
decl int my_option
|
||||||
|
hook global InsertChar r %{ eval -buffer %val{buffile} %{ eval "set buffer my_option 1" } }
|
Loading…
Reference in New Issue
Block a user