fix(folds): recompute fold boundaries on TODO state change #1078
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.
Summary
This PR fixes fold corruption that occurs when cycling TODO states on folded headlines. When a TODO state change triggers line insertions (CLOSED timestamps, notes) or removals, Neovim's fold boundaries become stale, causing visual glitches or incorrect fold behavior. The fix captures the fold state before modifications, recomputes folds via
zx, and restores the original fold state.Related Issues
Changes
recompute_folds()helper function that recomputes fold boundaries and restores current fold state_todo_change_state()recompute_folds()at all exit points (same-group transitions, done/undone transitions, repeater handling)Checklist
I confirm that I have:
Conventional Commits
specification (e.g.,
feat: add new feature,fix: correct bug,docs: update documentation).make test.