我目前正在开发一款用于帮助编码的Eclipse插件。基本上是一个字符串片段库。
在创建新的字符串片段时,我想给它一个ID,格式为ClassName.MethodName.X。
获取编辑器非常简单:
IWorkbenchPage page = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage();
IEditorPart activeEditor = page.getActiveEditor();
if(activeEditor.getClass().getName().endsWith("CompilationUnitEditor")){
// do something
}
现在... 有没有办法使用Eclipse jdt API获取文本光标当前所在方法的名称?
编辑: 好的。 在Andrew的帮助下,我得到了以下内容:
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();
}
}
效果还不错。虽然使用受限的类是一种有点麻烦的解决方案。
unit
(应该是elem
),而且selected
没有声明为IJavaElement
。但它能正常工作。谢谢。 - Ivan Ferrer Villa