Skip to main content
 首页 » 编程设计

Eclipse CDT 插件中根据编辑器中鼠标单击的 X 和 Y 位置获取 AST 元素

2025年12月25日15bjzhanghao

我目前正在开发一个 Eclipse CDT 插件,其中基于当前事件编辑器上的鼠标单击,我想做一些过滤 - 我想仅在单击的元素是函数名称(IFunction 实例)时才显示操作。

我已经成功实现了这一点,但仅限于事件编辑器中光标的当前插入位置(通过 ISelection 对象)。 但是,我想在右键单击发生时执行此操作,而不是在插入符号所在的位置执行此操作。

到目前为止,我已经成功获取鼠标单击事件(org.eclipse.swt.events.MouseEvent 类型的对象)并保存它。但是,我还没有找到如何通过该对象中的任何信息(小部件、单击的 X、Y 位置)获取当前选定的 AST 元素的方法。

我虽然以某种方式改变插入符号的位置来改变当前的选择,但没有找到如何做到这一点或者这是否是可行的方法。

任何想法和帮助将不胜感激!

谢谢。

请您参考如下方法:

看起来像StyledText.getOffsetAtPoint()可用于将单击的坐标转换为插入符号偏移量。

该方法的描述具体说明:

The return value reflects the character offset that the caret will be placed at if a mouse click occurred at the specified point.

可以根据IEditorInput获取编辑器的StyledText对象,如下所示:

IEditorPart editor = CUIPlugin.getActivePage().findEditor(editorInput); 
StyledText textWidget = (StyledText) editor.getAdapter(Control.class);