Eclipse RCP Content Assist 不适用于自动激活的角色
Eclipse RCP Content Assist not working with auto activated characters
我定义了我自己的编辑器并且有这样的完成建议
public IContentAssistant getContentAssistant(ISourceViewer sv) {
ContentAssistant ca = new ContentAssistant();
IContentAssistProcessor pr = new TagCompletionProcessor();
ca.setContentAssistProcessor(pr, IDocument.DEFAULT_CONTENT_TYPE);
return ca;
}
@Override
public char[] getCompletionProposalAutoActivationCharacters() {
String str = "._abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
return str.toCharArray();
}
所以当我按 ctrl-space 输入时它会起作用,但我希望它应该总是在输入上述任何字符时触发 computeCompletionProposals
。
<extension
point="org.eclipse.ui.editors">
<editor
id="testingpluginproject.editors.XMLEditor"
name="Sample XML Editor"
icon="icons/sample.png"
extensions="xxml"
class="testingpluginproject.editors.XMLEditor"
contributorClass="org.eclipse.ui.texteditor.BasicTextEditorActionContributor">
</editor>
</extension>
所以我错过了什么?
您必须调用 ContentAssistant
enableAutoActivation
方法来启用自动激活:
ca.enableAutoActivation(true);
您可能还想看看实现 IContentAssistProcessorExtension
而不仅仅是 IContentAssistProcessor
,因为它提供了更好的 isCompletionProposalAutoActivation
方法。
我定义了我自己的编辑器并且有这样的完成建议
public IContentAssistant getContentAssistant(ISourceViewer sv) {
ContentAssistant ca = new ContentAssistant();
IContentAssistProcessor pr = new TagCompletionProcessor();
ca.setContentAssistProcessor(pr, IDocument.DEFAULT_CONTENT_TYPE);
return ca;
}
@Override
public char[] getCompletionProposalAutoActivationCharacters() {
String str = "._abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
return str.toCharArray();
}
所以当我按 ctrl-space 输入时它会起作用,但我希望它应该总是在输入上述任何字符时触发 computeCompletionProposals
。
<extension
point="org.eclipse.ui.editors">
<editor
id="testingpluginproject.editors.XMLEditor"
name="Sample XML Editor"
icon="icons/sample.png"
extensions="xxml"
class="testingpluginproject.editors.XMLEditor"
contributorClass="org.eclipse.ui.texteditor.BasicTextEditorActionContributor">
</editor>
</extension>
所以我错过了什么?
您必须调用 ContentAssistant
enableAutoActivation
方法来启用自动激活:
ca.enableAutoActivation(true);
您可能还想看看实现 IContentAssistProcessorExtension
而不仅仅是 IContentAssistProcessor
,因为它提供了更好的 isCompletionProposalAutoActivation
方法。