nicm
51d037e881
Major rework of prompts. The basic prompt mechanics (draw, editing, etc)
...
are now wrapped up in prompt*.c and do not depend on a client. These
functions are used to provide the original client prompt but also to
allow panes to have their own prompts, which works much much better for
floating panes. The mode prompts for both the tree modes and copy mode
are switched over to be per pane.
There are some visible changes (some of these may be changed if they
don't seem to be working well):
- Prompts in modes now appear in the bottom line, covering whatever
content was there.
- command-prompt has a -P flag to open a pane prompt.
- Because they cover the content, the default style for prompts in modes
now does not fill the entire line; the main command prompt stays the
same.
- The old completion menu has gone, and completions are now shown after
the text. Builtin aliases are no longer completed.
- Clicking the mouse on the prompt now moves the cursor or selects a
completion.
2026-06-25 11:39:11 +00:00
nicm
280a962328
Replace two-value prompt_mode enum with a flag.
2026-06-24 11:05:58 +00:00
nicm
37633ff957
Add some enums for prompt return values to make them a bit less confusing.
2026-06-24 10:55:39 +00:00
nicm
89027bd22c
Fix MOVE flag handling and remove key code (not actually needed).
2026-06-23 21:00:20 +00:00
nicm
0c5e6770df
Turn off preview if no draw callback and add a function to move to top.
2026-06-23 20:30:10 +00:00
nicm
c0a5e10313
Use flags for input callback instead of a single int done so the
...
callback can be told about cursor movement in an incremental prompt.
2026-06-23 20:07:58 +00:00
nicm
9dba08ac8b
Allow -p more than 100%, and account for borders when sizing new panes.
...
From Dane Jensen.
2026-06-23 09:29:26 +00:00
nicm
95afd7549c
Rewrite screen-redraw.c to make it tidier and more maintainable. A scene
...
is generated and cached in the client: it holds positions and sizes of
panes, borders and so on. The scene is invalidated when a pane is moved
or resized or relevant option is changed. This scene is then drawn to
the client as needed and text and colours are filled in. With Michael
Grant.
2026-06-22 08:47:45 +00:00
nicm
e680420c89
Place floating cells meaningfully into the layouts, from Dane Jensen.
2026-06-22 08:10:16 +00:00
nicm
047f61aad6
popup_write can be deleted now also.
2026-06-19 18:41:36 +00:00
nicm
d92a479d2f
Add a dim= style attribute to dim the colours (as best as tmux is able
...
to). GitHub issue 4842.
2026-06-18 09:59:55 +00:00
nicm
b1b184cdb8
Add functions to work out cell neighbours, and to remove a tiled cell.
...
From Dane Jensen.
2026-06-18 09:11:24 +00:00
nicm
3485e1c089
Tidy up server_client_check_redraw. Get rid of the bitmask tracking
...
panes which want redraw for deferred clients - if they are deferred then
they can just have a full redraw instead. Also return earlier if no
redraw is actually needed, and improve the comments.
2026-06-17 13:22:48 +00:00
nicm
9ad75e1dc3
Rename the visible ranges functions since they really relate to windows
...
and put them nto a new file.
2026-06-16 10:47:35 +00:00
nicm
482e254a49
Rename window_pane_visible to match other functions, from Dane Jensen.
2026-06-15 21:47:01 +00:00
nicm
eb65331403
Be more strict about what names and titles we allow and reject them
...
immediately when possible, but allow # again for those directly set by
commands (but not escape sequences). From Barrett Ruth in GitHub issue
5175.
2026-06-15 21:41:39 +00:00
nicm
b86bd1fcd0
Add pane-border-lines none like popups (-B to new-pane).
2026-06-15 17:34:25 +00:00
nicm
a41e6e2ed2
Add -B to new-pane to select the floating pane border.
2026-06-15 09:21:40 +00:00
nicm
7a18fa281d
Add top-floating and bottom-floating to pane-border-status to show
...
status line only on floating panes.
2026-06-15 08:16:05 +00:00
nicm
97b5f22a70
When redrawing a whole pane line, fall into tty_draw_line for any
...
characters that are not plain ASCII. Fixes redraw issues with partial
tabs and other wide characters when a pane is partly outside the window.
2026-06-15 07:40:45 +00:00
nicm
87976aa48e
Add a helper to get pane-border-status for a window for some other
...
changes to come.
2026-06-14 19:31:37 +00:00
nicm
bf187170b1
Extend client mode so the preview can be changed to a view with a
...
summary of the client terminal and its features, intended to make
troubleshooting easier. "choose-client -i" or the "i" key in the mode.
2026-06-13 10:32:54 +00:00
nicm
b44cdf1006
Add an I format modifier to get some bits of information about a client
...
(terminal features, capabilities and environment).
2026-06-13 09:17:29 +00:00
nicm
b6be437bab
Change send-keys -K to insert keys in the right place in the queue, like
...
we already do for key bindings. GitHub issue 3476.
2026-06-11 19:13:34 +00:00
nicm
fa6d33f742
Add a helper to free the list of pending resizes.
2026-06-11 14:19:59 +00:00
nicm
3ea458b9dc
Add support for floating panes to resize-pane, from Dane Jensen.
2026-06-11 10:16:19 +00:00
nicm
2719549cf2
Rename new-pane -B to -W since -B is best kept to match -B to
...
display-popup.
2026-06-10 16:03:14 +00:00
nicm
8cb4aabb8b
Replace refresh-from-pane in copy mode with a way to automatically
...
update as pane content changes. This is toggled by pressing r. GitHub
issue 5165 from Barrett Ruth.
2026-06-10 14:29:08 +00:00
nicm
d533d7c97c
Add a context for cell/palette/hyperlinks when drawing to tty to avoid
...
passing so much in parameters.
2026-06-09 21:22:22 +00:00
nicm
d5c9196348
Add -B to new-pane/split-window to block until the command exits, like
...
run-shell -b.
2026-06-09 09:11:05 +00:00
nicm
4d1ab1ba2a
Allow ACLs to use groups as well as users, GitHub issue 4917.
2026-06-08 21:38:19 +00:00
nicm
fe986a52d6
When entering or leaving the alternate screen, discard any pending
...
resizes. Improves flicking with scrollbars and programs that leave and
enter the alternate screen on every WINCH like nano. GitHub issue 4772.
Cvs: ----------------------------------------------------------------------
2026-06-08 20:41:21 +00:00
nicm
a532f4868f
Add -H flag to capture-pane to show hyperlinks.
2026-06-07 20:03:02 +00:00
nicm
35709a30ee
Change so that floating panes are always part of the root layout. From
...
Dane Jensen.
2026-06-06 17:30:48 +00:00
nicm
6beebbe074
Fix scrollbar drag position when window is taller than tty, from Michael
...
Grant.
2026-06-04 09:24:03 +00:00
nicm
a3bf632276
Move cell creation into layout.c, from Dane Jensen.
2026-06-02 19:25:06 +00:00
nicm
ae6a749d3a
Move the PANE_FLOATING flag into the layout cell and add an accessor.
...
From Dane Jensen.
2026-06-02 08:13:50 +00:00
nicm
9725a0b9bf
Remove the actual LAYOUT_FLOATING enum member.
2026-06-01 20:10:01 +00:00
nicm
f6557d1ea2
Add a Z sort order in tree mode.
2026-06-01 18:19:51 +00:00
nicm
f8ab7a5158
Handle ranges for panes which are outside the window to the left.
2026-05-30 11:19:39 +00:00
nicm
ecfe6e4e7a
Check visible ranges for collected cell output.
2026-05-28 07:23:52 +00:00
nicm
bbe26df83d
Add an accessor function needed for floating panes.
2026-05-27 19:36:04 +00:00
nicm
9cc8947a43
Cache border and active border style separately, fixes problem reported
...
by Marcel Partap in GitHub issue 5125.
2026-05-27 13:41:20 +00:00
nicm
d45a9cad8c
Work out if a pane is obscured by another one when drawing.
2026-05-22 11:55:43 +00:00
nicm
36bc351557
Use a union for the data passed around in tty_ctx instead of void *.
2026-05-22 09:21:32 +00:00
nicm
d5ee330d20
Tidy up a load of different flags and special values in the tty_ctx into
...
a single bitmask.
2026-05-22 09:05:16 +00:00
nicm
9aa9a92f72
Pane resizing code for floating panes, mostly by Michael Grant.
2026-05-21 07:28:51 +00:00
nicm
0057905ca0
Increase escape delay if the buffer contains a partial paste end, fixes
...
issues with at least Windows Terminal. From jing dot empty at gmail.com
GitHub issue 5088.
2026-05-20 10:56:46 +00:00
nicm
ce24b92758
Floating panes full redraw code, by Michael Grant.
2026-05-19 13:12:45 +00:00
nicm
a46cdb8bbc
More (currently disabled) bits for creating floating panes, from Michael
...
Grant and Dane Jensen.
2026-05-19 10:26:03 +00:00