我需要在Eclipse中找到代码行号和方法名称。

3
我正在尝试找到当前光标所在函数的行号和函数名。我需要将此信息传递给另一个函数以进行后续处理。
以下是更多详细信息。编辑器将是CEditor。我有一个插件将使用这些数据。我只需要显示当前函数和它开始时的行数。因此,如果函数XYZ从第5行开始,用户在第8行输入函数,则需要获取XYZ和第5行。
我正在使用Java编程,但用户将使用C / C ++编写。
抱歉,我刚才注意到我错过了很多细节。我正在构建一个Eclipse插件,该插件需要用户光标当前所在的方法。这仅当他们使用CDT附加组件的CEditor时才需要。

你在谈论哪种编程语言?请在你的问题中添加相应的标签。 - JB Nizet
1个回答

0
CDT(C Development Tools)API 的文档在这里。CDT支持“DOM”(文档对象模型),您可以通过它来了解正在编辑的文档。基本上,您需要获取编辑文档的ITranslationUnit对象,然后调用getElementAtLine()以获取描述给定行号处代码的ICElement对象。 ICElement是一个大量子类的根,用于描述各种C语言元素。
您可以轻松地通过调用CoreModelUtil.findTranslationUnit()来获取ITranslationUnit,它只需要一个IFile作为参数。

谢谢Ernest。它运行得很好。最后一个问题。我如何在我的视图中添加一个监听器以感知Ceditor中的光标移动? - ScottJ
更新此帖:如果您只需要上一次保存文件的详细信息,则Ernest的方法非常有效。如果进行更改但未保存,则此方法将失去同步。需要进行一些测试才能发现这种情况。如果使用ITranslationUnit通过调用CDTUITools.getEditorInputCElement(yourEditor.getEditorInput()),它会创建一个ITranslationUnit缓冲您所做的更改并使用缓冲而不是文件。 - ScottJ
我如何使用ITranslationUnit获取函数的startline和其长度以标记函数? - Promod Kumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接