Set completion item's text edit if optional replacement span and insert text are present #1579
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.
Fixes #1568.
As per my comment on the issue, the problem happens because in LSP, if an
editRangeis present in the completion response (i.e. we set a defaulteditRangeto be used for all completion items), then an item'sinsertTextis ignored. This is in line with the behavior when you specifytextEdits in individual items:insertTextis also ignored in that case.Ignoring
insertTextmeant the client would use the item's label, e.g.name?, instead of theinsertText'sname.We may get rid of this problem in the future if instead of appending
?in the item's label directly, we use the item'slabelDetails.But I want to fix the bug right away, and (1) not all clients support
labelDetails, and (2) I'd like to have snippet completions implemented before figuring out the rightlabelDetailsbehavior, because snippet completions also uselabelDetails.