Skip to content

Commit d5eb2db

Browse files
committed
Handle replaceStart/replaceEnd in completion proposal
Fixes microsoft#524 Ensures completion text can be appended by clients E.g. For `com.|` the completion proposal has: completion: com.sun.jndi.ldap.pool completionLocation: 3 replaceEnd: 4 replaceStart: 0 `insertText` will be `sun.jndi.ldap.pool` For `List.|` the completion proposal has: completion: of() completionLocation: 4 replaceStart: 5 replaceEnd: 5 `insertText` will be `of()`
1 parent 7303dcd commit d5eb2db

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

com.microsoft.java.debug.plugin/src/main/java/com/microsoft/java/debug/plugin/internal/CompletionProposalRequestor.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,16 @@ public CompletionItem toCompletionItem(CompletionProposal proposal, int index) {
160160
data.put(CompletionResolveHandler.DATA_FIELD_REQUEST_ID, String.valueOf(response.getId()));
161161
data.put(CompletionResolveHandler.DATA_FIELD_PROPOSAL_ID, String.valueOf(index));
162162
$.setData(data);
163+
163164
this.descriptionProvider.updateDescription(proposal, $);
164165
// Use fully qualified name as needed.
165-
$.setInsertText(String.valueOf(proposal.getCompletion()));
166+
String insertText = String.valueOf(proposal.getCompletion());
167+
int prefix = proposal.getReplaceEnd() - proposal.getReplaceStart();
168+
if (prefix > 0) {
169+
$.setInsertText(insertText.substring(prefix));
170+
} else {
171+
$.setInsertText(insertText);
172+
}
166173
adjustCompleteItem($);
167174
$.setSortText(SortTextHelper.computeSortText(proposal));
168175
return $;

0 commit comments

Comments
 (0)