VIM-1824: surround - remove whitespace with closing bracket #1007
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.
Context:
In vim surround extension closing brackets (
}, ], )
) should remove whitespace when usingcs
movement.Example:
{ example }
cs{}
{example}
This doesn't work currently. The text is left unchanged.
Solution:
The bug was because brackets were replaced with a string from
SURROUND_PAIRS
map, which does not have any context about removing characters.Inspired from VSCode's VIM plugin1, I have introduced new class
SurroundPair
that will carry this context about the need to trim characters.Disclaimer:
I have never written in
Kotlin
so solution may be not use best practices, though at least this PR seems to fix the problem and tests are passing.Ticket:
Footnotes
https://github.com/VSCodeVim/Vim/blob/04fe42aa815f638af14e4cf4c92e88109242c3e6/src/actions/plugins/surround.ts#L455 ↩