Use textEdit of completionItem unconditionally#207
Open
machitgarha wants to merge 1 commit intoatom-community:masterfrom
Open
Use textEdit of completionItem unconditionally#207machitgarha wants to merge 1 commit intoatom-community:masterfrom
machitgarha wants to merge 1 commit intoatom-community:masterfrom
Conversation
The server's CompletionItem.textEdit should always be respected, because in recent versions of the LSP, it is the server who should tell what to replace and what not. Before this change, a trigger character was always ignored, whether the server requested to replace it or not. This could be problematic in some cases. For instance, in PHP, you have a dollar sign beforeevery variable. If the server request to replace say `$th` with `$this` using a TextEdit interface, the client translates this to replacing `th` with `$this`, which results in a wrong `$$this` result.
Author
|
Yes, I realized it. As soon as I find time, I'll look into it. Thanks for your attention. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.textEditrather than thereplacementPrefixextracted 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, becausenewTextis 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$thisleads to$$this).Release Notes
CompletionItem.textEditof the server being ignored.