Multicursor reformatting (2) #2751
Draft
+678
−199
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.
What has changed?
This branch experimentally restores multi-cursor reformatting with additional enhancements to formatPosition's cursor repositioning.
Issue 2748 Case 1 (The cursor jumped to the next line when it had been in whitespace that the reformatter revised) is resolved by making a distinct whitespace edit for each line instead of combining spaces and newlines into a single edit.
Issue 2748 Case 2 (The cursor, at the beginning of a blank line, did not move to the indentation tab-stop):
Reformatting between two top-level forms, or performing a structural edit that changed a top-level form's delimiters, reformatted the whole document using an interface that did not specify a reference point. That occasioned a few other adjustments on this branch:
Fixes #2748
My Calva PR Checklist
I have:
dev
branch. (Or have specific reasons to target some other branch.)published
. (Sorry for the nagging.)[Unreleased]
entry inCHANGELOG.md
, linking the issue(s) that the PR is addressing.npm run prettier-format
)npm run eslint
before creating your PR, or runnpm run eslint-watch
to eslint as you go).Ping @PEZ, @bpringe, @corasaurus-hex, @Cyrik