CompletionProposalRequestor collector = new CompletionProposalRequestor(unit, offset); collector.setAllowsRequiredProposals(CompletionProposal.FIELD_REF, CompletionProposal.TYPE_REF, true); collector.setAllowsRequiredProposals(CompletionProposal.FIELD_REF, CompletionProposal.TYPE_IMPORT, true); collector.setAllowsRequiredProposals(CompletionProposal.FIELD_REF, CompletionProposal.FIELD_IMPORT, true); collector.setAllowsRequiredProposals(CompletionProposal.METHOD_REF, CompletionProposal.TYPE_REF, true); collector.setAllowsRequiredProposals(CompletionProposal.METHOD_REF, CompletionProposal.TYPE_IMPORT, true); collector.setAllowsRequiredProposals(CompletionProposal.METHOD_REF, CompletionProposal.METHOD_IMPORT, true); collector.setAllowsRequiredProposals(CompletionProposal.CONSTRUCTOR_INVOCATION, CompletionProposal.TYPE_REF, true); collector.setAllowsRequiredProposals(CompletionProposal.ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION, CompletionProposal.TYPE_REF, true); collector.setAllowsRequiredProposals(CompletionProposal.ANONYMOUS_CLASS_DECLARATION, CompletionProposal.TYPE_REF, true); collector.setAllowsRequiredProposals(CompletionProposal.TYPE_REF, CompletionProposal.TYPE_REF, true); collector.setFavoriteReferences(getFavoriteStaticMembers()); try { unit.codeComplete(offset, collector, subMonitor); proposals.addAll(collector.getCompletionItems()); proposals.addAll(SnippetCompletionProposal.getSnippets(unit, collector.getContext(), subMonitor)); proposals.addAll(new JavadocCompletionProposal().getProposals(unit, offset, collector, subMonitor)); } catch (OperationCanceledException e) {
public CompletionProposalRequestor(ICompilationUnit aUnit, int offset) { this.unit = aUnit; response = new CompletionResponse(); response.setOffset(offset); fIsTestCodeExcluded = !isTestSource(unit.getJavaProject(), unit); setRequireExtendedContext(true); }
if (type != null && type.getCompilationUnit() != null) { final int offset = JsonRpcHelpers.toOffset(type.getCompilationUnit().getBuffer(), frame.location().lineNumber(), 0); CompletionProposalRequestor collector = new CompletionProposalRequestor(type.getCompilationUnit(), offset); collector.setAllowsRequiredProposals(CompletionProposal.FIELD_REF, CompletionProposal.TYPE_REF, true); collector.setAllowsRequiredProposals(CompletionProposal.FIELD_REF, CompletionProposal.TYPE_IMPORT, true); collector.setAllowsRequiredProposals(CompletionProposal.FIELD_REF, CompletionProposal.FIELD_IMPORT, true); collector.setAllowsRequiredProposals(CompletionProposal.METHOD_REF, CompletionProposal.TYPE_REF, true); collector.setAllowsRequiredProposals(CompletionProposal.METHOD_REF, CompletionProposal.TYPE_IMPORT, true); collector.setAllowsRequiredProposals(CompletionProposal.METHOD_REF, CompletionProposal.METHOD_IMPORT, true); collector.setAllowsRequiredProposals(CompletionProposal.CONSTRUCTOR_INVOCATION, CompletionProposal.TYPE_REF, true); collector.setAllowsRequiredProposals(CompletionProposal.ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION, CompletionProposal.TYPE_REF, true); collector.setAllowsRequiredProposals(CompletionProposal.ANONYMOUS_CLASS_DECLARATION, CompletionProposal.TYPE_REF, true); collector.setAllowsRequiredProposals(CompletionProposal.TYPE_REF, CompletionProposal.TYPE_REF, true); List<org.eclipse.lsp4j.CompletionItem> items = collector.getCompletionItems();
@Override public void accept(CompletionProposal proposal) { if (!isIgnored(proposal.getKind())) { if (proposal.getKind() == CompletionProposal.POTENTIAL_METHOD_DECLARATION) { acceptPotentialMethodDeclaration(proposal); } else { if (proposal.getKind() == CompletionProposal.PACKAGE_REF && unit.getParent() != null && String.valueOf(proposal.getCompletion()).equals(unit.getParent().getElementName())) { // Hacky way to boost relevance of current package, for package completions, until // https://bugs.eclipse.org/518140 is fixed proposal.setRelevance(proposal.getRelevance() + 1); } proposals.add(proposal); } } }
@Override public void setIgnored(int completionProposalKind, boolean ignore) { super.setIgnored(completionProposalKind, ignore); if (completionProposalKind == CompletionProposal.METHOD_DECLARATION && !ignore) { setRequireExtendedContext(true); } }
public CompletionItem toCompletionItem(CompletionProposal proposal, int index) { final CompletionItem $ = new CompletionItem(); $.setKind(mapKind(proposal.getKind())); Map<String, String> data = new HashMap<>(); // append data field so that resolve request can use it. data.put(CompletionResolveHandler.DATA_FIELD_URI, JDTUtils.toURI(unit)); data.put(CompletionResolveHandler.DATA_FIELD_REQUEST_ID,String.valueOf(response.getId())); data.put(CompletionResolveHandler.DATA_FIELD_PROPOSAL_ID,String.valueOf(index)); $.setData(data); this.descriptionProvider.updateDescription(proposal, $); $.setSortText(SortTextHelper.computeSortText(proposal)); return $; }
return result; String text = collector.getContext().getToken() == null ? "" : new String(collector.getContext().getToken()); StringBuilder buf = new StringBuilder(text); IRegion prefix = findPrefixRange(d, line);