0

IMarkers を作成しています。行番号はありますが、char_start と char_end が必要です。マーカーが作成されると、マーカーが接続されているファイルがエディターで開かれない場合があります。ファイルを開かずに char_start および char_end オフセットを取得するにはどうすればよいですか? 現在、マーカーは行全体を強調表示していますが、先頭の空白を無視したいです。

4

1 に答える 1

2

私はこれを自分で解決することができました。これを行うためのより効率的な方法があると確信していますが、これは私の目的のために今のところ機能します。

IPath path = Path.fromOSString(file);
IFile iFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path);

ITextFileBufferManager iTextFileBufferManager = FileBuffers.getTextFileBufferManager();
ITextFileBuffer iTextFileBuffer = null;
IDocument iDoc = null;
try    {
    iTextFileBufferManager.connect(iFile.getFullPath(), LocationKind.IFILE, new NullProgressMonitor());
    iTextFileBuffer = iTextFileBufferManager.getTextFileBuffer(iFile.getFullPath(), LocationKind.IFILE);
    iDoc = iTextFileBuffer.getDocument();

    iTextFileBufferManager.disconnect(iFile.getFullPath(), LocationKind.IFILE, new NullProgressMonitor());
} catch (Exception e) {
    e.printStackTrace();
}

int start = iDoc.getLineOffset(iline - 1);
int end = iDoc.getLineLength(iline - 1);

//this next section was done to remove the leading white spaces                  
while(iDoc.getChar(start) == ' ' || iDoc.getChar(start) == '\t'){                                   
    start++;
    end--;
}

 final int charStart = start;
 final int charEnd = start + end;
于 2012-10-15T21:10:32.830 に答える