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
|
.gradle
|
||||||
bin
|
bin
|
||||||
.worktrees
|
.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
|
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
|
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.
|
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) {
|
return switch (code) {
|
||||||
case ENTER -> "\r";
|
case ENTER -> "\r";
|
||||||
case BACK_SPACE -> "\u007f";
|
case BACK_SPACE -> "\u007f";
|
||||||
case TAB -> "\t";
|
case TAB -> event.isShiftDown() ? "\u001b[Z" : "\t";
|
||||||
case ESCAPE -> "\u001b";
|
case ESCAPE -> "\u001b";
|
||||||
case UP -> "\u001b[A";
|
case UP -> "\u001b[A";
|
||||||
case DOWN -> "\u001b[B";
|
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_PARTIAL = 1;
|
||||||
private static final int DIRTY_FULL = 2;
|
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
|
// 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
|
// 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.
|
// 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) {
|
private void renderChanged(RenderRow row) {
|
||||||
if (FULL_ROW_REPAINT) {
|
|
||||||
render(row);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
double oldWidth = canvas.getWidth();
|
double oldWidth = canvas.getWidth();
|
||||||
double oldHeight = canvas.getHeight();
|
double oldHeight = canvas.getHeight();
|
||||||
prepareCanvas(row);
|
prepareCanvas(row);
|
||||||
|
|||||||
Reference in New Issue
Block a user