gpt4 book ai didi

java - 如何从 Activity 的 Eclipse 编辑器中获取当前方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:51:38 24 4
gpt4 key购买 nike

我目前正在开发一个 Eclipse 插件,它可以帮助我编码。基本上是一个字符串片段库。

当创建一个新的时,我喜欢给它一个 ClassName.MethodName.X 类型的 ID。

获取编辑器非常简单:

IWorkbenchPage page = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage();
IEditorPart activeEditor = page.getActiveEditor();
if(activeEditor.getClass().getName().endsWith("CompilationUnitEditor")){
// do something
}

现在...有什么方法可以使用 Eclipse jdt API 来获取我的文本光标当前所在方法的名称吗?

编辑:行。在安德鲁的帮助下,这是我得到的:

IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IEditorPart activeEditor = page.getActiveEditor();

if(activeEditor instanceof JavaEditor) {
ICompilationUnit root = (ICompilationUnit) EditorUtility.getEditorInputJavaElement(activeEditor, false);
try {
ITextSelection sel = (ITextSelection) ((JavaEditor) activeEditor)
.getSelectionProvider().getSelection();
int offset = sel.getOffset();
IJavaElement element = root.getElementAt(offset);
if(element.getElementType() == IJavaElement.METHOD){
return element.getElementName());
}
} catch (JavaModelException e) {
e.printStackTrace();
}
}

效果还不错。尽管使用受限类是一种肮脏的解决方案。

最佳答案

这里不使用内部 Eclipse API 也是一样的:

IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
ITextEditor editor = (ITextEditor) page.getActiveEditor();
IJavaElement elem = JavaUI.getEditorInputJavaElement(editor.getEditorInput());
if (elem instanceof ICompilationUnit) {
ITextSelection sel = (ITextSelection) editor.getSelectionProvider().getSelection();
IJavaElement selected = ((ICompilationUnit) elem).getElementAt(sel.getOffset());
if (selected != null && selected.getElementType() == IJavaElement.METHOD) {
return (IMethod) selected;
}
}
return null;

关于java - 如何从 Activity 的 Eclipse 编辑器中获取当前方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9667615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com