From 7367b2f778cf1f168e114024b25435bad4993a8e Mon Sep 17 00:00:00 2001 From: Gregor Lohaus Date: Fri, 19 Jun 2026 15:26:00 +0200 Subject: [PATCH] panesync toggle <- panesync commit --- README.md | 6 ++---- config.example.toml | 1 - .../java/com/gregor/jprototerm/AppConfig.java | 2 -- .../com/gregor/jprototerm/Compositor.java | 21 +++++++------------ .../com/gregor/jprototerm/TerminalWindow.java | 4 +--- 5 files changed, 11 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 26bf827..60558a9 100644 --- a/README.md +++ b/README.md @@ -172,7 +172,6 @@ open_scrollback = "ALT+S" create_worktree = "ALT+W" pane_sync_toggle = "ALT+Y" pane_sync_select = "SPACE" -pane_sync_commit = "ALT+SHIFT+Y" paste = "CTRL+SHIFT+V" ``` @@ -191,10 +190,9 @@ paste = "CTRL+SHIFT+V" - `Alt+s`: open the active pane scrollback in `$EDITOR` - `Alt+w`: edit a worktree name, then run `git worktree add /` from the previously focused pane's working directory -- `Alt+y`: enter pane-sync selection mode, cancel selection mode, or stop an active pane sync +- `Alt+y`: enter pane-sync selection mode, commit the selection, or stop an active pane sync - `Space`: toggle the focused pane in the sync set while pane-sync selection mode is active -- `Alt+Shift+y`: commit the current pane-sync selection; input typed or pasted into any synced - pane is mirrored to the other synced panes +- Once committed, input typed or pasted into any synced pane is mirrored to the other synced panes - `Ctrl+Shift+v`: paste - Font default: `JetBrainsMono Nerd Font` - Kitty graphics protocol parsing is enabled by default diff --git a/config.example.toml b/config.example.toml index e1a0211..a3875f6 100644 --- a/config.example.toml +++ b/config.example.toml @@ -43,5 +43,4 @@ open_scrollback = "ALT+S" create_worktree = "ALT+W" pane_sync_toggle = "ALT+Y" pane_sync_select = "SPACE" -pane_sync_commit = "ALT+SHIFT+Y" paste = "CTRL+SHIFT+V" diff --git a/src/main/java/com/gregor/jprototerm/AppConfig.java b/src/main/java/com/gregor/jprototerm/AppConfig.java index 016e2ad..876c875 100644 --- a/src/main/java/com/gregor/jprototerm/AppConfig.java +++ b/src/main/java/com/gregor/jprototerm/AppConfig.java @@ -52,7 +52,6 @@ public record AppConfig( "create_worktree", "pane_sync_toggle", "pane_sync_select", - "pane_sync_commit", "paste" ); @@ -121,7 +120,6 @@ public record AppConfig( Map.entry("create_worktree", KeyBinding.parse("ALT+W")), Map.entry("pane_sync_toggle", KeyBinding.parse("ALT+Y")), Map.entry("pane_sync_select", KeyBinding.parse("SPACE")), - Map.entry("pane_sync_commit", KeyBinding.parse("ALT+SHIFT+Y")), Map.entry("paste", KeyBinding.parse("CTRL+SHIFT+V")) ) ); diff --git a/src/main/java/com/gregor/jprototerm/Compositor.java b/src/main/java/com/gregor/jprototerm/Compositor.java index c16f310..f53ef55 100644 --- a/src/main/java/com/gregor/jprototerm/Compositor.java +++ b/src/main/java/com/gregor/jprototerm/Compositor.java @@ -145,9 +145,16 @@ public final class Compositor { } public void togglePaneSync() { - if (paneSyncSelectMode || !paneSyncPanes.isEmpty()) { + if (paneSyncSelectMode) { + paneSyncPanes.clear(); + paneSyncPanes.addAll(paneSyncSelection); paneSyncSelectMode = false; paneSyncSelection.clear(); + prunePaneSyncState(); + layoutVersion++; + return; + } + if (!paneSyncPanes.isEmpty()) { paneSyncPanes.clear(); layoutVersion++; return; @@ -171,18 +178,6 @@ public final class Compositor { layoutVersion++; } - public void commitPaneSyncSelection() { - if (!paneSyncSelectMode) { - return; - } - paneSyncPanes.clear(); - paneSyncPanes.addAll(paneSyncSelection); - paneSyncSelection.clear(); - paneSyncSelectMode = false; - prunePaneSyncState(); - layoutVersion++; - } - public List paneSyncPeers(TerminalPane source) { prunePaneSyncState(); if (source == null || !paneSyncPanes.contains(source)) { diff --git a/src/main/java/com/gregor/jprototerm/TerminalWindow.java b/src/main/java/com/gregor/jprototerm/TerminalWindow.java index ffea88d..0601b5a 100644 --- a/src/main/java/com/gregor/jprototerm/TerminalWindow.java +++ b/src/main/java/com/gregor/jprototerm/TerminalWindow.java @@ -74,7 +74,6 @@ final class TerminalWindow { keyActions.put("create_worktree", this::createWorktreeInEditor); keyActions.put("pane_sync_toggle", compositor::togglePaneSync); keyActions.put("pane_sync_select", compositor::togglePaneSyncSelection); - keyActions.put("pane_sync_commit", compositor::commitPaneSyncSelection); keyActions.put("paste", this::pasteFromClipboard); StackPane root = new StackPane(compositor.canvas(), compositor.imageOverlay()); @@ -169,8 +168,7 @@ final class TerminalWindow { "previous_tab", "next_tab", "pane_sync_toggle", - "pane_sync_select", - "pane_sync_commit" -> true; + "pane_sync_select" -> true; default -> false; }; }