我想在 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)任何想法我在这里做错了什么并且它不起作用?
谢谢!