Use textEdit of completionItem unconditionally #207
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.
Identify the Bug
php-ide-serenata#527
Description of the Change
The description is explained in the commit. Please read that beforehand.
Give priority to the server's
CompletionItem.textEdit
rather than thereplacementPrefix
extracted in the client. These cases shouldn't be different in most cases, but not some. For example, in the case of a trigger character, the server may decide to replace it along with the prefix, but the client ignores it, resulting in wrong output, becausenewText
is created on the server and it is the server who actually knows where it must be placed.Alternate Designs
There are many alternatives actually. But the current change is minimal and it only affects if the server set the
CompletionItem.textEdit
.Possible Drawbacks
Possibly zero. If a package using this library get impacted by this, then the LSP server it uses is doing something wrong, so a hidden bug will be exposed. But this is a rare case, at least theoretically.
Verification Process
Tested with
php-ide-serenata
. The mentioned issue is fixed there (e.g. autocompletion of$this
leads to$$this
).Release Notes
CompletionItem.textEdit
of the server being ignored.