Compare commits
4 Commits
b0ec6c7014
...
profiling
| Author | SHA1 | Date | |
|---|---|---|---|
| 897a76d8cf | |||
| 5799c800d3 | |||
| cc9ac43ffa | |||
| 93d53fcef6 |
18
.classpath
18
.classpath
@@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" output="bin/main" path="src/main/java">
|
||||
<attributes>
|
||||
<attribute name="gradle_scope" value="main"/>
|
||||
<attribute name="gradle_used_by_scope" value="main,test"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" output="bin/main" path="src/main/resources">
|
||||
<attributes>
|
||||
<attribute name="gradle_scope" value="main"/>
|
||||
<attribute name="gradle_used_by_scope" value="main,test"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21/"/>
|
||||
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
|
||||
<classpathentry kind="output" path="bin/default"/>
|
||||
</classpath>
|
||||
@@ -1 +0,0 @@
|
||||
019e6999-b7c8-7591-a8aa-ea51b89a7f7e
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -15,3 +15,6 @@ build
|
||||
.gradle
|
||||
bin
|
||||
.worktrees
|
||||
.classpath
|
||||
.project
|
||||
.settings
|
||||
|
||||
34
.project
34
.project
@@ -1,34 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>jprototerm</name>
|
||||
<comment>Project jprototerm created by Buildship.</comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1779917652126</id>
|
||||
<name></name>
|
||||
<type>30</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.core.resources.regexFilterMatcher</id>
|
||||
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
||||
@@ -1,13 +0,0 @@
|
||||
arguments=--init-script /home/anon/Src/eclipse.jdt.ls/org.eclipse.jdt.ls.product/target/repository/configuration/org.eclipse.osgi/58/0/.cp/gradle/init/init.gradle
|
||||
auto.sync=false
|
||||
build.scans.enabled=false
|
||||
connection.gradle.distribution=GRADLE_DISTRIBUTION(LOCAL_INSTALLATION(/home/anon/.sdkman/candidates/gradle/current))
|
||||
connection.project.dir=
|
||||
eclipse.preferences.version=1
|
||||
gradle.user.home=
|
||||
java.home=/nix/store/c3pl7bqrx3d2rc3dh98z6yaj0mv1p52g-openjdk-21.0.10+7/lib/openjdk
|
||||
jvm.arguments=
|
||||
offline.mode=false
|
||||
override.workspace.settings=true
|
||||
show.console.view=true
|
||||
show.executions.view=true
|
||||
19
README.md
19
README.md
@@ -132,3 +132,22 @@ open_scrollback = "ALT+S"
|
||||
Each tab has its own stack of tiled and floating panes; only the active tab is rendered. A
|
||||
thin tab bar appears at the top when more than one tab is open. Closing the last tiled pane
|
||||
while floating panes exist promotes the most recently active floating pane to a tiled pane.
|
||||
|
||||
## Diagnostics
|
||||
|
||||
Two render-debugging flags are off by default and add no overhead unless enabled. Pass them
|
||||
as JVM system properties (each also has an environment-variable equivalent). With the
|
||||
packaged binary the JVM picks them up from `JDK_JAVA_OPTIONS`:
|
||||
|
||||
```sh
|
||||
JDK_JAVA_OPTIONS="-Djprototerm.profile=true" ./result/bin/jprototerm
|
||||
```
|
||||
|
||||
- `-Djprototerm.profile=true` (or `JPROTOTERM_PROFILE=1`): print a `[render-profile]` line to
|
||||
stderr every N renders with the per-frame cost of each render stage — `snapshot` (terminal
|
||||
state marshalling), `fingerprint` (change detection), `draw` (canvas painting), and the
|
||||
`frame-total`. Set `-Djprototerm.profile.frames=<N>` to change the dump interval (default
|
||||
120).
|
||||
- `-Djprototerm.debugRepaint=true` (or `JPROTOTERM_DEBUG_REPAINT=1`): paint each per-column
|
||||
repaint run's cleared span red instead of clearing it. Repainted regions flash red, so you
|
||||
can see exactly which cells are being redrawn each frame.
|
||||
|
||||
2
TODOS.md
2
TODOS.md
@@ -1,2 +0,0 @@
|
||||
jlibghostty - why downcall metadata not propagated ?
|
||||
jlibghostty - how need to change flake so consuming flakes dont have to depend on same ghostty flake ?
|
||||
@@ -26,7 +26,7 @@ final class KeyEncoder {
|
||||
return switch (code) {
|
||||
case ENTER -> "\r";
|
||||
case BACK_SPACE -> "\u007f";
|
||||
case TAB -> "\t";
|
||||
case TAB -> event.isShiftDown() ? "\u001b[Z" : "\t";
|
||||
case ESCAPE -> "\u001b";
|
||||
case UP -> "\u001b[A";
|
||||
case DOWN -> "\u001b[B";
|
||||
|
||||
@@ -44,12 +44,6 @@ final class TerminalPaneNode extends Region {
|
||||
private static final int DIRTY_PARTIAL = 1;
|
||||
private static final int DIRTY_FULL = 2;
|
||||
|
||||
// Debug toggle: when set, skip the per-column repaint and always repaint the whole row.
|
||||
// Used to bisect partial-repaint artifacts (stale black bars near the cursor).
|
||||
private static final boolean FULL_ROW_REPAINT =
|
||||
Boolean.getBoolean("jprototerm.fullRowRepaint")
|
||||
|| "1".equals(System.getenv("JPROTOTERM_FULL_ROW_REPAINT"));
|
||||
|
||||
// Debug toggle: paint each repaint run's cleared span red instead of clearing it to
|
||||
// transparent. If the black bars turn red, they are spans repaintColumns clears but never
|
||||
// refills; if they stay black, those pixels are never touched by repaintColumns at all.
|
||||
@@ -747,10 +741,6 @@ final class TerminalPaneNode extends Region {
|
||||
}
|
||||
|
||||
private void renderChanged(RenderRow row) {
|
||||
if (FULL_ROW_REPAINT) {
|
||||
render(row);
|
||||
return;
|
||||
}
|
||||
double oldWidth = canvas.getWidth();
|
||||
double oldHeight = canvas.getHeight();
|
||||
prepareCanvas(row);
|
||||
|
||||
Reference in New Issue
Block a user