2

我想知道如何在 Eclipse UI 中创建和实现自定义超链接——如果可能的话,我不想制作一个完整的自定义编辑器——只需添加到我当前的 ctrl+单击一系列字符的能力和自动导航到匹配的参考。

我对制作 Eclipse 插件并不是非常熟悉,但我猜这将是必需的。

我擅长正则表达式,如果有帮助的话。

我想可以使用某种声明性语法(与此模式匹配的文本链接到这些文件中看起来像这样的任何行,或其他东西)

我想做的两件事是根据一个函数找到一个 jsp 文件,该函数返回一个与其中一个 jsp 文件匹配的字符串,或者在源代码中找到一个或多个使用特定名称的 JavaScript 函数(这些看起来像可能比声明性语法支持的更复杂)

如果已经有一个或多个插件允许我声明这样的“规则”,那也可以,但是关于该主题的一个或多个教程会很棒 - 谢谢!

4

3 回答 3

2

你想实现一个超链接检测器。您必须创建一个实现该扩展点的 Eclipse 插件。该扩展点的“类”属性需要指向实现IHyperlinkDetector的类。您最好的选择可能是扩展AbstractHyperlinkDetector

IBM还有一个小教程。小心,它是从 2006 年开始的,从那时起可能会有一些小的 API 更改。

于 2012-10-16T06:11:29.500 回答
1

对于谁像我一样发现这个但仍然没有让它工作:

使用扩展点HyperlinkDetectors为您定义时,请CustomTextEditor确保有您的CustomSourceViewerConfiguration扩展TextSourceViewerConfiguration,而不仅仅是SourceViewerConfiguration.

因为这是包含HyperlinkDetectors通过扩展点配置的注册表调用的类。要激活它们,这个类需要一个IPreferenceStore所以你还必须在构造函数中初始化你CustomSourceViewerConfigurationIPreferenceStore调用super(iPrefStore);

于 2014-08-25T13:28:20.253 回答
0

maarten 的答案部分正确,但您还需要覆盖getHyperlinkDetectorTargets()TextSourceViewerConfiguration孩子的方法(CustomSourceViewerConfiguration在 maarten 的情况下)。像这样的东西:

@Override
protected Map<String, IAdaptable> getHyperlinkDetectorTargets(
    ISourceViewer sourceViewer) {
    Map<String, IAdaptable> targets = 
        super.getHyperlinkDetectorTargets(sourceViewer);
        targets.put("editortest.editors.MyEditor", edit); 
        return targets;
    }

editortest.editors.MyEditor这是在 中定义的目标的 ID org.eclipse.ui.workbench.texteditor.hyperlinkDetectorTargets。该解决方案适用于最新的 Eclipse Oxygen。

于 2018-04-03T21:35:37.447 回答