CompletionItem of completions response always have `start = 0` and text prefix inclusion is mixed
還沒有人認領這個 Issue。
評估
研究方向
先使用報告中的 JDK 21 範例,追蹤 Java 偵錯伺服器對 completions 請求和 CompletionItem 回應的 DAP 補全處理。使用 nvim-dap 等用戶端重現 List. 和 com. 的情況,然後確認 start 和 text 遵循 DAP 規範,且選取每個候選項都會插入預期的補全,不會重複其前綴。
由索引模型根據 Issue 內容生成。
描述
I noticed recently that in nvim-dap, if you complete com. and select an entry you get com.com... inserted, so today I took a closer look and noticed that the responses from java-debug are somewhat odd - and I think incorrect.
With a client that specified columnsStartAt1 = true, and a completions payload like:
{
frameId = <frameId>,
text = "List.",
column = 6
}
The responses include:
}, {
label = "of(E e1, E e2, E e3, E e4) : List<E>",
number = 0,
sortText = "999999179",
start = 0,
text = "of()",
type = "function"
}, {
The specification says:
/**
- Start position (within the
textattribute of thecompletionsrequest)- where the completion text is added. The position is measured in UTF-16 code
- units and the client capability
columnsStartAt1determines whether it is- 0- or 1-based. If the start position is omitted the text is added at the
- location specified by the
columnattribute of thecompletionsrequest.
*/
start?: number;
The expected result for the user is to have List.of() if the completion candidate is selected. Now, start=0 is already odd given the columnsStartAt1, so a possible interpretation in the client is that it's absent, and that the client should just append .of()
This is kinda what I did in nvim-dap so far, and it works for the List.of case, and also for variables, but with a payload like:
{
column = 5,
frameId = <frameId>,
text = "com."
}
I get responses like:
}, {
label = "com.sun.tools.example",
number = 0,
sortText = "999999183",
start = 0,
text = "com.sun.tools.example",
type = "module"
}, {
Opposed to the List. result, here text includes the prefix com. and it's again start=0. This led to com.com.sun.tools.example
I suspect vscode does some kind of prefix matching on the client side again, so this isn't noticable there?
As far as I can tell, based on the specification the current behavior is wrong.
I used JDK 21 in my tests - in case it matters.
I can also provide some sample project if needed - but I tried to use examples that should behave similar with only the JDK as dependency
- 主要語言
- Java
- 星號
- 409
- 分支
- 204
- 平均合併
- 1 天 13 小時
- 30 天內合併 PR
- 4
貢獻指南
這個儲存庫沒有索引到貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
microsoft/java-debug 的其他 Issue
-
ai-triaged bug
難度 4/5 3-5 天 新手友好度 35/100
microsoft/java-debug#611 · 2 則留言 ·
-
ai-triaged enhancement
難度 4/5 3-5 天 新手友好度 35/100
microsoft/java-debug#608 · 3 則留言 ·
-
ai-triaged question
難度 5/5 一週以上 新手友好度 30/100
microsoft/java-debug#597 · 1 則留言 ·
-
ai-triaged bug
難度 4/5 3-5 天 新手友好度 25/100
microsoft/java-debug#588 · 1 則留言 ·
-
ai-triaged question
難度 2/5 1-3 小時 新手友好度 35/100
microsoft/java-debug#582 · 1 則留言 ·
查看 microsoft/java-debug 的全部 Issue
相似的 Issue
-
難度 2/5 1-3 小時 新手友好度 65/100
-
bug
難度 2/5 1-3 小時 新手友好度 75/100
-
難度 2/5 1-3 小時 新手友好度 75/100
elastic/gradle-plugins#157 ·
-
難度 2/5 1-3 小時 新手友好度 75/100
cryptomator/hub#497 ·
-
難度 2/5 1-3 小時 新手友好度 75/100
johanhaleby/occurrent#1120 ·