Eclipse插件开发:如何向编辑器添加功能
最近几天我一直在尝试扩展默认编辑器(java、xml,所有这些)的功能,
我想做的是在每个编辑器的侧面添加一个带有文本的大标尺。
例子: 默认编辑器页面如下所示:
|-----------|
|source |
|code |
| |
|-----------|
但我希望它像这样,
|------|----|
|source| |
|code |line|
| |text|
|------|----|
我也无法使用视图,因为标尺中的文本对应于某一行并且必须与源代码一起滚动。
我尝试通过实现 IEditorActionDelegate 来做到这一点 因为我不想要一个新的编辑器,而是要添加功能,但我找不到任何解决方案。
想要提及的是,为了将我的解决方案付诸实践,我扩展了 AbstractContributedRulerColumn
public class MyRuler extends AbstractContributedRulerColumn {
....
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Arne的回答给出了一些很好的建议,但我仍然花了一段时间才弄清楚如何编写一个添加列的插件编辑器旁边的文本。
我发布了一个示例,该示例仅显示带有“x”的行号每行之后。我一路上发现的一些有用的资源是:
Arne's answer gave some good suggestions, but it still took me a while to figure out how to write a plugin that adds a column of text next to the editor.
I published a sample that just displays line numbers with an "x" after each line. Some useful resources I found along the way were:
我认为您正在寻找扩展点
org.eclipse.ui.workbench.texteditor.rulerColumns
。在文本编辑器中显示行号的组件是使用这一点添加的,因此也应该可以添加其他信息。API 文档中的示例:
I think you are after the extension point
org.eclipse.ui.workbench.texteditor.rulerColumns
. The component that displays the line numbers in text editors is added using this point, so it should be possible to add other information, too.Example from the API doc:
使用标尺列扩展点一段时间后,我了解了 org.python.pydev.pydev_pyedit_listener 扩展点,它允许您拦截 PyEdit 创建事件并围绕它包装其他控件。在 SWT 小部件参考 中进行一些挖掘,让我在右侧添加另一个带有拆分器的窗格,并且我发布了一个示例项目。主要优点是您可以选择新显示的显示位置,可以使用您喜欢的任何控件,并且如果显示的文本太多,用户可以滚动。
After working with the ruler columns extension point for a while, I learned about the
org.python.pydev.pydev_pyedit_listener
extension point that lets you intercept the PyEdit creation event and wrap other controls around it. Some digging in the SWT widget reference let me add another pane on the right with a splitter, and I published a sample project. The main advantages are that you can choose where the new display appears, you can use any controls you like, and the user can scroll if there's too much text to fit in the display.