mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
added method to create XSourcePosition by file, line and column
This commit is contained in:
@@ -81,6 +81,17 @@ public abstract class XDebuggerUtil {
|
||||
@Nullable
|
||||
public abstract XSourcePosition createPosition(@Nullable VirtualFile file, int line);
|
||||
|
||||
/**
|
||||
* Create {@link XSourcePosition} instance by line and column number
|
||||
*
|
||||
* @param file file
|
||||
* @param line 0-based line number
|
||||
* @param column 0-based column number
|
||||
* @return source position
|
||||
*/
|
||||
@Nullable
|
||||
public abstract XSourcePosition createPosition(@Nullable VirtualFile file, int line, int column);
|
||||
|
||||
/**
|
||||
* Create {@link XSourcePosition} instance by line number
|
||||
* @param file file
|
||||
|
||||
@@ -310,6 +310,12 @@ public class XDebuggerUtilImpl extends XDebuggerUtil {
|
||||
return XSourcePositionImpl.create(file, line);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public XSourcePosition createPosition(final VirtualFile file, final int line, final int column) {
|
||||
return XSourcePositionImpl.create(file, line, column);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public XSourcePosition createPositionByOffset(final VirtualFile file, final int offset) {
|
||||
|
||||
@@ -99,6 +99,14 @@ public class XSourcePositionImpl implements XSourcePosition {
|
||||
*/
|
||||
@Nullable
|
||||
public static XSourcePositionImpl create(@Nullable VirtualFile file, int line) {
|
||||
return create(file, line, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* do not call this method from plugins, use {@link XDebuggerUtil#createPosition(VirtualFile, int, int)} instead
|
||||
*/
|
||||
@Nullable
|
||||
public static XSourcePositionImpl create(@Nullable VirtualFile file, int line, int column) {
|
||||
if (file == null) {
|
||||
return null;
|
||||
}
|
||||
@@ -118,8 +126,15 @@ public class XSourcePositionImpl implements XSourcePosition {
|
||||
if (line < 0) {
|
||||
line = 0;
|
||||
}
|
||||
if (column < 0) {
|
||||
column = 0;
|
||||
}
|
||||
|
||||
offset = line < document.getLineCount() ? document.getLineStartOffset(line) : -1;
|
||||
offset = line < document.getLineCount() ? document.getLineStartOffset(line) + column : -1;
|
||||
|
||||
if (offset >= document.getTextLength()) {
|
||||
offset = document.getTextLength() - 1;
|
||||
}
|
||||
}
|
||||
return new XSourcePositionImpl(file, line, offset);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user