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
6b1219b370
Ignore mouse when help is open.
2026-06-24 21:47:06 +00:00
nicm
ba9faae8b6
Free modes rather than going through reset when pane is destroyed as the
...
reset path may try to destroy the pane again.
2026-06-24 21:10:05 +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
0a71af41be
Handle different borders in move-pane, from Dane Jensen.
2026-06-24 08:52:15 +00:00
nicm
8fb484da37
Remove target completion which never worked very well, leave only
...
command completion.
2026-06-24 08:35:46 +00:00
nicm
55cfdbaa3f
Remove fuzzy match operator again for now, this will be done differently.
2026-06-23 23:53:06 +00:00
nicm
1b5a07a740
Rename prompt-input to match the usual format names.
2026-06-23 23:52: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
de086f9848
Fix an infinite loop in customize mode when a filter does not match, and
...
tweak a tmux.1 example.
2026-06-23 11:29:27 +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
3ec115115d
Do not leak error message, use it instead. From Dane Jensen.
2026-06-23 09:13:30 +00:00
nicm
748ef8b2ae
Extend match to do multiple terms.
2026-06-23 08:35:28 +00:00
nicm
b82048eb18
Add c key to clear filter.
2026-06-23 08:20:15 +00:00
nicm
265f22be49
Make cursor movement exit incremental prompt (more like emacs).
2026-06-22 19:43:22 +00:00
nicm
2a26c738bd
Add z modifier to m operator for fuzzy match.
2026-06-22 19:39:01 +00:00
nicm
02b37b3c69
Fix scrollbar pad to work even if not set in style.
2026-06-22 13:57:33 +00:00
nicm
d8370864f3
Memory leak from someone in GitHub issue 5259.
2026-06-22 12:39:56 +00:00
nicm
49dff83a00
Set check callback for menus so they aren't overwritten by sync.
2026-06-22 10:17:08 +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
347baa6f3e
Do not walk off end or beginning of menu item list if every item is
...
disabled, GitHub issue 5255 from aizumusheer2 at gmail dot com.
2026-06-21 17:43:47 +00:00
nicm
1fc4dcb76f
Error if key is unknown rather than just carry on, GitHub issue 5248.
2026-06-20 08:51:28 +00:00
nicm
dcd7d1c8e6
Fix {} keys in tmux.1, pointed out by tb.
2026-06-20 08:46:08 +00:00
nicm
047f61aad6
popup_write can be deleted now also.
2026-06-19 18:41:36 +00:00
nicm
d04b1ffca5
Use a floating pane for the buffer mode editor instead of a popup.
2026-06-19 18:37:10 +00:00
nicm
c93e2f2332
Do not loop forever if a pane ends up with borders the wrong way round.
2026-06-19 18:28:18 +00:00
nicm
6c46358be8
Draw help directly instead of using a popup.
2026-06-19 17:37:26 +00:00
nicm
624db256c6
Add a loop_index variable and use it to show last used 5 sessions on the
...
session menu instead of next/previous.
2026-06-19 16:25:43 +00:00
nicm
f06d930445
Correctly report theme changes to panes, based on a fix from someone in
...
GitHub issue 5246.
2026-06-19 16:00:03 +00:00
nicm
b29f5688bd
Make default M-C-Up/Down bound to prompt movement commands in copy mode.
2026-06-19 15:28:26 +00:00
nicm
b1c72ec48c
Use a helper and skip some setup for empty cells.
2026-06-19 10:38:29 +00:00
nicm
e7f649e40a
Tidy up a bit in tty_draw_line.
2026-06-19 09:56:53 +00:00
nicm
035447b08f
Do not dereference the current window if it is NULL (can be if the
...
notification fires after session is destroyed). GitHub issue 5244 from
Ben Maurer.
2026-06-19 08:21:55 +00:00
nicm
14fc4a06a6
Unescape arguments before passing to format_expand1 so that escaping :s
...
etc actually works.
2026-06-18 11:54:37 +00:00
nicm
cba4ba9cdc
Check time periodically in loops rather than every one.
2026-06-18 11:45:08 +00:00
nicm
0a6c846091
Use evbuffer for building S, W, L lists, also add an xmemdup helper
...
instead of misusing asprintf.
2026-06-18 10:56:22 +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
1a6de01210
Check the panes again if deferred redraw to make sure the flag is always
...
set. Also add a helper for the loop.
2026-06-18 08:56:07 +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
1ba8fa6f04
Fix shifts to 1ULL and check scrollbar even if pane is not being redrawn.
2026-06-17 12:32:54 +00:00
nicm
d4defd943a
Add -M to move-pane and default bindings for M-drag. From Michael Grant.
2026-06-17 07:52:21 +00:00
nicm
eafd2bed5d
FIx a couple of minor errors in use of layout_cell_is_tiled.
2026-06-17 07:43:55 +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
4b772fd783
Allow rectangle selection to extend past end of current line to behave
...
the same as vi with virtualedit=block set. From Mark Kelly in GitHub
issue 5227.
2026-06-16 09:28:17 +00:00
nicm
fcbb6a7384
Initialize wname so it we are not freeing garbage if it is not used.
2026-06-16 09:00:25 +00:00