Eclipse RCP Content Assist 无法使用自动激活的字符

Posted

技术标签:

【中文标题】Eclipse RCP Content Assist 无法使用自动激活的字符【英文标题】:Eclipse RCP Content Assist not working with auto activated characters 【发布时间】:2022-01-13 12:19:44 【问题描述】:

我定义了自己的编辑器,并有这样的完成建议

    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>

那么我错过了什么?

【问题讨论】:

【参考方案1】:

您必须调用ContentAssistant enableAutoActivation 方法来启用自动激活:

ca.enableAutoActivation(true);

您可能还想考虑实现IContentAssistProcessorExtension 而不仅仅是IContentAssistProcessor,因为它提供了更好的isCompletionProposalAutoActivation 方法。

【讨论】:

以上是关于Eclipse RCP Content Assist 无法使用自动激活的字符的主要内容,如果未能解决你的问题,请参考以下文章

构建支持 Eclipse 项目的 RCP

Sleak (SWT & RCP) : 设备没有跟踪资源分配 (eclipse 4.3)

我想推荐一本关于 Eclipse 的富客户端平台 (RCP) 的书

Java Eclipse RCP 探查器

如何从 Eclipse RCP 到“主机”Eclipse IDE 进行通信

Eclipse RCP 插件目标平台