private void appendReplacementString(StringBuilder buffer, CompletionProposal proposal) { if (!hasArgumentList(proposal)) { String str = proposal.getKind() == CompletionProposal.TYPE_REF ? computeJavaTypeReplacementString(proposal) : String.valueOf(proposal.getCompletion()); if (client.isCompletionSnippetsSupported()) { str = CompletionUtils.sanitizeCompletion(str); } buffer.append(str); return; } // we're inserting a method plus the argument list - respect formatter preferences appendMethodNameReplacement(buffer, proposal); final boolean addParen = client.isCompletionSnippetsSupported(); if(addParen) { buffer.append(LPAREN); } if (hasParameters(proposal)) { appendGuessingCompletion(buffer, proposal); } if(addParen){ buffer.append(RPAREN); // add semicolons only if there are parentheses if (canAutomaticallyAppendSemicolon(proposal)) { buffer.append(SEMICOLON); } } if(proposal.getKind() == CompletionProposal.METHOD_DECLARATION){ appendBody(buffer); } }
private org.eclipse.lsp4j.TextEdit toRequiredTypeEdit(CompletionProposal typeProposal, char trigger, boolean canUseDiamond) { appendReplacementString(buffer, typeProposal); Range range = toReplacementRange(typeProposal); return new org.eclipse.lsp4j.TextEdit(range, buffer.toString()); if (!shouldProposeGenerics(project)){ Range range = toReplacementRange(typeProposal); return new org.eclipse.lsp4j.TextEdit(range, buffer.toString()); Range range = toReplacementRange(typeProposal); return new org.eclipse.lsp4j.TextEdit(range, buffer.toString()); onlyAppendArguments= false; if (onlyAppendArguments || shouldAppendArguments(typeProposal, trigger)) { String[] typeArguments = computeTypeArgumentProposals(typeProposal); if(typeArguments.length > 0){ if (canUseDiamond){ buffer.append("<>"); //$NON-NLS-1$ } else { appendParameterList(buffer,typeArguments, onlyAppendArguments); Range range = toReplacementRange(typeProposal); return new org.eclipse.lsp4j.TextEdit(range, buffer.toString());
if (isSupportingRequiredProposals(proposal)) { CompletionProposal[] requiredProposals= proposal.getRequiredProposals(); if (requiredProposals != null) { case CompletionProposal.METHOD_IMPORT: case CompletionProposal.FIELD_IMPORT: appendImportProposal(completionBuffer, requiredProposal, proposal.getKind()); break; case CompletionProposal.TYPE_REF: org.eclipse.lsp4j.TextEdit edit = toRequiredTypeEdit(requiredProposal, trigger, proposal.canUseDiamond(context)); if (proposal.getKind() == CompletionProposal.CONSTRUCTOR_INVOCATION || proposal.getKind() == CompletionProposal.ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION || proposal.getKind() == CompletionProposal.ANONYMOUS_CLASS_DECLARATION) { range = toReplacementRange(proposal); appendMethodOverrideReplacement(completionBuffer, proposal); } else if (proposal.getKind() == CompletionProposal.POTENTIAL_METHOD_DECLARATION && proposal instanceof GetterSetterCompletionProposal) { appendMethodPotentialReplacement(completionBuffer, (GetterSetterCompletionProposal) proposal); } else if (proposal.getKind() == CompletionProposal.ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION || proposal.getKind() == CompletionProposal.ANONYMOUS_CLASS_DECLARATION) { appendAnonymousClass(completionBuffer, proposal, range); } else { appendReplacementString(completionBuffer, proposal); addImports(additionalTextEdits); if(!additionalTextEdits.isEmpty()){ item.setAdditionalTextEdits(additionalTextEdits);
throw new IllegalStateException(NLS.bind("Unable to match Compilation Unit from {0} ", uri)); CompletionProposalReplacementProvider proposalProvider = new CompletionProposalReplacementProvider(unit, completionResponse.getContext(), completionResponse.getOffset(), this.manager.getClientPreferences()); proposalProvider.updateReplacement(completionResponse.getProposals().get(proposalId), param, '\0'); if (monitor.isCanceled()) { param.setData(null);