diff options
Diffstat (limited to 'CHANGES')
-rw-r--r-- | CHANGES | 3528 |
1 files changed, 3528 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES new file mode 100644 index 00000000..a12a6e72 --- /dev/null +++ b/CHANGES @@ -0,0 +1,3528 @@ +CHANGES FROM 3.3a to 3.4 + +* Add options keep-last and keep-group to destroy-unattached to keep the last + session whether in a group. + +* Don't allow paste-buffer into dead panes. + +* Add -t to source-file. + +* Rewrite combined character handling to be more consistent and to support + newer Unicode combined characters. + +* Add basic support for SIXEL if built with --enable-sixel. + +* Add a session, pane and user mouse range types for the status line and add + format variables for mouse_status_line and mouse_status_range so they can be + associated with different commands in the key bindings. + +* Add flag (-o) to next-prompt/previous-prompt to go to OSC 133 command output. + +* Add options and flags for menu styles (menu-style, menu-border-style) similar + to those existing for popups. + +* Add support for marking lines with a shell prompt based on the OSC 133 extension. + +* Check for libterminfo for NetBSD. + +* Add "us" to styles for underscore colour. + +* Add flags (-c and -y) to change the confirm key and default behaviour of + confirm-before. + +* Use ncurses' new tparm_s function (added in 6.4-20230424) instead of tparm so + it does not object to string arguments in c apabilities it doesn't already + know. Also ignore errors from tparm if using previous ncurses versions. + +* Set default lock command to vlock on Linux if present at build time. + +* Discard mouse sequences that have the right form but actually are invalid. + +* Add support for spawning panes in separate cgroups with systemd and a + configure flag (--disable-cgroups) to turn off. + +* Add a format (pane_unseen_changes) to show if there are unseen changes while + in a mode. + +* Remove old buffer when renaming rather than complaining. + +* Add an L modifier like P, W, S to loop over clients. + +* Add -f to list-clients like the other list commands. + +* Extend display-message to work for control clients. + +* Add a flag to display-menu to select the manu item selected when the menu is + open. + +* Have tmux recognise pasted text wrapped in bracket paste sequences, rather + than only forwarding them to the program inside. + +* Have client return 1 if process is interrupted to an input pane. + +* Query the client terminal for foreground and background colours and if OSC 10 + or 11 is received but no colour has been set inside tmux, return the colour + from the first attached client. + +* Add send-keys -K to handle keys directly as if typed (so look up in key + table). + +* Process escape sequences in show-buffer. + +* Add a -l flag to display-message to disable format expansion. + +* Add paste-buffer-deleted notification and fix name of paste-buffer-changed. + +* Do not attempt to connect to the socket as a client if systemd is active. + +* Add scroll-top and scroll-bottom commands to scroll so cursor is at top or + bottom. + +* Add a -T flag to capture-pane to stop at the last used cell instead of the + full width. Restore the previous behaviour by making it default to off unless + -J is used. + +* Add message-line option to control where message and prompt go. + +* Notification when a paste buffer is deleted. + +* Add a Nobr terminfo(5) capability to tell tmux the terminal does not use bright + colours for bold. + +* Change g and G to go to top and bottom in menus. + +* Add a third state "all" to allow-passthrough to work even in invisible panes. + +* Add support for OSC 8 hyperlinks. + +* Store the time lines are scrolled into history and display in copy mode. + +* Add a %config-error reply to control mode for configuration file errors since + reporting them in view mode is useless. + +* A new feature flag (ignorefkeys) to ignore terminfo(5) function key + definitions for rxvt. + +* Pass through first argument to OSC 52 (which clipboards to set) if the + application provides it. + +* Expand arguments to send-keys, capture-pane, split-window, join-pane where it + makes sense to do so. + +* Ignore named buffers when choosing a buffer if one is not specified by the user. + +CHANGES FROM 3.3 TO 3.3a + +* Do not crash when run-shell produces output from a config file. + +* Do not unintentionally turn off all mouse mode when button mode is also + present. + +CHANGES FROM 3.2a TO 3.3 + +* Add an ACL list for users connecting to the tmux socket. Users may be + forbidden from attaching, forced to attach read-only, or allowed to attach + read-write. A new command, server-access, configures the list. File system + permissions must still be configured manually. + +* Emit window-layout-changed on swap-pane. + +* Better error reporting when applying custom layouts. + +* Handle ANSI escape sequences in run-shell output. + +* Add pane_start_path to match start_command. + +* Set PWD so shells have a hint about the real path. + +* Do not allow pipe-pane on dead panes. + +* Do not report mouse positions (incorrectly) above the maximum of 223 in + normal mouse mode. + +* Add an option (default off) to control the passthrough escape sequence. + +* Support more mouse buttons when the terminal sends them. + +* Add a window-resized hook which is fired when the window is actually resized + which may be later than the client resize. + +* Add next_session_id format with the next session ID. + +* Add formats for client and server UID and user. + +* Add argument to refresh-client -l to forward clipboard to a pane. + +* Add remain-on-exit-format to set text shown when pane is dead. + +* With split-window -f use percentages of window size not pane size. + +* Add an option (fill-character) to set the character used for unused areas of + a client. + +* Add an option (scroll-on-clear) to control if tmux scrolls into history on + clear. + +* Add a capability for OSC 7 and use it similarly to how the title is set (and + controlled by the same set-titles option). + +* Add support for systemd socket activation (where systemd creates the Unix + domain socket for tmux rather than tmux creating it). Build with + --enable-systemd. + +* Add an option (pane-border-indicators) to select how the active pane is shown + on the pane border (colour, arrows or both). + +* Support underscore styles with capture-pane -e. + +* Make pane-border-format a pane option rather than window. + +* Respond to OSC 4 queries + +* Fix g/G keys in modes to do the same thing as copy mode (and vi). + +* Bump the time terminals have to respond to device attributes queries to three + seconds. + +* If automatic-rename is off, allow the rename escape sequence to set an empty + name. + +* Trim menu item text more intelligently. + +* Add cursor-style and cursor-colour options to set the default cursor style + and colour. + +* Accept some useful and non-conflicting emacs keys in vi normal mode at the + command prompt. + +* Add a format modifier (c) to force a colour to RGB. + +* Add -s and -S to display-popup to set styles, -b to set lines and -T to set + popup title. New popup-border-lines, popup-border-style and popup-style + options set the defaults. + +* Add -e flag to set an environment variable for a popup. + +* Make send-keys without arguments send the key it is bound to (if bound to a + key). + +* Try to leave terminal cursor at the right position even when tmux is drawing + its own cursor or selection (such as at the command prompt and in choose + mode) for people using screen readers and similar which can make use of it. + +* Change so that {} is converted to tmux commands immediately when parsed. This + means it must contain valid tmux commands. For commands which expand %% and + %%%, this now only happens within string arguments. Use of nested aliases + inside {} is now forbidden. Processing of commands given in quotes remains + the same. + +* Disable evports on SunOS since they are broken. + +* Do not expand the file given with tmux -f so it can contain :s. + +* Bump FORMAT_LOOP_LIMIT and add a log message when hit. + +* Add a terminal feature for the mouse (since FreeBSD termcap does not have kmous). + +* Forbid empty session names. + +* Improve error reporting when the tmux /tmp directory cannot be created or + used. + +* Give #() commands a one second grace period where the output is empty before + telling the user they aren't doing anything ("not ready"). + +* When building, pick default-terminal from the first of tmux-256color, tmux, + screen-256color, screen that is available on the build system (--with-TERM + can override). + +* Do not close popups on resize, instead adjust them to fit. + +* Add a client-active hook. + +* Make window-linked and window-unlinked window options. + +* Do not configure on macOS without the user making a choice about utf8proc + (either --enable-utf8proc or --disable-utf8proc). + +* Do not freeze output in panes when a popup is open, let them continue to + redraw. + +* Add pipe variants of the line copy commands. + +* Change copy-line and copy-end-of-line not to cancel and add -and-cancel + variants, like the other copy commands. + +* Support the OSC palette-setting sequences in popups. + +* Add a pane-colours array option to specify the defaults palette. + +* Add support for Unicode zero-width joiner. + +* Make newline a style delimiter as well so they can cross multiple lines for + readability in configuration files. + +* Change focus to be driven by events rather than scanning panes so the + ordering of in and out is consistent. + +* Add display-popup -B to open a popup without a border. + +* Add a menu for popups that can be opened with button three outside the popup + or on the left or top border. Resizing now only works on the right and bottom + borders or when using Meta. The menu allows a popup to be closed, expanded to + the full size of the client, centered in the client or changed into a pane. + +* Make command-prompt and confirm-before block by default (like run-shell). A + new -b flags runs them in the background as before. Also set return code for + confirm-before. + +* Change cursor style handling so tmux understands which sequences contain + blinking and sets the flag appropriately, means that it works whether cnorm + disables blinking or not. This now matches xterm's behaviour. + +* More accurate vi(1) word navigation in copy mode and on the status line. This + changes the meaning of the word-separators option: setting it to the empty + string is equivalent to the previous behavior. + +* Add -F for command-prompt and use it to fix "Rename" on the window menu. + +* Add different command histories for different types of prompts ("command", + "search" etc). + +CHANGES FROM 3.2 TO 3.2a + +* Add an "always" value for the "extended-keys" option; if set then tmux will + forward extended keys to applications even if they do not request them. + +* Add a "mouse" terminal feature so tmux can enable the mouse on terminals + where it is known to be supported even if terminfo(5) says otherwise. + +* Do not expand the filename given to -f so it can contain colons. + +* Fixes for problems with extended keys and modifiers, scroll region, + source-file, crosscompiling, format modifiers and other minor issues. + +CHANGES FROM 3.1c TO 3.2 + +* Add a flag to disable keys to close a message. + +* Permit shortcut keys in buffer, client, tree modes to be configured with a + format (-K flag to choose-buffer, choose-client, choose-tree). + +* Add a current_file format for the config file being parsed. + +* When display-message used in config file, show the message after the config + file finishes. + +* Add client-detached notification in control mode. + +* Improve performance of format evaluation. + +* Make jump command support UTF-8 in copy mode. + +* Support X11 colour names and other colour formats for OSC 10 and 11. + +* Add "pipe" variants of "copy-pipe" commands which do not copy. + +* Include "focused" in client flags. + +* Send Unicode directional isolate characters around horizontal pane borders if + the terminal supports UTF-8 and an extension terminfo(5) capability "Bidi" is + present. + +* Add a -S flag to new-window to make it select the existing window if one + with the given name already exists rather than failing with an error. + +* Add a format modifier to check if a window or session name exists (N/w or + N/s). + +* Add compat clock_gettime for older macOS. + +* Add a no-detached choice to detach-on-destroy which detaches only if there + are no other detached sessions to switch to. + +* Add rectangle-on and rectangle-off copy mode commands. + +* Change so that window_flags escapes # automatically. A new format + window_raw_flags contains the old unescaped version. + +* Add -N flag to never start server even if command would normally do so. + +* With incremental search, start empty and only repeat the previous search if + the user tries to search again with an empty prompt. + +* Add a value for remain-on-exit that only keeps the pane if the program + failed. + +* Add a -C flag to run-shell to use a tmux command rather than a shell command. + +* Do not list user options with show-hooks. + +* Remove current match indicator in copy mode which can't work anymore since we + only search the visible region. + +* Make synchronize-panes a pane option and add -U flag to set-option to unset + an option on all panes. + +* Make replacement of ##s consistent when drawing formats, whether followed by + [ or not. Add a flag (e) to the q: format modifier to double up #s. + +* Add -N flag to display-panes to ignore keys. + +* Change how escaping is processed for formats so that ## and # can be used in + styles. + +* Add a 'w' format modifier for string width. + +* Add support for Haiku. + +* Expand menu and popup -x and -y as formats. + +* Add numeric comparisons for formats. + +* Fire focus events even when the pane is in a mode. + +* Add -O flag to display-menu to not automatically close when all mouse buttons + are released. + +* Allow fnmatch(3) wildcards in update-environment. + +* Disable nested job expansion so that the result of #() is not expanded again. + +* Use the setal capability as well as (tmux's) Setulc. + +* Add -q flag to unbind-key to hide errors. + +* Allow -N without a command to change or add a note to an existing key. + +* Add a -w flag to set- and load-buffer to send to clipboard using OSC 52. + +* Add -F to set-environment and source-file. + +* Allow colour to be spelt as color in various places. + +* Add n: modifier to get length of a format. + +* Respond to OSC colour requests if a colour is available. + +* Add a -d option to display-message to set delay. + +* Add a way for control mode clients to subscribe to a format and be notified + of changes rather than having to poll. + +* Add some formats for search in copy mode (search_present, search_match). + +* Do not wait on shutdown for commands started with run -b. + +* Add -b flags to insert a window before (like the existing -a for after) to + break-pane, move-window, new-window. + +* Make paste -p the default for ]. + +* Add support for pausing a pane when the output buffered for a control mode + client gets too far behind. The pause-after flag with a time is set on the + pane with refresh-client -f and a paused pane may be resumed with + refresh-client -A. + +* Allow strings in configuration files to span multiple lines - newlines and + any leading whitespace are removed, as well as any following comments that + couldn't be part of a format. This allows long formats or other strings to be + annotated and indented. + +* Instead of using a custom parse function to process {} in configuration + files, treat as a set of statements the same as outside {} and convert back + to a string as the last step. This means the rules are consistent inside and + outside {}, %if and friends work at the right time, and the final result + isn't littered with unnecessary newlines. + +* Add support for extended keys - both xterm(1)'s CSI 27 ~ sequence and the + libtickit CSI u sequence are accepted; only the latter is output. tmux will + only attempt to use these if the extended-keys option is on and it can detect + that the terminal outside supports them (or is told it does with the + "extkeys" terminal feature). + +* Add an option to set the pane border lines style from a choice of single + lines (ACS or UTF-8), double or heavy (UTF-8), simple (plain ASCII) or number + (the pane numbers). Lines that won't work on a non-UTF-8 terminal are + translated back into ACS when they are output. + +* Make focus events update the latest client (like a key press). + +* Store UTF-8 characters differently to reduce memory use. + +* Fix break-pane -n when only one pane in the window. + +* Instead of sending all data to control mode clients as fast as possible, add + a limit of how much data will be sent to the client and try to use it for + panes with some degree of fairness. + +* Add an active-pane client flag (set with attach-session -f, new-session -f + or refresh-client -f). This allows a client to have an independent active + pane for interactive use (the window client pane is still used for many + things however). + +* Add a mark to copy mode, this is set with the set-mark command (bound to X) + and appears with the entire line shown using copy-mode-mark-style and the + marked character in reverse. The jump-to-mark command (bound to M-x) swaps + the mark and the cursor positions. + +* Add a -D flag to make the tmux server run in the foreground and not as a + daemon. + +* Do not loop forever in copy mode when search finds an empty match. + +* Fix the next-matching-bracket logic when using vi(1) keys. + +* Add a customize mode where options may be browsed and changed, includes + adding a brief description of each option. Bound to C-b C by default. + +* Change message log (C-b ~) so there is one for the server rather than one per + client and it remains after detach, and make it useful by logging every + command. + +* Add M-+ and M-- to tree mode to expand and collapse all. + +* Change the existing client flags for control mode to apply for any client, + use the same mechanism for the read-only flag and add an ignore-size flag. + + refresh-client -F has become -f (-F stays for backwards compatibility) and + attach-session and switch-client now have -f flags also. A new format + client_flags lists the flags and is shown by list-clients by default. + + This separates the read-only flag from "ignore size" behaviour (new + ignore-size) flag - both behaviours are useful in different circumstances. + + attach -r and switchc -r remain and set or toggle both flags together. + +* Store and restore cursor position when copy mode is resized. + +* Export TERM_PROGRAM and TERM_PROGRAM_VERSION like various other terminals. + +* Add formats for after hook command arguments: hook_arguments with all the + arguments together; hook_argument_0, hook_argument_1 and so on with + individual arguments; hook_flag_X if flag -X is present; hook_flag_X_0, + hook_flag_X_1 and so on if -X appears multiple times. + +* Try to search the entire history first for up to 200 ms so a search count can + be shown. If it takes too long, search the visible text only. + +* Use VIS_CSTYLE for paste buffers also (show \012 as \n). + +* Change default formats for tree mode, client mode and buffer mode to be more + compact and remove some clutter. + +* Add a key (e) in buffer mode to open the buffer in an editor. The buffer + contents is updated when the editor exits. + +* Add -e flag for new-session to set environment variables, like the same flag + for new-window. + +* Improve search match marking in copy mode. Two new options + copy-mode-match-style and copy-mode-current-match-style to set the style for + matches and for the current match respectively. Also a change so that if a + copy key is pressed with no selection, the current match (if any) is copied. + +* Sanitize session names like window names instead of forbidding invalid ones. + +* Check if the clear terminfo(5) capability starts with CSI and if so then + assume the terminal is VT100-like, rather than relying on the XT capability. + +* Improve command prompt tab completion and add menus both for strings and -t + and -s (when used without a trailing space). command-prompt has additional + flags for only completing a window (-W) and a target (-T), allowing C-b ' to + only show windows and C-b . only targets. + +* Change all the style options to string options so they can support formats. + Change pane-active-border-style to use this to change the border colour when + in a mode or with synchronize-panes on. This also implies a few minor changes + to existing behaviour: + + - set-option -a with a style option automatically inserts a comma between the + old value and appended text. + + - OSC 10 and 11 no longer set the window-style option, instead they store the + colour internally in the pane data and it is used as the default when the + option is evaluated. + + - status-fg and -bg now override status-style instead of the option values + being changed. + +* Add extension terminfo(5) capabilities for margins and focus reporting. + +* Try $XDG_CONFIG_HOME/tmux/tmux.conf as well as ~/.config/tmux/tmux.conf for + configuration file (the search paths are in TMUX_CONF in Makefile.am). + +* Remove the DSR 1337 iTerm2 extension and replace by the extended device + attributes sequence (CSI > q) supported by more terminals. + +* Add a -s flag to copy-mode to specify a different pane for the source + content. This means it is possible to view two places in a pane's history at + the same time in different panes, or view the history while still using the + pane. Pressing r refreshes the content from the source pane. + +* Add an argument to list-commands to show only a single command. + +* Change copy mode to make copy of the pane history so it does not need to + freeze the pane. + +* Restore pane_current_path format from portable tmux on OpenBSD. + +* Wait until the initial command sequence is done before sending a device + attributes request and other bits that prompt a reply from the terminal. This + means that stray replies are not left on the terminal if the command has + attached and then immediately detached and tmux will not be around to receive + them. + +* Add a -f filter argument to the list commands like choose-tree. + +* Move specific hooks for panes to pane options and windows for window options + rather than all hooks being session options. These hooks are now window options: + + window-layout-changed + window-linked + window-pane-changed + window-renamed + window-unlinked + + And these are now pane options: + + pane-died + pane-exited + pane-focus-in + pane-focus-out + pane-mode-changed + pane-set-clipboard + + Any existing configurations using these hooks on a session rather than + globally (that is, set-hook or set-option without -g) may need to be changed. + +* Show signal names when a process exits with remain-on-exit on platforms which + have a way to get them. + +* Start menu with top item selected if no mouse and use mode-style for the + selected item. + +* Add a copy-command option and change copy-pipe and friends to pipe to it if + used without arguments, allows all the default copy key bindings to be + changed to pipe with one option rather than needing to change each key + binding individually. + +* Tidy up the terminal detection and feature code and add named sets of + terminal features, each of which are defined in one place and map to a + builtin set of terminfo(5) capabilities. Features can be specified based on + TERM with a new terminal-features option or with the -T flag when running + tmux. tmux will also detect a few common terminals from the DA and DSR + responses. + + This is intended to make it easier to configure tmux's use of terminfo(5) + even in the presence of outdated ncurses(3) or terminfo(5) databases or for + features which do not yet have a terminfo(5) entry. Instead of having to grok + terminfo(5) capability names and what they should be set to in the + terminal-overrides option, the user can hopefully just give tmux a feature + name and let it do the right thing. + + The terminal-overrides option remains both for backwards compatibility and to + allow tweaks of individual capabilities. + +* Support mintty's application escape sequence (means tmux doesn't have to + delay to wait for Escape, so no need to reduce escape-time when using + mintty). + +* Change so main-pane-width and height can be given as a percentage. + +* Support for the iTerm2 synchronized updates feature (allows the terminal to + avoid unnecessary drawing while output is still in progress). + +* Make the mouse_word and mouse_line formats work in copy mode and enable the + default pane menu in copy mode. + +* Add a -T flag to resize-pane to trim lines below the cursor, moving lines out + of the history. + +* Add a way to mark environment variables as "hidden" so they can be used by + tmux (for example in formats) but are not set in the environment for new + panes. set-environment and show-environment have a new -h flag and there is a + new %hidden statement for the configuration file. + +* Change default position for display-menu -x and -y to centre rather than top + left. + +* Add support for per-client transient popups, similar to menus but which are + connected to an external command (like a pane). These are created with new + command display-popup. + +* Change double and triple click bindings so that only one is fired (previously + double click was fired on the way to triple click). Also add default double + and triple click bindings to copy the word or line under the cursor and + change the existing bindings in copy mode to do the same. + +* Add a default binding for button 2 to paste. + +* Add -d flag to run-shell to delay before running the command and allow it to + be used without a command so it just delays. + +* Add C-g to cancel command prompt with vi keys as well as emacs, and q in + command mode. + +* When the server socket is given with -S, create it with umask 177 instead of + 117 (because it may not be in a safe directory like the default directory in + /tmp). + +* Add a copy-mode -H flag to hide the position marker in the top right. + +* Add number operators for formats (+, -, *, / and m), + +CHANGED FROM 3.1b TO 3.1c + +* Do not write after the end of the array and overwrite the stack when + colon-separated SGR sequences contain empty arguments. + +CHANGES FROM 3.1a TO 3.1b + +* Fix build on systems without sys/queue.h. + +* Fix crash when allow-rename is on and an empty name is set. + +CHANGES FROM 3.1 TO 3.1a + +* Do not close stdout prematurely in control mode since it is needed to print + exit messages. Prevents hanging when detaching with iTerm2. + +CHANGES FROM 3.0a TO 3.1 + +* Only search the visible part of the history when marking (highlighting) + search terms. This is much faster than searching the whole history and solves + problems with large histories. The count of matches shown is now the visible + matches rather than all matches. + +* Search using regular expressions in copy mode. search-forward and + search-backward use regular expressions by default; the incremental versions + do not. + +* Turn off mouse mode 1003 as well as the rest when exiting. + +* Add selection_active format for when the selection is present but not moving + with the cursor. + +* Fix dragging with modifier keys, so binding keys such as C-MouseDrag1Pane and + C-MouseDragEnd1Pane now work. + +* Add -a to list-keys to also list keys without notes with -N. + +* Do not jump to next word end if already on a word end when selecting a word; + fixes select-word with single character words and vi(1) keys. + +* Fix top and bottom pane calculation with pane border status enabled. + +* Add support for adding a note to a key binding (with bind-key -N) and use + this to add descriptions to the default key bindings. A new -N flag to + list-keys shows key bindings with notes. Change the default ? binding to use + this to show a readable summary of keys. Also extend command-prompt to return + the name of the key pressed and add a default binding (/) to show the note + for the next key pressed. + +* Add support for the iTerm2 DSR 1337 sequence to get the terminal version. + +* Treat plausible but invalid keys (like C-BSpace) as literal like any other + unrecognised string passed to send-keys. + +* Detect iTerm2 and enable use of DECSLRM (much faster with horizontally split + windows). + +* Add -Z to default switch-client command in tree mode. + +* Add ~ to quoted characters for %%%. + +* Document client exit messages in the manual page. + +* Do not let read-only clients limit the size, unless all clients are + read-only. + +* Add a number of new formats to inspect what sessions and clients a window is + present or active in. + +* Change file reading and writing to go through the client if necessary. This + fixes commands like "tmux loadb /dev/fd/X". Also modify source-file to + support "-" for standard input, like load-buffer and save-buffer. + +* Add ~/.config/tmux/tmux.conf to the default search path for configuration + files. + +* Bump the escape sequence timeout to five seconds to allow for longer + legitimate sequences. + +* Make a best effort to set xpixel and ypixel for each pane and add formats for + them. + +* Add push-default to status-left and status-right in status-format[0]. + +* Do not clear search marks on cursor movement with vi(1) keys. + +* Add p format modifier for padding to width and allow multiple substitutions + in a single format. + +* Add -f for full size to join-pane (like split-window). + +* Do not use bright when emulating 256 colours on an 8 colour terminal because + it is also bold on some terminals. + +* Make select-pane -P set window-active-style also to match previous behaviour. + +* Do not truncate list-keys output. + +* Turn automatic-rename back on if the \033k rename escape sequence is used + with an empty name. + +* Add support for percentage sizes for resize-pane ("-x 10%"). Also change + split-window and join-pane -l to accept similar percentages and deprecate the + -p flag. + +* Add -F flag to send-keys to expand formats in search-backward and forward + copy mode commands and copy_cursor_word and copy_cursor_line formats for word + and line at cursor in copy mode. Use for default # and * binding with vi(1) + keys. + +* Add formats for word and line at cursor position in copy mode. + +* Add formats for cursor and selection position in copy mode. + +* Support all the forms of RGB colour strings in OSC sequences rather than + requiring two digits. + +* Limit lazy resize to panes in attached sessions only. + +* Add an option to set the key sent by backspace for those whose system uses ^H + rather than ^?. + +* Change new-session -A without a session name (that is, no -s option also) to + attach to the best existing session like attach-session rather than a new + one. + +* Add a "latest" window-size option which tries to size windows based on the + most recently used client. This is now the default. + +* Add simple support for OSC 7 (result is available in the pane_path format). + +* Add push-default and pop-default for styles which change the colours and + attributes used for #[default]. These are used in status-format to restore + the behaviour of window-status-style being the default for + window-status-format. + +* Add window_marked_flag. + +* Add cursor-down-and-cancel in copy mode. + +* Default to previous search string for search-forward and search-backward. + +* Add -Z flag to rotate-window, select-pane, swap-pane, switch-client to + preserve zoomed state. + +* Add -N to capture-pane to preserve trailing spaces. + +* Add reverse sorting in tree, client and buffer modes. + +CHANGES FROM 3.0 TO 3.0a + +* Do not require REG_STARTEND. + +* Respawn panes or windows correctly if default-command is set. + +* Add missing option for after-kill-pane hook. + +* Fix for crash with a format variable that doesn't exist. + +* Do not truncate list-keys output on some platforms. + +* Do not crash when restoring a layout with only one pane. + +CHANGES FROM 2.9 TO 3.0 + +* Workaround invalid layout strings generated by older tmux versions and add + some additional sanity checks + +* xterm 348 now disables margins when resized, so send DECLRMM again after + resize. + +* Add support for the SD (scroll down) escape sequence. + +* Expand arguments to C and s format modifiers to match the m modifier. + +* Add support for underscore colours (Setulc capability must be added with + terminal-overrides as described in tmux(1)). + +* Add a "fill" style attribute for the fill colour of the drawing area (where + appropriate). + +* New -H flag to send-keys to send literal keys. + +* Format variables for pane mouse modes (mouse_utf8_flag and mouse_sgr_flag) + and for origin mode (origin_flag). + +* Add -F to refresh-client for flags for control mode clients, only one flag + (no-output) supported at the moment. + +* Add a few vi(1) keys for menus. + +* Add pane options, set with set-option -p and displayed with show-options -p. + Pane options inherit from window options (so every pane option is also + a window option). The pane style is now configured by setting window-style + and window-active-style in the pane options; select-pane -P and -g now change + the option but are no longer documented. + +* Do not document set-window-option and show-window-options. set-option -w and + show-options -w should be used instead. + +* Add a -A flag to show-options to show parent options as well (they are marked + with a *). + +* Resize panes lazily - do not resize unless they are in an attached, active + window. + +* Add regular expression support for the format search, match and substitute + modifiers and make them able to ignore case. find-window now accepts -r to + use regular expressions. + +* Do not use $TMUX to find the session because for windows in multiple sessions + it is wrong as often as it is right, and for windows in one session it is + pointless. Instead use TMUX_PANE if it is present. + +* Do not always resize the window back to its original size after applying a + layout, keep it at the layout size until it must be resized (for example when + attached and window-size is not manual). + +* Add new-session -X and attach-session -x to send SIGHUP to parent when + detaching (like detach-client -P). + +* Support for octal escapes in strings (such as \007) and improve list-keys + output so it parses correctly if copied into a configuration file. + +* INCOMPATIBLE: Add a new {} syntax to the configuration file. This is a string + similar to single quotes but also includes newlines and allows commands that + take other commands as string arguments to be expressed more clearly and + without additional escaping. + + A literal { and } or a string containing { or } must now be escaped or + quoted, for example '{' and '}' instead of { or }, or 'X#{foo}' instead of + X#{foo}. + +* New <, >, <= and >= comparison operators for formats. + +* Improve escaping of special characters in list-keys output. + +* INCOMPATIBLE: tmux's configuration parsing has changed to use yacc(1). There + is one incompatible change: a \ on its own must be escaped or quoted as + either \\ or '\' (the latter works on older tmux versions). + + Entirely the same parser is now used for parsing the configuration file + and for string commands. This means that constructs previously only + available in .tmux.conf, such as %if, can now be used in string commands + (for example, those given to if-shell - not commands invoked from the + shell, they are still parsed by the shell itself). + +* Add support for the overline attribute (SGR 53). The Smol capability is + needed in terminal-overrides. + +* Add the ability to create simple menus. Introduces new command + display-menu. Default menus are bound to MouseDown3 on the status line; + MouseDown3 or M-MouseDown3 on panes; MouseDown3 in tree, client and + buffer modes; and C-b < and >. + +* Allow panes to be empty (no command). They can be created either by piping to + split-window -I, or by passing an empty command ('') to split-window. Output + can be sent to an existing empty window with display-message -I. + +* Add keys to jump between matching brackets (emacs C-M-f and C-M-b, vi %). + +* Add a -e flag to new-window, split-window, respawn-window, respawn-pane to + pass environment variables into the newly created process. + +* Hooks are now stored in the options tree as array options, allowing them to + have multiple separate commands. set-hook and show-hooks remain but + set-option and show-options can now also be used (show-options will only show + hooks if given the -H flag). Hooks with multiple commands are run in index + order. + +* Automatically scroll if dragging to create a selection with the mouse and the + cursor reaches the top or bottom line. + +* Add -no-clear variants of copy-selection and copy-pipe which do not clear the + selection after copying. Make copy-pipe clear the selection by default to be + consistent with copy-selection. + +* Add an argument to copy commands to set the prefix for the buffer name, this + (for example) allows buffers for different sessions to be named separately. + +* Update session activity on focus event. + +* Pass target from source-file into the config file parser so formats in %if + and %endif have access to more useful variables. + +* Add the ability to infer an option type (server, session, window) from its + name to show-options (it was already present in set-option). + +CHANGES FROM 2.9 TO 2.9a + +* Fix bugs in select-pane and the main-horizontal and main-vertical layouts. + +CHANGES FROM 2.8 TO 2.9 + +* Attempt to preserve horizontal cursor position as well as vertical with + reflow. + +* Rewrite main-vertical and horizontal and change layouts to better handle the + case where all panes won't fit into the window size, reduce problems with + pane border status lines and fix other bugs mostly found by Thomas Sattler. + +* Add format variables for the default formats in the various modes + (tree_mode_format and so on) and add a -a |