This repository has been archived by the owner on Dec 15, 2022. It is now read-only.
Add checkpoints as a replacement for open-ended transactions #38
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Refs #39
The
beginTransaction
method is causing big problems because it allows transactions to be left open. Nested transactions also behave unpredictably. For example, we usebeginTransaction
andcommitTransaction
in vim-mode to group multiple changes in insert mode. This conflicts with our use ofbeginTransaction
andabortTransaction
in the autocomplete to clear away transient changes that occurred when user toggled through completions after the menu is dismissed.Checkpoints provide a much more controlled mechanism for addressing these two use cases. You can create a checkpoint at a desired state, then later either revert the buffer to the checkpoint (autocomplete) or group the changes since that checkpoint in a single transaction (vim-mode).