我正在制作一个带有文本替换组件的插件,例如Eclipse的QuickFix。我所使用的偏移量(从marker.getAttribute中提取)在进行更改时是错误的,但未保存。我知道这只是因为标记的功能。
将标记添加到资源时,它们会将Annotation附加到文档的注释模型。此注释会跟踪未保存的更改,因此我更适合从其位置而不是标记中提取偏移量。
给定一个标记,有没有办法找到与之相关的注释?
答案 0 :(得分:0)
注释不会直接跟踪其位置。该位置由注释模型类(IAnnotationModel
)维护。
您可以从编辑器ISourceViewer
IAnnotatorModel model = viewer.getAnnotationModel();
然后,您必须在模型注释中搜索所需的标记注释,并从模型中获取其位置:
Iterator<?> iter = model.getAnnotationIterator();
while (iter.hasNext()) {
Object object = iter.next();
if (object instanceof MarkerAnnotation) {
MarkerAnnotation annotation = (MarkerAnnotation)object;
IMarker marker = annotation.getMarker();
// TODO check this is the marker you are interested in
Position position = model.getPosition(annotation);
}
}