我正在尝试制作一个插件,以将注释作为标记添加到Javascript编辑器(org.eclipse.wst.jsdt.internal.ui.javaeditor)。
我从教程中可以看到Eclipse确实允许将标记附加到IResources:
<extension
id="org.eclipse.test.marker"
name="org.eclipse.test.marker"
point="org.eclipse.core.resources.markers">
<super
type="org.eclipse.core.resources.textmarker">
</super>
<persistent
value="true">
</persistent>
</extension>
这些标记也可以附加到注释,从而为它们添加外观(org.eclipse.ui.editors.markerAnnotationSpecification)。
这在突出显示和更改编辑器中的文本外观时效果很好。 我的问题是,是否有任何标记也可以在不实际修改文档的情况下向编辑器添加文本注释?
作为替代方案,我正在考虑以编程方式添加评论并在其上附加标记,但是这种方法存在多个缺点。我想知道Eclipse是否会有自动化的选择:
public void addCommentMarker(String commentText, int Offset) throws CoreException {
//Get the active editor
IEditorPart editorPart=PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
if (!(editorPart instanceof AbstractTextEditor))
return;
ITextEditor editor = (ITextEditor)editorPart;
//Add comment programmatically to the file:
IDocumentProvider dp = editor.getDocumentProvider();
IDocument doc = dp.getDocument(editor.getEditorInput());
try {
doc.replace(Offset, 0, "//"+commentText); //$NON-NLS-1$
} catch (BadLocationException e) {
e.printStackTrace();
}
//Create a marker to monitor the new comment:
IFile file=getFileFromEditorInput(editor.getEditorInput());
IMarker m=file.createMarker(IMarker.TEXT);
//Marker begins when the comment starts:
m.setAttribute(IMarker.CHAR_START, Offset);
//Marker ends when the comment ends:
m.setAttribute(IMarker.CHAR_END, Offset+commentText.length()+2);
}
正如Nitind所述,我的目的是创建类似标签的功能。例如,在下面的屏幕截图中,为了能够以编程方式添加带有常量值(// 20)的标签。
由于我是Eclipse的新手,所以不确定Eclipse是否提供替代方法来以编程方式管理此标记。