tags:

views:

406

answers:

2

I'm trying to add content assist to my editor. I've added

    public IContentAssistant getContentAssistant(ISourceViewer sv) {
    ContentAssistant ca = new ContentAssistant();
    IContentAssistProcessor pr = new TagCompletionProcessor();
    ca.setContentAssistProcessor(pr, XMLPartitionScanner.XML_TAG);
    ca.setContentAssistProcessor(pr, IDocument.DEFAULT_CONTENT_TYPE);
    return ca;
}

to editor configuration, then made completion processor class:

public class TagCompletionProcessor implements IContentAssistProcessor {
private ITypedRegion wordRegion;
private String currentWord;
private SmartTreeSet tags;
public TagCompletionProcessor() {
 tags = new SmartTreeSet();
 //filling tags skipped
}
@Override
public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer,
  int offset) {
 System.out.println("compute");
 wordRegion = viewer.getDocument().getDocumentPartitioner().getPartition(offset);
    try {
  int offs = wordRegion.getOffset();
  int len = wordRegion.getLength();
  currentWord = viewer.getDocument().get(offs, len);
  return tags.getProposals(currentWord.toLowerCase(), offs, len);
 } catch (BadLocationException e) {
  return null;
 }
}
@Override
public IContextInformation[] computeContextInformation(ITextViewer viewer,
  int offset) {
 return null;
}
@Override
public char[] getCompletionProposalAutoActivationCharacters() {
 return new char[] {'<'};
}
@Override
public char[] getContextInformationAutoActivationCharacters() {
 return null;
}
@Override
public IContextInformationValidator getContextInformationValidator() {
 return null;
}
@Override
public String getErrorMessage() {
 return "No tags found";
}

}

... but it's not working. Init goes normal, but auto-activation does not working and when I'm pressing ctrl-space (I've added org.eclipse.ui.edit.text.contentAssist.proposals command to Bindings ext point) empty list appearing (also it's not near cursor, but in some constant place). What am I doing wrong?

A: 

Hi,

If your document implements IDocumentExtension3, than you have to set the partitioning of your assistant..

ca.setDocumentPartitioning(MyPartitionScanner.MyPartitioning);

Hope this help

Martin Lazar
A: 

Hello!

You should register your action in the editor and substitute the default one. Here is the an example how to do it with Content Assist action.

http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/editors_actions.htm

related questions