eclipse (plugin ) のHTML エディターのコード補完ポップアップにカスタム結果を追加したいのorg.eclipse.wst.html.ui
ですが、jar の plugin.xml ファイルには、スキーマがないため非推奨と思われる拡張ポイントが 1 つしか見つかりませんでした。とにかく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)私がここで間違ったことをしたのにうまくいかないという考えはありますか?
ありがとうございました!