Skip to content

Commit 360651f

Browse files
authored
Make console stack traces expandable (#5777)
1 parent c535e86 commit 360651f

File tree

3 files changed

+53
-4
lines changed

3 files changed

+53
-4
lines changed

resources/META-INF/plugin.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -384,8 +384,9 @@
384384

385385
<applicationService serviceImplementation="io.flutter.jxbrowser.EmbeddedBrowserEngine" overrides="false" />
386386
<applicationService serviceImplementation="io.flutter.font.FontPreviewProcessor"/>
387-
<console.folding implementation="io.flutter.console.FlutterConsoleFolding"/>
388-
<console.folding implementation="io.flutter.logging.FlutterConsoleLogFolding"/>
387+
<console.folding implementation="io.flutter.console.FlutterConsoleFolding" id="1"/>
388+
<console.folding implementation="io.flutter.console.FlutterConsoleExceptionFolding" order="after 1"/>
389+
<console.folding implementation="io.flutter.logging.FlutterConsoleLogFolding" order="last"/>
389390

390391
<projectConfigurable groupId="language" instance="io.flutter.sdk.FlutterSettingsConfigurable"
391392
id="flutter.settings" key="flutter.title" bundle="io.flutter.FlutterBundle" nonDefaultProject="true"/>

resources/META-INF/plugin_template.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,8 +310,9 @@
310310

311311
<applicationService serviceImplementation="io.flutter.jxbrowser.EmbeddedBrowserEngine" overrides="false" />
312312
<applicationService serviceImplementation="io.flutter.font.FontPreviewProcessor"/>
313-
<console.folding implementation="io.flutter.console.FlutterConsoleFolding"/>
314-
<console.folding implementation="io.flutter.logging.FlutterConsoleLogFolding"/>
313+
<console.folding implementation="io.flutter.console.FlutterConsoleFolding" id="1"/>
314+
<console.folding implementation="io.flutter.console.FlutterConsoleExceptionFolding" order="after 1"/>
315+
<console.folding implementation="io.flutter.logging.FlutterConsoleLogFolding" order="last"/>
315316

316317
<projectConfigurable groupId="language" instance="io.flutter.sdk.FlutterSettingsConfigurable"
317318
id="flutter.settings" key="flutter.title" bundle="io.flutter.FlutterBundle" nonDefaultProject="true"/>
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*
2+
* Copyright 2021 The Chromium Authors. All rights reserved.
3+
* Use of this source code is governed by a BSD-style license that can be
4+
* found in the LICENSE file.
5+
*/
6+
package io.flutter.console;
7+
8+
import com.intellij.execution.ConsoleFolding;
9+
import com.intellij.openapi.project.Project;
10+
import com.intellij.openapi.util.text.StringUtil;
11+
import io.flutter.settings.FlutterSettings;
12+
import org.jetbrains.annotations.NotNull;
13+
import org.jetbrains.annotations.Nullable;
14+
15+
import java.util.List;
16+
17+
public class FlutterConsoleExceptionFolding extends ConsoleFolding {
18+
private static final String EXCEPTION_PREFIX = "=======";
19+
private boolean foldLines = false;
20+
private boolean foldingInProgress = false;
21+
22+
@Override
23+
public boolean shouldFoldLine(@NotNull Project project, @NotNull String line) {
24+
final FlutterSettings settings = FlutterSettings.getInstance();
25+
if (line.startsWith(EXCEPTION_PREFIX) && settings.isShowStructuredErrors() && !settings.isIncludeAllStackTraces()) {
26+
foldingInProgress = true;
27+
foldLines = !foldLines;
28+
return true;
29+
}
30+
return foldLines;
31+
}
32+
33+
@Override
34+
public boolean shouldBeAttachedToThePreviousLine() {
35+
return false;
36+
}
37+
38+
@Nullable
39+
@Override
40+
public String getPlaceholderText(@NotNull Project project, @NotNull List<String> lines) {
41+
if (foldingInProgress) {
42+
foldingInProgress = false;
43+
return lines.size() == 0 ? null : lines.get(0); // Newlines are removed, so we can only show one line.
44+
}
45+
return null;
46+
}
47+
}

0 commit comments

Comments
 (0)