我不想创建自己的编辑器,但我想通过 Hook 编辑事件来扩展现有编辑器。
例如,每当文本或 xml 编辑器中的文本发生更改时,我都会收到回调并能够对更改使用react。
是否存在这样合适的扩展点?
最佳答案
您可以通过访问IEditorPart
、使用getAdapter(IDocument.class)
然后向此添加监听器来完成此操作...
但这确实是一个黑客......;-)
编辑:根据要求,这里有更多代码。
public void hookToEditor() {
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
if (page == null) return;
IEditorPart editor = page.getActiveEditor();
if (editor == null) return;
IDocument doc = (IDocument) editor.getAdapter(IDocument.class);
if (doc == null) return;
doc.addDocumentListener(new IDocumentListener() {
@Override
public void documentChanged(DocumentEvent event) {
// Do something
}
@Override
public void documentAboutToBeChanged(DocumentEvent event) {
// About to do something
}
});
}
请注意
- 获取页面的方法有很多 - 例如通过当前网站
- 获取编辑器部分的方法有很多 - 例如通过处理程序
- 许多编辑器没有嵌入文档 - 例如偏微分方程编辑器
关于eclipse - 如何在我自己的插件中 Hook Eclipse 编辑器事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6507937/