Request for clarification regarding `CompletionItem`.
grokys opened this issue · 2 comments
The spec says:
A completion item provides additional means to influence filtering and sorting. They are expressed by either creating a CompletionItem with a insertText or with a textEdit. The two modes differ as follows:
Completion item provides an insertText / label without a text edit: in the model the client should filter against what the user has already typed using the word boundary rules of the language (e.g. resolving the word under the cursor position). The reason for this mode is that it makes it extremely easy for a server to implement a basic completion list and get it filtered on the client.
Completion Item with text edits: in this mode the server tells the client that it actually knows what it is doing. If you create a completion item with a text edit at the current cursor position no word guessing takes place and no filtering should happen. This mode can be combined with a sort text and filter text to customize two things. If the text edit is a replace edit then the range denotes the word used for filtering. If the replace changes the text it most likely makes sense to specify a filter text to be used.
I would like clarification around two seemingly conflicting statements in the "Completion Item with text edits" paragraph:
If you create a completion item with a text edit at the current cursor position no word guessing takes place and no filtering should happen.
This mode can be combined with a sort text and filter text to customize two things. If the text edit is a replace edit then the range denotes the word used for filtering.
The first quote says "no filtering should happen" but the second talks about customizing filtering. Should client-side filtering happen here or not?
My understanding is that insertText
doubles as filterText
. With a textEdit
based completion the client has nothing to filter by unless the server also provides a filterText
.
With that said, I understand your confusion and would also like to see a clarification on this (to verify whether my reading is correct)
If you create a completion item with a text edit at the current cursor position no word guessing takes place and no filtering should happen.
This should be
If you create a completion item with a text edit at the current cursor position no word guessing takes place and no automatic filtering (like the one with an insertText
) should happen.