1

我正在为我的插件寻找正确的扩展点来访问编辑器中的光标位置。目的是为插件视图中的当前代码行提供附加信息。我确信这是可能的,因为例如大纲视图突出显示了我所在的当前函数。谢谢

4

2 回答 2

2

下面的代码做我想要的

import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.ISelection;        

IWorkbench wb = PlatformUI.getWorkbench();
IWorkbenchWindow win = wb.getActiveWorkbenchWindow();
IWorkbenchPage page = win.getActivePage();
IEditorPart editor = page.getActiveEditor();
if(editor instanceof ITextEditor){
    ISelectionProvider selectionProvider = ((ITextEditor)editor).getSelectionProvider();
    ISelection selection = selectionProvider.getSelection();
    if (selection instanceof ITextSelection) {
        ITextSelection textSelection = (ITextSelection)selection;
        System.out.println("startline:"+textSelection.getStartLine());
    }
}
于 2012-06-11T13:12:37.103 回答
1

您可以使用textSelection.getOffset()您找到的模式,然后使用org.eclipse.jface.text.IDocument界面从文档中提取文本以进行任何您想要的分析。

ITextEditor textEditor = (ITextEditor)editor;
IDocumentProvider dp = editor.getDocumentProvider();
IDocument doc = dp.getDocument(editor.getEditorInput());

IDocument具有在字符偏移量和行之间来回转换的方法。

于 2012-06-11T13:19:00.960 回答