mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
avoid loading documents for all stack frames files
This commit is contained in:
@@ -34,15 +34,19 @@ import com.intellij.debugger.ui.tree.render.ClassRenderer;
|
||||
import com.intellij.debugger.ui.tree.render.DescriptorLabelListener;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.pom.Navigatable;
|
||||
import com.intellij.ui.ColoredTextContainer;
|
||||
import com.intellij.xdebugger.XDebugSession;
|
||||
import com.intellij.xdebugger.XSourcePosition;
|
||||
import com.intellij.xdebugger.evaluation.XDebuggerEvaluator;
|
||||
import com.intellij.xdebugger.frame.*;
|
||||
import com.intellij.xdebugger.frame.presentation.XValuePresentation;
|
||||
import com.intellij.xdebugger.impl.XSourcePositionImpl;
|
||||
import com.intellij.xdebugger.impl.ui.XDebuggerUIConstants;
|
||||
import com.intellij.xdebugger.settings.XDebuggerSettingsManager;
|
||||
import com.sun.jdi.*;
|
||||
@@ -83,12 +87,7 @@ public class JavaStackFrame extends XStackFrame {
|
||||
}
|
||||
myDebugProcess = ((DebugProcessImpl)descriptor.getDebugProcess());
|
||||
myNodeManager = myDebugProcess.getXdebugProcess().getNodeManager();
|
||||
myXSourcePosition = ApplicationManager.getApplication().runReadAction(new Computable<XSourcePosition>() {
|
||||
@Override
|
||||
public XSourcePosition compute() {
|
||||
return myDescriptor.getSourcePosition() != null ? DebuggerUtilsEx.toXSourcePosition(myDescriptor.getSourcePosition()) : null;
|
||||
}
|
||||
});
|
||||
myXSourcePosition = myDescriptor.getSourcePosition() != null ? new JavaXSourcePosition(myDescriptor.getSourcePosition()) : null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -408,4 +407,34 @@ public class JavaStackFrame extends XStackFrame {
|
||||
return "JavaFrame position unknown";
|
||||
}
|
||||
}
|
||||
|
||||
private static class JavaXSourcePosition implements XSourcePosition {
|
||||
private final SourcePosition mySourcePosition;
|
||||
|
||||
public JavaXSourcePosition(@NotNull SourcePosition sourcePosition) {
|
||||
mySourcePosition = sourcePosition;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLine() {
|
||||
return mySourcePosition.getLine();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
return mySourcePosition.getOffset();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public VirtualFile getFile() {
|
||||
return mySourcePosition.getFile().getVirtualFile();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Navigatable createNavigatable(@NotNull Project project) {
|
||||
return XSourcePositionImpl.createOpenFileDescriptor(project, this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -177,7 +177,7 @@ public class ExecutionPointHighlighter {
|
||||
private void addHighlighter() {
|
||||
int line = mySourcePosition.getLine();
|
||||
Document document = myEditor.getDocument();
|
||||
if (line >= document.getLineCount()) return;
|
||||
if (line < 0 || line >= document.getLineCount()) return;
|
||||
|
||||
if (myUseSelection) {
|
||||
myEditor.getSelectionModel().setSelection(document.getLineStartOffset(line), document.getLineEndOffset(line) + document.getLineSeparatorLength(line));
|
||||
|
||||
Reference in New Issue
Block a user