Реакция редактора выглядит правильно, потому что есть изменение вне org.eclipse.jface.text.IDocument, которое привязано к экземпляру редактора.
Правильный подход будет заключаться в изменении не содержимого файла,но экземпляр "model", представляющий содержимое файла, что-то вроде IJavaElement
для JDT.
Также вы можете попытаться манипулировать содержимым документа напрямую (требуется полировка для производства):
IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
for (IWorkbenchWindow window : windows) {
IWorkbenchPage[] pages = window.getPages();
for (IWorkbenchPage page : pages) {
IEditorReference[] editorReferences = page.getEditorReferences();
for (IEditorReference editorReference : editorReferences) {
IEditorPart editorPart = editorReference.getEditor(false/*do not restore*/);
IEditorInput editorInput = editorPart.getEditorInput();
//skip editors that are not related
if (inputAffected(editorInput)) {
continue;
}
if (editorPart instanceof AbstractTextEditor) {
AbstractTextEditor textEditor = (AbstractTextEditor) editorPart;
IDocument document = textEditor.getDocumentProvider().getDocument(editorInput);
document.set(content);
}
}
}
}
Честно говоря, я не понимаю сценарий, который вы пытаетесь охватить, возможно, есть лучшие способы сделать это.