UltiSnips tracks changes in buffer and apply user changes only on
CursorMoved event. So, if placeholder is replaced completely by using
<BS>, CursorMoved is not triggered and internal snippet representation
is not updated, causing placeholder boundaries go out-of-sync.
Fixed by triggering text objects sync forcefully if change without
cursor move is detected.
Breaking undo achieved through re-setting &undolevel:
Setting the value of 'undolevels' also breaks undo. Even when the new
value is equal to the old value.
[:h :undoj]