public void completeNestedCrossReference(CrossReference crossReference, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { Assignment assignment = (Assignment) crossReference.eContainer(); EReference reference = GrammarUtil.getReference(crossReference); if (reference != null) { String proposalText = "${" + assignment.getFeature() + ":CrossReference("+ reference.getEContainingClass().getName() + "." + reference.getName() +")}"; StyledString displayText = new StyledString("${", StyledString.DECORATIONS_STYLER) .append(assignment.getFeature()) .append(":CrossReference(", StyledString.DECORATIONS_STYLER) .append(reference.getEContainingClass().getName() + "." + reference.getName(), StyledString.COUNTER_STYLER) .append(")}", StyledString.DECORATIONS_STYLER) .append(" - Create a new template variable", StyledString.QUALIFIER_STYLER); ICompletionProposal proposal = createCompletionProposal(proposalText, displayText, null, context); if (proposal instanceof ConfigurableCompletionProposal) { ConfigurableCompletionProposal configurable = (ConfigurableCompletionProposal) proposal; configurable.setSelectionStart(configurable.getReplacementOffset() + 2); configurable.setSelectionLength(assignment.getFeature().length()); configurable.setAutoInsertable(false); configurable.setSimpleLinkedMode(context.getViewer(), '\t'); configurable.setPriority(configurable.getPriority() * 2); } acceptor.accept(proposal); } }