0

我想在 Eclipse 的HTML 编辑器(插件org.eclipse.wst.html.ui)弹出的代码完成中添加一些自定义结果,但是在 jar 的 plugin.xml 文件中,我只找到了一个扩展点,由于没有架构,它似乎已被弃用无论如何都在jar中的文件。

<extension-point id="deviceProfileEntryProvider" 
          name="%Device_Profile_Entry_Provider_Extension.name"     
          schema="schema/deviceProfileEntryProvider.exsd"/>

1) 是否可以将此类功能添加到 HTML 编辑器?

假设不可能做到这一点,我在 jar 中“破解”并在 plugin.XML 中添加了以下几行(添加了我自己的新提案计算机)

 <proposalComputer activate="false" categoryId="org.eclipse.wst.html.ui.proposalCategory.htmlTemplates"
      class="org.eclipse.wst.html.ui.internal.contentassist.Custom"
      id="org.eclipse.wst.html.ui.proposalComputer.htmlTemplates">
   <contentType id="org.eclipse.wst.html.core.htmlsource">
      <partitionType id="org.eclipse.wst.html.HTML_DEFAULT"/>
   </contentType>
 </proposalComputer>

这是 xml 文件中已存在的提案计算机的复制粘贴。我只更改了类以映射到我的自定义类(org.eclipse.wst.html.ui.internal.contentassist.Custom)

然后我创建了一个名为 的类Custom,对其进行编译并将其添加到 jar 中(在由包名称表示的相应目录中)

package org.eclipse.wst.html.ui.internal.contentassist;
import java.util.*;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.internal.ui.text.javadoc.HTMLTagCompletionProposalComputer;
import org.eclipse.jdt.ui.text.java.ContentAssistInvocationContext;
import org.eclipse.jface.text.contentassist.CompletionProposal;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.jface.text.contentassist.IContextInformation;

public class Custom extends HTMLTagCompletionProposalComputer{

@Override
public List<ICompletionProposal> computeCompletionProposals(
        ContentAssistInvocationContext context, IProgressMonitor monitor) {
    return Arrays.asList(new ICompletionProposal[]{
                new CompletionProposal("Asd",context.getInvocationOffset(),0,0),
                new CompletionProposal("sdf",context.getInvocationOffset(),0,0)}
            );
}

@Override
public List<IContextInformation> computeContextInformation(
        ContentAssistInvocationContext context, IProgressMonitor monitor) {
    return null; 
}

@Override
public String getErrorMessage() { return super.getErrorMessage(); }

@Override
public void sessionEnded() {super.sessionEnded();}


@Override
public void sessionStarted() {super.sessionStarted();}

}

...但不幸的是,它没有用。

2)任何想法我在这里做错了什么并且它不起作用?

谢谢!

4

0 回答 0