eclipse - 如何在我自己的插件中 Hook Eclipse 编辑器事件?

标签 eclipse plugins

我不想创建自己的编辑器,但我想通过 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/

相关文章:

perl - 如何使用 EPIC 在 Eclipse 中运行 Perl 测试用例?

eclipse - 如何在“打开资源”对话框 (Ctrl+Shift+R) 中过滤 *.class?

jenkins - 更新 Jenkins 插件的问题

python - sublime text 2 扩展中的用户输入

php - 如何将WordPress中插件功能生成的数据显示到管理面板中

eclipse - Subclipse中使用WinMerge的参数是什么?

java - glassfish 更新后缺少 javax.enterprise.context 包

java - IClassFile 注释

golang 从插件中导出所有符号

javascript - 创建一个带有默认值的 jquery 插件作为插件的扩展有什么区别?