Skip to content

Commit 8ab9634

Browse files
committed
docs(parity): update command-mapping reference to reflect current coverage
why: The mapping doc was stale (said 28/88). Update to reflect 79/90 directly wrapped, 8 covered by alias/flag, 3 truly unwrappable. what: - Update summary to 87/90 effective coverage (96%) - Add table of 8 commands covered by alias/flag with explanation - Add table of 3 unwrappable commands with rationale
1 parent 4952920 commit 8ab9634

1 file changed

Lines changed: 24 additions & 104 deletions

File tree

skills/tmux-parity/references/command-mapping.md

Lines changed: 24 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -6,114 +6,34 @@ bash .claude-plugin/scripts/extract-tmux-commands.sh ~/study/c/tmux
66
bash .claude-plugin/scripts/extract-libtmux-methods.sh
77
```
88

9-
## Wrapped Commands (28/88)
9+
## Summary
1010

11-
| tmux Command | Alias | Getopt Flags | Target | libtmux Location | Methods |
12-
|---|---|---|---|---|---|
13-
| `attach-session` | `attach` | `c:dEf:rt:x` | none | `server.py` | `Server.attach_session()` |
14-
| `capture-pane` | `capturep` | `ab:CeE:JMNpPqS:Tt:` | pane | `pane.py` | `Pane.capture_pane()` |
15-
| `display-message` | `display` | `aCc:d:lINpt:F:v` | pane | `pane.py` | `Pane.display_message()` |
16-
| `has-session` | `has` | `t:` | session | `server.py` | `Server.has_session()` |
17-
| `kill-pane` | `killp` | `at:` | pane | `pane.py` | `Pane.kill()` |
18-
| `kill-server` || (none) | none | `server.py` | `Server.kill()` |
19-
| `kill-session` || `aCt:` | session | `server.py`, `session.py` | `Server.kill_session()`, `Session.kill()` |
20-
| `kill-window` | `killw` | `at:` | window | `session.py` | `Session.kill_window()`, `Window.kill()` |
21-
| `list-sessions` | `ls` | `F:f:O:r` | none | `server.py`, `neo.py` | `Server.sessions`, internal fetch |
22-
| `list-windows` | `lsw` | `aF:f:O:rst:` | window | `neo.py` | Internal fetch for `Session.windows` |
23-
| `list-panes` | `lsp` | `aF:f:O:rst:` | window | `neo.py` | Internal fetch for `Window.panes` |
24-
| `move-window` | `movew` | `abdkrs:t:` | window | `window.py` | `Window.move_window()` |
25-
| `new-session` | `new` | `Ac:dDe:EF:f:n:Ps:t:x:Xy:` | session | `server.py` | `Server.new_session()` |
26-
| `new-window` | `neww` | `abc:de:F:kn:PSt:` | window | `session.py` | `Session.new_window()` |
27-
| `rename-session` | `rename` | `t:` | session | `session.py` | `Session.rename_session()` |
28-
| `rename-window` | `renamew` | `t:` | window | `window.py` | `Window.rename_window()` |
29-
| `resize-pane` | `resizep` | `DLMRTt:Ux:y:Z` | pane | `pane.py` | `Pane.resize()` |
30-
| `resize-window` | `resizew` | `aADLRt:Ux:y:` | window | `window.py` | `Window.resize()` |
31-
| `select-layout` | `selectl` | `Enopt:` | pane | `window.py` | `Window.select_layout()` |
32-
| `select-pane` | `selectp` | `DdegLlMmP:RT:t:UZ` | pane | `window.py`, `pane.py` | `Window.select_pane()`, `Pane.select()`, `Pane.set_title()` |
33-
| `select-window` | `selectw` | `lnpTt:` | window | `session.py`, `window.py` | `Session.select_window()`, `Window.select()` |
34-
| `send-keys` | `send` | `c:FHKlMN:Rt:X` | pane | `pane.py` | `Pane.send_keys()` |
35-
| `set-environment` | `setenv` | `Fhgrt:u` | session | `common.py` | `EnvironmentMixin.set_environment()`, `.unset_environment()`, `.remove_environment()` |
36-
| `set-hook` || `agpRt:uw` | pane | `hooks.py` | `HooksMixin.set_hook()`, `.unset_hook()` |
37-
| `set-option` | `set` | `aFgopqst:uUw` | pane | `options.py` | `OptionsMixin.set_option()`, `.unset_option()` |
38-
| `show-environment` | `showenv` | `hgst:` | session | `common.py` | `EnvironmentMixin.show_environment()`, `.getenv()` |
39-
| `show-hooks` || `gpt:w` | pane | `hooks.py` | `HooksMixin.show_hooks()`, `.show_hook()` |
40-
| `show-options` | `show` | `AgHpqst:vw` | pane | `options.py` | `OptionsMixin.show_options()`, `.show_option()` |
41-
| `split-window` | `splitw` | `bc:de:fF:hIl:p:Pt:vZ` | pane | `pane.py` | `Pane.split()`, `Window.split()` |
42-
| `switch-client` | `switchc` | `c:EFlnO:pt:rT:Z` | none | `server.py`, `session.py` | `Server.switch_client()`, `Session.switch_client()` |
11+
- **Directly wrapped**: 79/90 commands (87%)
12+
- **Covered by alias/flag**: 8 additional commands
13+
- **Truly unwrappable**: 3 commands (block waiting for interactive input)
14+
- **Total effective coverage**: 87/90 (96%)
4315

44-
## Not Wrapped Commands (60/88)
16+
## Covered by Alias/Flag (8 commands)
4517

46-
### High Priority (useful for programmatic/scripting use)
18+
These commands are not called directly but their functionality is available:
4719

48-
| tmux Command | Alias | Getopt | Target | Notes |
49-
|---|---|---|---|---|
50-
| `break-pane` | `breakp` | `abdPF:n:s:t:` | window | Move pane to its own window |
51-
| `join-pane` | `joinp` | `bdfhvp:l:s:t:` | pane | Merge pane into another window |
52-
| `move-pane` | `movep` | `bdfhvp:l:s:t:` | pane | Move pane between windows (like join-pane) |
53-
| `respawn-pane` | `respawnp` | `c:e:kt:` | pane | Re-run command in pane |
54-
| `respawn-window` | `respawnw` | `c:e:kt:` | window | Re-run command in all window panes |
55-
| `run-shell` | `run` | `bd:Ct:Es:c:` | pane | Execute shell command in background |
56-
| `swap-pane` | `swapp` | `dDs:t:UZ` | pane | Swap two panes |
57-
| `swap-window` | `swapw` | `ds:t:` | window | Swap two windows |
58-
| `display-popup` | `popup` | `Bb:Cc:d:e:Eh:kNs:S:t:T:w:x:y:` | pane | Create popup overlay (tmux 3.2+) |
59-
| `pipe-pane` | `pipep` | `IOot:` | pane | Pipe pane output to command |
60-
| `clear-history` | `clearhist` | `Ht:` | pane | Clear pane scrollback buffer |
20+
| tmux Command | Covered By | How |
21+
|---|---|---|
22+
| `last-pane` | `Window.last_pane()`, `Pane.select(last=True)` | `-l` flag on select-pane |
23+
| `list-panes` | `Window.panes` property | Used internally by `neo.py` |
24+
| `list-windows` | `Session.windows` property | Used internally by `neo.py` |
25+
| `move-pane` | `Pane.join()` | Same C source as join-pane |
26+
| `next-layout` | `Window.select_layout(next_layout=True)` | `-n` flag on select-layout |
27+
| `previous-layout` | `Window.select_layout(previous_layout=True)` | `-o` flag on select-layout |
28+
| `set-window-option` | `OptionsMixin.set_option(scope=OptionScope.Window)` | Alias for `set-option -w` |
29+
| `show-window-options` | `OptionsMixin.show_options(scope=OptionScope.Window)` | Alias for `show-options -w` |
6130

62-
### Medium Priority (navigation, buffers, info)
31+
## Not Wrappable (3 commands)
6332

64-
| tmux Command | Alias | Getopt | Target | Notes |
65-
|---|---|---|---|---|
66-
| `last-pane` | `lastp` | `det:Z` | window | Select previous pane |
67-
| `last-window` | `last` | `t:` | session | Select previous window |
68-
| `next-window` | `next` | `at:` | session | Select next window |
69-
| `previous-window` | `prev` | `at:` | session | Select previous window |
70-
| `link-window` | `linkw` | `abdks:t:` | window | Link window to another session |
71-
| `unlink-window` | `unlinkw` | `kt:` | window | Unlink window from session |
72-
| `rotate-window` | `rotatew` | `Dt:UZ` | window | Rotate pane positions |
73-
| `list-buffers` | `lsb` | `F:f:O:r` | none | List paste buffers |
74-
| `list-clients` | `lsc` | `F:f:O:rt:` | session | List connected clients |
75-
| `load-buffer` | `loadb` | `b:t:w` | none | Load file into paste buffer |
76-
| `save-buffer` | `saveb` | `ab:` | none | Save paste buffer to file |
77-
| `set-buffer` | `setb` | `ab:t:n:w` | none | Set paste buffer contents |
78-
| `show-buffer` | `showb` | `b:` | none | Show paste buffer contents |
79-
| `delete-buffer` | `deleteb` | `b:` | none | Delete a paste buffer |
80-
| `paste-buffer` | `pasteb` | `db:prSs:t:` | pane | Paste buffer into pane |
81-
| `wait-for` | `wait` | `LSU` | none | Wait for/signal/lock a channel |
82-
| `if-shell` | `if` | `bFt:` | pane | Conditional command execution |
83-
| `detach-client` | `detach` | `aE:s:t:P` | session | Detach client from session |
84-
| `refresh-client` | `refresh` | `A:B:cC:Df:r:F:lLRSt:U` | none | Refresh client display |
85-
| `show-window-options` | `showw` | `gvt:` | window | Show window options (alias for show-options -w) |
86-
| `set-window-option` | `setw` | `aFgoqt:u` | window | Set window option (alias for set-option -w) |
33+
These block forever waiting for interactive user input:
8734

88-
### Low Priority (interactive UI, config, rarely scripted)
89-
90-
| tmux Command | Alias | Getopt | Target | Notes |
91-
|---|---|---|---|---|
92-
| `bind-key` | `bind` | `nrN:T:` | none | Bind key to command |
93-
| `unbind-key` | `unbind` | `anqT:` | none | Unbind a key |
94-
| `choose-buffer` || `F:f:K:NO:rt:yZ` | pane | Interactive buffer chooser |
95-
| `choose-client` || `F:f:K:NO:rt:yZ` | pane | Interactive client chooser |
96-
| `choose-tree` || `F:f:GK:NO:rst:wyZ` | pane | Interactive session/window tree |
97-
| `clock-mode` || `t:` | pane | Show clock in pane |
98-
| `command-prompt` || `1beFiklI:Np:t:T:` | none | Open command prompt |
99-
| `confirm-before` | `confirm` | `bc:p:t:y` | none | Confirm before running command |
100-
| `copy-mode` || `deHMqSs:t:u` | pane | Enter copy mode |
101-
| `customize-mode` || `F:f:Nt:yZ` | pane | Enter customize mode |
102-
| `display-menu` | `menu` | `b:c:C:H:s:S:MOt:T:x:y:` | pane | Display popup menu |
103-
| `display-panes` | `displayp` | `bd:Nt:` | none | Show pane numbers |
104-
| `find-window` | `findw` | `CiNrt:TZ` | pane | Search window contents |
105-
| `list-commands` | `lscm` | `F:` | none | List tmux commands |
106-
| `list-keys` | `lsk` | `1aF:NO:P:rT:` | none | List key bindings |
107-
| `lock-client` | `lockc` | `t:` | none | Lock a client |
108-
| `lock-server` | `lock` | (none) | none | Lock the server |
109-
| `lock-session` | `locks` | `t:` | session | Lock a session |
110-
| `next-layout` | `nextl` | `t:` | window | Cycle to next layout |
111-
| `previous-layout` | `prevl` | `t:` | window | Cycle to previous layout |
112-
| `send-prefix` || `2t:` | pane | Send prefix key |
113-
| `server-access` || `adlrw` | none | Manage server access control |
114-
| `show-messages` | `showmsgs` | `JTt:` | none | Show message log |
115-
| `show-prompt-history` | `showphist` | `T:` | none | Show prompt history |
116-
| `clear-prompt-history` | `clearphist` | `T:` | none | Clear prompt history |
117-
| `source-file` | `source` | `t:Fnqv` | pane | Source a config file |
118-
| `start-server` | `start` | (none) | none | Start server (usually implicit) |
119-
| `suspend-client` | `suspendc` | `t:` | none | Suspend a client |
35+
| tmux Command | Why |
36+
|---|---|
37+
| `command-prompt` | Opens interactive prompt, blocks until user types |
38+
| `confirm-before` | Blocks waiting for y/n confirmation (even `-y` blocks in control mode) |
39+
| `display-menu` | Opens interactive menu, blocks until selection |

0 commit comments

Comments
 (0)