Annotation of embedaddon/tmux/CHANGES, revision 1.1

1.1     ! misho       1: CHANGES FROM 2.3 to 2.4 20 April 2017
        !             2: 
        !             3: Incompatible Changes
        !             4: ====================
        !             5: 
        !             6: * Key tables have undergone major changes. Mode key tables are no longer
        !             7:   separate from the main key tables. All mode key tables have been removed,
        !             8:   together with the -t flag to bind-key and unbind-key.
        !             9: 
        !            10:   The emacs-edit, vi-edit, emacs-choose and vi-choose tables have been replaced
        !            11:   by fixed key bindings in the command prompt and choose modes. The mode-keys
        !            12:   and status-keys options remain.
        !            13: 
        !            14:   The emacs-copy and vi-copy tables have been replaced by the copy-mode and
        !            15:   copy-mode-vi tables. Commands are sent using the -X and -N flags to
        !            16:   send-keys. So the following:
        !            17: 
        !            18:     bind -temacs-copy C-Up scroll-up
        !            19:     bind -temacs-copy -R5 WheelUpPane scroll-up
        !            20: 
        !            21:   Becomes:
        !            22: 
        !            23:     bind -Tcopy-mode C-Up send -X scroll-up
        !            24:     bind -Tcopy-mode WheelUpPane send -N5 -X scroll-up
        !            25: 
        !            26:   This changes allows the full command parser (including command sequences) and
        !            27:   command set to be used - for example, the normal command prompt with editing
        !            28:   and history is now used for searching, jumping, and so on instead of a custom
        !            29:   one. The default C-r binding is now:
        !            30: 
        !            31:     bind -Tcopy-mode C-r command-prompt -p'search up' "send -X search-backward '%%'"
        !            32: 
        !            33:   There are also some new commmands available with send -X, such as
        !            34:   copy-pipe-and-cancel.
        !            35: * set-remain-on-exit has gone -- can be achieved with hooks instead.
        !            36: * Hooks: before hooks have been removed and only a selection of commands now
        !            37:   have after hooks (they are no longer automatic). Additional hooks have been
        !            38:   added.
        !            39: * The xterm-keys option now defaults to on.
        !            40: 
        !            41: Normal Changes
        !            42: ==============
        !            43: 
        !            44: * Support for mouse double and triple clicks.
        !            45: * BCE (Background Colour Erase) is now supported.
        !            46: * All occurrences of a search string in copy mode are now highlighted;
        !            47:   additionally, the number of search results is displayed. The highlighting
        !            48:   updates interactively with the default emacs key bindings (incremental
        !            49:   search).
        !            50: * source-file now understands glob patterns.
        !            51: * Formats now have simple comparisons:
        !            52: 
        !            53:     #{==:a,b}
        !            54:     #{!=:a,b}
        !            55: 
        !            56: * There are the following new formats:
        !            57: 
        !            58:   - #{version} -- the tmux server version;
        !            59:   - #{client_termtype} -- the terminal type of the client;
        !            60:   - #{client_name} -- the name of a client;
        !            61:   - #{client_written} -- the number of bytes written to the client.
        !            62: 
        !            63: * The configuration file now accepts %if/%endif conditional blocks which are
        !            64:   processed when it is parsed; the argument is a format string (useful with the
        !            65:   new format comparison options).
        !            66: * detach-client now has -E to execute a command replacing the client instead of
        !            67:   exiting.
        !            68: * Add support for custom command aliases, this is an array option which
        !            69:   contains items of the form "alias=command". This is consulted when an
        !            70:   unknown command is parsed.
        !            71: * break-pane now has -n to specify the new window name.
        !            72: * OSC 52 support has been added for programs inside tmux to set a tmux buffer.
        !            73: * The mouse "all event" mode (1003) is now supported.
        !            74: * Palette setting is now possible (OSC 4 and 104).
        !            75: * Strikethrough support (a recent terminfo is required).
        !            76: * Grouped sessions can now be named (new -t).
        !            77: * terminal-overrides and update-environment are now array options (the previous
        !            78:   set -ag syntax should work without change).
        !            79: * There have been substantial performance improvements.
        !            80: 
        !            81: CHANGES FROM 2.2 to 2.3 29 September 2016
        !            82: 
        !            83: Incompatible Changes
        !            84: ====================
        !            85: 
        !            86: None.
        !            87: 
        !            88: Normal Changes
        !            89: ==============
        !            90: 
        !            91: * New option 'pane-border-status' to add text in the pane borders.
        !            92: * Support for hooks on commands: 'after' and 'before' hooks.
        !            93: * 'source-file' understands '-q' to suppress errors for nonexistent files.
        !            94: * Lots of UTF8 improvements, especially on MacOS.
        !            95: * 'window-status-separator' understands #[] expansions.
        !            96: * 'split-window' understands '-f' for performing a full-width split.
        !            97: * Allow report count to be specified when using 'bind-key -R'.
        !            98: * 'set -a' for appending to user options (@foo) is now supported.
        !            99: * 'display-panes' can now accept a command to run, rather than always
        !           100:   selecting the pane.
        !           101: 
        !           102: CHANGES FROM 2.1 to 2.2 10 April 2016
        !           103: 
        !           104: Incompatible Changes
        !           105: ====================
        !           106: 
        !           107: * The format strings which referenced time have been removed.  Instead:
        !           108: 
        !           109:   #{t:window_activity}
        !           110: 
        !           111: can be used.
        !           112: 
        !           113: * Support for TMPDIR has been removed.  Use TMUX_TMPDIR instead.
        !           114: * UTF8 detection now happens automatically if the client supports it, hence
        !           115:   the:
        !           116: 
        !           117:   mouse-utf8
        !           118:   utf8
        !           119: 
        !           120:   options has been removed.
        !           121: * The:
        !           122: 
        !           123:   mouse_utf8_flag
        !           124: 
        !           125:   format string has been removed.
        !           126: * The -I option to show-messages has been removed.  See:
        !           127: 
        !           128:   #{t:start_time}
        !           129: 
        !           130:   format option instead.
        !           131: 
        !           132: Normal Changes
        !           133: ==============
        !           134: 
        !           135: * Panes are unzoomed with selectp -LRUD
        !           136: * New formats added:
        !           137: 
        !           138:   #{scroll_position}
        !           139:   #{socket_path}
        !           140:   #{=10:...} -- limit to N characters (from the start)
        !           141:   #{=-10:...} -- limit to N characters (from the end)
        !           142:   #{t:...} -- used to format time-based formats
        !           143:   #{b:...} -- used to ascertain basename from string
        !           144:   #{d:...} -- used to ascertain dirname from string
        !           145:   #{s:...} -- used to perform substitutions on a string
        !           146: 
        !           147: * Job output is run via the format system, so formats work again
        !           148: * If display-time is set to 0, then the indicators wait for a key to be
        !           149:   pressed.
        !           150: * list-keys and list-commands can be run without starting the tmux server.
        !           151: * kill-session learns -C to clear all alerts in all windows of the session.
        !           152: * Support for hooks (internal for now), but hooks for the following have been
        !           153:   implemented:
        !           154: 
        !           155:   alert-bell
        !           156:   alert-silence
        !           157:   alert-activity
        !           158:   client-attached
        !           159:   client-detached
        !           160:   client-resized
        !           161:   pane-died
        !           162:   pane-exited
        !           163: 
        !           164: * RGB (24bit) colour support.  The 'Tc' flag must be set in the external TERM
        !           165:   entry (using terminal-overrides or a custom terminfo entry).
        !           166: 
        !           167: 
        !           168: CHANGES FROM 2.0 to 2.1 18 October 2015
        !           169: 
        !           170: Incompatible Changes
        !           171: ====================
        !           172: 
        !           173: * Mouse-mode has been rewritten.  There's now no longer options for:
        !           174:        - mouse-resize-pane
        !           175:        - mouse-select-pane
        !           176:        - mouse-select-window
        !           177:        - mode-mouse
        !           178: 
        !           179:   Instead there is just one option:  'mouse' which turns on mouse support
        !           180:   entirely.
        !           181: * 'default-terminal' is now a session option.  Furthermore, if this is set
        !           182:   to 'screen-*' then emulate what screen does.  If italics are wanted, this
        !           183:   can be set to 'tmux' but this is still new and not necessarily supported
        !           184:   on all platforms with older ncurses installs.
        !           185: * The c0-* options for rate-limiting have been removed.  Instead, a backoff
        !           186:   approach is used.
        !           187: 
        !           188: Normal Changes
        !           189: ==============
        !           190: 
        !           191: * New formats:
        !           192:        - session_activity
        !           193:        - window_linked
        !           194:        - window_activity_format
        !           195:        - session_alerts
        !           196:        - session_last_attached
        !           197:        - client_pid
        !           198:        - pid
        !           199: * 'copy-selection', 'append-selection', 'start-named-buffer' now understand
        !           200:   an '-x' flag to prevent it exiting copying mode.
        !           201: * 'select-pane' now understands '-P' to set window/pane background colours.
        !           202: * 'renumber-windows' now understands windows which are unlinked.
        !           203: * 'bind' now understands multiple key tables.  Allows for key-chaining.
        !           204: * 'select-layout' understands '-o' to undo the last layout change.
        !           205: * The environment is updated when switching sessions as well as attaching.
        !           206: * 'select-pane' now understands '-M' for marking a pane.  This marked pane
        !           207:   can then be used with commands which understand src-pane specifiers
        !           208:   automatically.
        !           209: * If a session/window target is prefixed with '=' then only an exact match
        !           210:   is considered.
        !           211: * 'move-window' understands '-a'.
        !           212: * 'update-environment' understands '-E' when attach-session is used on an
        !           213:   already attached client.
        !           214: * 'show-environment' understands '-s' to output Bourne-compatible commands.
        !           215: * New option: 'history-file' to save/restore command prompt history.
        !           216: * Copy mode is exited if the history is cleared whilst in copy-mode.
        !           217: * 'copy-mode' learned '-e' to exit copy-mode when scrolling to end.
        !           218: 
        !           219: CHANGES FROM 1.9a to 2.0 6 March 2015
        !           220: 
        !           221: Incompatible Changes
        !           222: ====================
        !           223: 
        !           224: * The choose-list command has been removed.
        !           225: * 'terminal-overrides' is now a server option, not a session option.
        !           226: * 'message-limit' is now a server option, not a session option.
        !           227: * 'monitor-content' option has been removed.
        !           228: * 'pane_start_path' option has been removed.
        !           229: * The "info" mechanism which used to (for some commands) provide feedback
        !           230:   has been removed, and like other commands, they now produce nothing on
        !           231:   success.
        !           232: 
        !           233: Normal Changes
        !           234: ==============
        !           235: 
        !           236: * tmux can now write an entry to utmp if the library 'utempter' is present
        !           237:   at compile time.
        !           238: * set-buffer learned append mode (-a), and a corresponding
        !           239:   'append-selection' command has been added to copy-mode.
        !           240: * choose-mode now has the following commands which can be bound:
        !           241:        - start-of-list
        !           242:        - end-of-list
        !           243:        - top-line
        !           244:        - bottom-line
        !           245: 
        !           246: * choose-buffer now understands UTF-8.
        !           247: * Pane navigation has changed:
        !           248:        - The old way of always using the top or left if the choice is ambiguous.
        !           249:        - The new way of remembering the last used pane is annoying if the
        !           250:          layout is balanced and the leftmost is obvious to the user (because
        !           251:          clearly if we go right from the top-left in a tiled set of four we want
        !           252:          to end up in top-right, even if we were last using the bottom-right).
        !           253: 
        !           254:       So instead, use a combination of both: if there is only one possible
        !           255:       pane alongside the current pane, move to it, otherwise choose the most
        !           256:       recently used of the choice.
        !           257: * 'set-buffer' can now be told to give names to buffers.
        !           258: * The 'new-session', 'new-window', 'split-window', and 'respawn-pane' commands
        !           259:   now understand multiple arguments and handle quoting problems correctly.
        !           260: * 'capture-pane' understands '-S-' to mean the start of the pane, and '-E-' to
        !           261:   mean the end of the pane.
        !           262: * Support for function keys beyond F12 has changed.  The following explains:
        !           263:        - F13-F24 are S-F1 to S-F12
        !           264:        - F25-F36 are C-F1 to C-F12
        !           265:        - F37-F48 are C-S-F1 to C-S-F12
        !           266:        - F49-F60 are M-F1 to M-F12
        !           267:        - F61-F63 are M-S-F1 to M-S-F3
        !           268: 
        !           269:  Therefore, F13 becomes a binding of S-F1, etc.
        !           270: * Support using pane id as part of session or window specifier (so % means
        !           271:   session-of-%1 or window-of-%1) and window id as part of session
        !           272:   (so @1 means session-of-@1).
        !           273: * 'copy-pipe' command now understands formats via -F
        !           274: * 'if-shell'  command now understands formats via -F
        !           275: * 'split-window' and 'join-window' understand -b to create the pane to the left
        !           276:   or above the target pane.
        !           277: 
        !           278: CHANGES FROM 1.9 to 1.9a 22 February 2014
        !           279: 
        !           280: NOTE:  This is a bug-fix release to address some important bugs which just
        !           281: missed the 1.9 deadline, but were found afterwards.
        !           282: 
        !           283: Normal Changes
        !           284: ==============
        !           285: 
        !           286: * Fix crash due to uninitialized lastwp member of layout_cell
        !           287: * Fix -fg/-bg/-style with 256 colour terminals.  
        !           288: 
        !           289: CHANGES FROM 1.8 to 1.9, 20 February 2014
        !           290: 
        !           291: NOTE:  This release has bumped the tmux protocol version.  It is therefore
        !           292: advised that the prior tmux server is restarted when this version of tmux is
        !           293: installed, to avoid protocol mismatch errors for newer clients trying to
        !           294: talk to an older running tmux server.
        !           295: 
        !           296: Incompatible Changes
        !           297: ====================
        !           298: 
        !           299: * 88 colour support has been removed.
        !           300: * 'default-path' has been removed.  The new-window command accepts '-c' to
        !           301:   cater for this.  The previous value of "." can be replaced with: 'neww -c
        !           302:   $PWD', the previous value of '' which meant current path of the pane can
        !           303:   be specified as:  'neww -c "#{pane_current_path}"'
        !           304: 
        !           305: Deprecated Changes
        !           306: ==================
        !           307: 
        !           308: * The single format specifiers:  #A -> #Z (where defined) have been
        !           309:   deprecated and replaced with longer-named equivalents, as listed in the
        !           310:   FORMATS section of the tmux manpage.
        !           311: * The various foo-{fg,bg,attr} commands have been deprecated and replaced
        !           312:   with equivalent foo-style option instead.  Currently this is still
        !           313:   backwards-compatible, but will be removed over time.
        !           314: 
        !           315: Normal Changes
        !           316: ==============
        !           317: 
        !           318: * A new environment variable TMUX_TMPDIR is now honoured, allowing the
        !           319:   socket directory to be set outside of TMPDIR (/tmp/ if not set).
        !           320: * If -s not given to swap-pane the current pane is assumed.
        !           321: * A #{pane_synchronized} format specifier has been added to be a conditional
        !           322:   format if a pane is in a synchronised mode (c.f. synchronize-panes)
        !           323: * Tmux now runs under Cygwin natively.
        !           324: * Formats can now be nested within each other and expanded accordingly.
        !           325: * Added 'automatic-rename-format' option to allow the automatic rename
        !           326:   mechanism to use something other than the default of
        !           327:   #{pane_current_command}.
        !           328: * new-session learnt '-c' to specify the starting directory for that session
        !           329:   and all subsequent windows therein.
        !           330: * The session name is now shown in the message printed to the terminal when
        !           331:   a session is detached.
        !           332: * Lots more format specifiers have been added.
        !           333: * Server race conditions have been fixed; in particular commands are not run
        !           334:   until after the configuration file is read completely.
        !           335: * Case insensitive searching in tmux's copy-mode is now possible.
        !           336: * attach-session and switch-client learnt the '-t' option to accept a window
        !           337:   and/or a pane to use.
        !           338: * Copy-mode is only exited if no selection is in progress.
        !           339: * Paste key in copy-mode is now possible to enter text from the clipboard.
        !           340: * status-interval set to '0' now works as intended.
        !           341: * tmux now supports 256 colours running under fbterm.
        !           342: * Many bug fixes!
        !           343: 
        !           344: CHANGES FROM 1.7 to 1.8, 26 March 2013
        !           345: 
        !           346: Incompatible Changes
        !           347: ====================
        !           348: 
        !           349: * layout redo/undo has been removed.
        !           350: 
        !           351: Normal Changes
        !           352: ==============
        !           353: 
        !           354: * Add halfpage up/down bindings to copy mode.
        !           355: * Session choosing fixed to work with unattached sessions.
        !           356: * New window options window-status-last-{attr,bg,fg} to denote the last
        !           357:   window which was active.
        !           358: * Scrolling in copy-mode now scrolls the region without moving the mouse
        !           359:   cursor.
        !           360: * run-shell learnt '-t' to specify the pane to use when displaying output.
        !           361: * Support for middle-click pasting.
        !           362: * choose-tree learns '-u' to start uncollapsed.
        !           363: * select-window learnt '-T' to toggle to the last window if it's already
        !           364:   current.
        !           365: * New session option 'assume-paste-time' for pasting text versus key-binding
        !           366:   actions.
        !           367: * choose-* commands now work outside of an attached client.
        !           368: * Aliases are now shown for list-commands command.
        !           369: * Status learns about formats.
        !           370: * Free-form options can be set with set-option if prepended with an '@'
        !           371:   sign.
        !           372: * capture-pane learnt '-p' to send to stdout, and '-e' for capturing escape
        !           373:   sequences, and '-a' to capture the alternate screen, and '-P' to dump
        !           374:   pending output.
        !           375: * Many new formats added (client_session, client_last_session, etc.)
        !           376: * Control mode, which is a way for a client to send tmux commands.
        !           377:   Currently more useful to users of iterm2.
        !           378: * resize-pane learnt '-x' and '-y' for absolute pane sizing.
        !           379: * Config file loading now reports errors from all files which are loaded via
        !           380:   the 'source-file' command.
        !           381: * 'copy-pipe' mode command to copy selection and pipe the selection to a
        !           382:   command.
        !           383: * Panes can now emit focus notifications for certain applications
        !           384:   which use those.
        !           385: * run-shell and if-shell now accept formats.
        !           386: * resize-pane learnt '-Z' for zooming a pane temporarily.
        !           387: * new-session learnt '-A' to make it behave like attach-session.
        !           388: * set-option learnt '-o' to prevent setting an option which is already set.
        !           389: * capture-pane and show-options learns '-q' to silence errors.
        !           390: * New command 'wait-for' which blocks a client until woken up again.
        !           391: * Resizing panes will now reflow the text inside them.
        !           392: * Lots and lots of bug fixes, fixing memory-leaks, etc.
        !           393: * Various manpage improvements.
        !           394: 
        !           395: CHANGES FROM 1.6 to 1.7, 13 October 2012
        !           396: 
        !           397: * tmux configuration files now support line-continuation with a "\" at the
        !           398:   end of a line.
        !           399: * New option status-position to move the status line to the top or bottom of
        !           400:   the screen.
        !           401: * Enforce history-limit option when clearing the screen.
        !           402: * Give each window a unique id, like panes but prefixed with @.
        !           403: * Add pane id to each pane in layout description (while still accepting
        !           404:   the old form).
        !           405: * Provide defined ways to set the various default-path possibilities: ~
        !           406:   for home directory, . for server start directory, - for session start
        !           407:   directory and empty for the pane's working directory (the default). All
        !           408:   can also be used as part of a relative path (eg -/foo). Also provide -c
        !           409:   flags to neww and splitw to override default-path setting.
        !           410: * Add -l flag to send-keys to send input literally (without translating
        !           411:   key names).
        !           412: * Allow a single option to be specified to show-options to show just that
        !           413:   option.
        !           414: * New command "move-pane" (like join-pane but allows the same window).
        !           415: * join-pane and move-pane commands learn "-b" option to place the pane to
        !           416:   the left or above.
        !           417: * Support for bracketed-paste mode.
        !           418: * Allow send-keys command to accept hex values.
        !           419: * Add locking around "start-server" to avoid race-conditions.
        !           420: * break-pane learns -P/-F arguments for display formatting.
        !           421: * set-option learns "-q" to make it quiet, and not print out anything.
        !           422: * copy mode learns "wrap-search" option.
        !           423: * Add a simple form of output rate limiting by counting the number of
        !           424:   certain C0 sequences (linefeeds, backspaces, carriage returns) and if it
        !           425:   exceeds a threshold (current default 250/millisecond), start to redraw
        !           426:   the pane every 100 milliseconds instead of making each change as it
        !           427:   comes. Two configuration options - c0-change-trigger and
        !           428:   c0-change-interval.
        !           429: * find-window learns new flags:  "-C", "-N", "-T" to match against either or
        !           430:   all of a window's content, name, or title.  Defaults to all three options
        !           431:   if none specified.
        !           432: * find-window automatically selects the appropriate pane for the found
        !           433:   matches.
        !           434: * show-environment can now accept one option to show that environment value.
        !           435: * Exit mouse mode when end-of-screen reached when scrolling with the mouse
        !           436:   wheel.
        !           437: * select-layout learns -u and -U for layout history stacks.
        !           438: * kill-window, detach-client, kill-session all  learn "-a" option for
        !           439:   killing all but the current thing specified.
        !           440: * move-window learns "-r" option to renumber window sequentially in a
        !           441:   session.
        !           442: * New session option "renumber-windows" to automatically renumber windows in
        !           443:   a session when a window is closed.  (see "move-window -r").
        !           444: * Only enter copy-mode on scroll up.
        !           445: * choose-* and list-* commands all use "-F" for format specifiers.
        !           446: * When spawning external commands, the value from the "default-shell" option
        !           447:   is now used, rather than assuming /bin/sh.
        !           448: * New choose-tree command to render window/sessions as a tree for selection.
        !           449: * display-message learns new format options.
        !           450: * For linked-windows across sessions, all flags for that window are now
        !           451:   cleared across sessions.
        !           452: * Lots and lots of bug fixes, fixing memory-leaks, etc.
        !           453: * Various manpage improvements.
        !           454: 
        !           455: CHANGES FROM 1.5 TO 1.6, 23 January 2012
        !           456: 
        !           457: * Extend the mode-mouse option to add a third choice which means the mouse
        !           458:   does not enter copy mode.
        !           459: * Add a -r flag to switch-client to toggle the client read-only flag.
        !           460: * Add pane-base-index option.
        !           461: * Support \ for line continuation in the configuration file.
        !           462: * Framework for more powerful formatting of command output and use it for
        !           463:   list-{panes,windows,sessions}. This allows more descriptive replacements
        !           464:   (such as #{session_name}) and conditionals.
        !           465: * Mark dead panes with some text saying they are dead.
        !           466: * Reject $SHELL if it is not a full path.
        !           467: * Add -S option to refresh-client to redraw status line.
        !           468: * Add an else clause for if-shell.
        !           469: * Try to resolve relative paths for loadb and saveb (first, using client
        !           470:   working directory, if any, then default-path or session working directory).
        !           471: * Support for \e[3J to clear the history and send the corresponding
        !           472:   terminfo code (E3) before locking.
        !           473: * When in copy mode, make repeat count indicate buffer to replace, if used.
        !           474: * Add screen*:XT to terminal-overrides for tmux-in-tmux.
        !           475: * Status-line message attributes added.
        !           476: * Move word-separators to be a session rather than window option.
        !           477: * Change the way the working directory for new processes is discovered. If
        !           478:   default-path isn't empty, it is used. Otherwise, if a new window is created
        !           479:   from the command-line, the working directory of the client is used. If not,
        !           480:   platform specific code is used to retrieve the current working directory
        !           481:   of the process in the active pane. If that fails, the directory where the
        !           482:   session was created is used, instead.
        !           483: * Do not change the current pane if both mouse-select-{pane,window} are
        !           484:   enabled.
        !           485: * Add \033[s and \033[u to save and restore cursor position.
        !           486: * Allow $HOME to be used as default-path.
        !           487: * Add CNL and CPL escape sequences.
        !           488: * Calculate last position correctly for UTF-8 wide characters.
        !           489: * Add an option allow-rename to disable the window rename escape sequence.
        !           490: * Attributes for each type of status-line alert (ie bell, content and
        !           491:   activity) added. Therefore, remove the superfluous options
        !           492:   window-status-alert-{attr,bg,fg}.
        !           493: * Add a -R flag to send-keys to reset the terminal.
        !           494: * Add strings to allow the aixterm bright colours to be used when
        !           495:   configuring colours.
        !           496: * Drop the ability to have a list of keys in the prefix in favour of two
        !           497:   separate options, prefix and prefix2.
        !           498: * Flag -2 added to send-prefix to send the secondary prefix key.
        !           499: * Show pane size in top right of display panes mode.
        !           500: * Some memory leaks plugged.
        !           501: * More command-prompt editing improvements.
        !           502: * Various manpage improvements.
        !           503: * More Vi mode improvements.
        !           504: 
        !           505: CHANGES FROM 1.4 TO 1.5, 09 July 2011
        !           506: 
        !           507: * Support xterm mouse modes 1002 and 1003.
        !           508: * Change from a per-session stack of buffers to one global stack. This renders
        !           509:   copy-buffer useless and makes buffer-limit now a server option.
        !           510: * Fix most-recently-used choice by avoiding reset the activity timer for
        !           511:   unattached sessions every second.
        !           512: * Add a -P option to new-window and split-window to print the new window or
        !           513:   pane index in target form (useful to pass it into other commands).
        !           514: * Handle a # at the end of a replacement string (such as status-left)
        !           515:   correctly.
        !           516: * Support for UTF-8 mouse input (\033[1005h) which was added in xterm 262.
        !           517:   If the new mouse-utf8 option is on, UTF-8 mouse input is enabled for all
        !           518:   UTF-8 terminals. The option defaults to on if LANG etc are set in the same
        !           519:   manner as the utf8 option.
        !           520: * Support for HP-UX.
        !           521: * Accept colours of the hex form #ffffff and translate to the nearest from the
        !           522:   xterm(1) 256-colour set.
        !           523: * Clear the non-blocking IO flag (O_NONBLOCK) on the stdio file descriptors
        !           524:   before closing them (fixes things like "tmux ls && cat").
        !           525: * Use TMPDIR if set.
        !           526: * Fix next and previous session functions to actually work.
        !           527: * Support -x and -y for new-session to specify the initial size of the window
        !           528:   if created detached with -d.
        !           529: * Make bind-key accept characters with the top-bit-set and print them as octal.
        !           530: * Set $TMUX without the session when background jobs are run.
        !           531: * Simplify the way jobs work and drop the persist type, so all jobs are
        !           532:   fire-and-forget.
        !           533: * Accept tcgetattr/tcsetattr(3) failure, fixes problems with fatal() if the
        !           534:   terminal disappears while locked.
        !           535: * Add a -P option to detach to HUP the client's parent process (usually causing
        !           536:   it to exit as well).
        !           537: * Support passing through escape sequences to the underlying terminal by using
        !           538:   DCS with a "tmux;" prefix.
        !           539: * Prevent tiled producing a corrupt layout when only one column is needed.
        !           540: * Give each pane created in a tmux server a unique id (starting from 0), put it
        !           541:   in the TMUX_PANE environment variable and accept it as a target.
        !           542: * Allow a start and end line to be specified for capture-pane which may be
        !           543:   negative to capture part of the history.
        !           544: * Add -a and -s options to lsp to list all panes in the server or session
        !           545:   respectively. Likewise add -s to lsw.
        !           546: * Change -t on display-message to be target-pane for the #[A-Z] replacements
        !           547:   and add -c as target-client.
        !           548: * The attach-session command now prefers the most recently used unattached
        !           549:   session.
        !           550: * Add -s option to detach-client to detach all clients attached to a session.
        !           551: * Add -t to list-clients.
        !           552: * Change window with mouse wheel over status line if mouse-select-window is on.
        !           553: * When mode-mouse is on, automatically enter copy mode when the mouse is
        !           554:   dragged or the mouse wheel is used. Also exit copy mode when the mouse wheel
        !           555:   is scrolled off the bottom.
        !           556: * Provide #h character pair for short hostname (no domain).
        !           557: * Don't use strnvis(3) for the title as it breaks UTF-8.
        !           558: * Use the tsl and fsl terminfo(5) capabilities to update terminal title and
        !           559:   automatically fill them in on terminals with the XT capability (which means
        !           560:   their title setting is xterm-compatible).
        !           561: * Add a new option, mouse-resize-pane. When on, panes may be resized by
        !           562:   dragging their borders.
        !           563: * Fix crash by resetting last pane on {break,swap}-pane across windows.
        !           564: * Add three new copy-mode commands - select-line, copy-line, copy-end-of-line.
        !           565: * Support setting the xterm clipboard when copying from copy mode using the
        !           566:   xterm escape sequence for the purpose (if xterm is configured to allow it).
        !           567: * Support xterm(1) cursor colour change sequences through terminfo(5) Cc
        !           568:   (set) and Cr (reset) extensions.
        !           569: * Support DECSCUSR sequence to set the cursor style with two new terminfo(5)
        !           570:   extensions, Cs and Csr.
        !           571: * Make the command-prompt custom prompts recognize the status-left option
        !           572:   character pairs.
        !           573: * Add a respawn-pane command.
        !           574: * Add a couple of extra xterm-style keys that gnome terminal provides.
        !           575: * Allow the initial context on prompts to be set with the new -I option to
        !           576:   command-prompt. Include the current window and session name in the prompt
        !           577:   when renaming and add a new key binding ($) for rename session.
        !           578: * Option bell-on-alert added to trigger the terminal bell when there is an
        !           579:   alert.
        !           580: * Change the list-keys format so that it shows the keys using actual tmux
        !           581:   commands which should be able to be directly copied into the config file.
        !           582: * Show full targets for lsp/lsw -a.
        !           583: * Make confirm-before prompt customizable with -p option like command-prompt
        !           584:   and add the character pairs #W and #P to the default kill-{pane,window}
        !           585:   prompts.
        !           586: * Avoid sending data to suspended/locked clients.
        !           587: * Small memory leaks in error paths plugged.
        !           588: * Vi mode improvements.
        !           589: 
        !           590: CHANGES FROM 1.3 TO 1.4, 27 December 2010
        !           591: 
        !           592: * Window bell reporting fixed.
        !           593: * Show which pane is active in the list-panes output.
        !           594: * Backoff reworked.
        !           595: * Prevent the server from dying when switching into copy mode when already
        !           596:   in a different mode.
        !           597: * Reset running jobs when the status line is enabled or disabled.
        !           598: * Simplify xterm modifier detection.
        !           599: * Avoid crashing in copy mode if the screen size is too small for the
        !           600:   indicator.
        !           601: * Flags -n and -p added to switch-client.
        !           602: * Use UTF-8 line drawing characters on UTF-8 terminals, thus fixing some
        !           603:   terminals (eg putty) which disable the vt100 ACS mode switching sequences
        !           604:   in UTF-8 mode. On terminals without ACS, use ASCII equivalents.
        !           605: * New server option exit-unattached added.
        !           606: * New session option destroy-unattached added.
        !           607: * Fall back on normal session choice method if $TMUX exists but is invalid
        !           608:   rather than rejecting.
        !           609: * Mark repeating keys with "(repeat)" in the key list.
        !           610: * When removing a pane, don't change the active pane unless the active pane
        !           611:   is actually the one being removed.
        !           612: * New command last-pane added.
        !           613: * AIX fixes.
        !           614: * Flag -a added to unbind-key.
        !           615: * Add XAUTHORITY to update-environment.
        !           616: * More info regarding window and pane flags is now shown in list-*.
        !           617: * If VISUAL or EDITOR contains "vi" configure mode-keys and status-key to vi.
        !           618: * New window option monitor-silence and session option visual-silence added.
        !           619: * In the built-in layouts distribute the panes more evenly.
        !           620: * Set the default value of main-pane-width to 80 instead of 81.
        !           621: * Command-line flag -V added.
        !           622: * Instead of keeping a per-client prompt history make it global.
        !           623: * Fix rectangle copy to behave like emacs (the cursor is not part of the
        !           624:   selection on the right edge but on the left it is).
        !           625: * Flag -l added to switch-client.
        !           626: * Retrieve environment variables from the global environment rather than
        !           627:   getenv(3), thus allowing them to be updated during the configuration file.
        !           628: * New window options other-pane-{height,width} added.
        !           629: * More minor bugs fixed and manpage improvements.
        !           630: 
        !           631: CHANGES FROM 1.2 TO 1.3, 18 July 2010
        !           632: 
        !           633: * New input parser.
        !           634: * Flags to move through panes -UDLR added to select-pane.
        !           635: * Commands up-pane, and down-pane removed, since equivalent behaviour is now
        !           636:   available through the target flag (-t:+ and -t:-).
        !           637: * Jump-forward/backward in copy move (based on vi's F, and f commands).
        !           638: * Make paste-buffer accept a pane as a target.
        !           639: * Flag -a added to new-window to insert a window after an existing one, moving
        !           640:   windows up if necessary.
        !           641: * Merge more mode into copy mode.
        !           642: * Run job commands explicitly in the global environment (which can be modified
        !           643:   with setenv -g), rather than with the environment tmux started with.
        !           644: * Use the machine's hostname as the default title, instead of an empty string.
        !           645: * Prevent double free if the window option remain-on-exit is set. 
        !           646: * Key string conversions rewritten.
        !           647: * Mark zombie windows as dead in the choose-window list.
        !           648: * Tiled layout added.
        !           649: * Signal handling reworked.
        !           650: * Reset SIGCHLD after fork to fix problems with some shells.
        !           651: * Select-prompt command removed. Therefore, bound ' to command-prompt -p index
        !           652:   "select-window -t:%%" by default.
        !           653: * Catch SIGHUP and terminate if running as a client, thus avoiding clients from
        !           654:   being left hanging around when, for instance, a SSH session is disconnected.
        !           655: * Solaris 9 fixes (such as adding compat {get,set}env(3) code).
        !           656: * Accept none instead of default for attributes.
        !           657: * Window options window-status-alert-{alert,bg,fg} added.
        !           658: * Flag -s added to the paste-buffer command to specify a custom separator.
        !           659: * Allow dragging to make a selection in copy mode if the mode-mouse option is
        !           660:   set.
        !           661: * Support the mouse scroll wheel.
        !           662: * Make pipe-pane accept special character sequences (eg #I).
        !           663: * Fix problems with window sizing when starting tmux from .xinitrc.
        !           664: * Give tmux sockets (but not the containing folder) group permissions.
        !           665: * Extend the target flags (ie -t) to accept an offset (for example -t:+2), and
        !           666:   make it wrap windows, and panes.
        !           667: * New command choose-buffer added.
        !           668: * New server option detach-on-destroy to set what happens to a client when the
        !           669:   session it is attached to is destroyed. If on (default), the client is
        !           670:   detached. Otherwise, the client is switched to the most recently active of
        !           671:   the remaining sessions.
        !           672: * The commands load-buffer, and save-buffer now accept a dash (-) as the file
        !           673:   to read from stdin, or write to stdout.
        !           674: * Custom layouts added.
        !           675: * Additional code reduction, bug fixes, and manpage enhancements.
        !           676: 
        !           677: CHANGES FROM 1.1 TO 1.2, 10 March 2010
        !           678: 
        !           679: * Switch to libevent.
        !           680: * Emulate the ri (reverse index) capability, ergo allowing tmux to at least
        !           681:   start on Sun consoles (TERM=sun, or sun-color).
        !           682: * Assign each entry a number, or lowercase letter in choose mode, and accept
        !           683:   that as a shortcut key.
        !           684: * Permit top-bit-set characters to be entered in the status line.
        !           685: * Mark no-prefix keys with (no prefix), rather than [] in list-keys.
        !           686: * New command show-messages (alias showmsgs), and new session option
        !           687:   message-limit, to show a per-client log of status lines messages up to the
        !           688:   number defined by message-limit.
        !           689: * Do not interpret #() for display-message to avoid leaking commands.
        !           690: * New window options window-status-format, and window-status-current-format to
        !           691:   control the format of each window in the status line.
        !           692: * Add a -p flag to display-message to print the output, instead of displaying
        !           693:   it in the status line.
        !           694: * Emulate il1, dl1, ich1 to run with vt100 feature set.
        !           695: * New command capture-pane (alias capturep) to copy the entire pane contents
        !           696:   to a paste buffer.
        !           697: * Avoid duplicating code by adding a -w flag to set-option, and show-options to
        !           698:   set, and show window options. The commands set-window-option, and
        !           699:   show-window-options are now aliases.
        !           700: * Panes can now be referred to as top, bottom, top-left, etc.
        !           701: * Add server-wide options, which can be set with set-option -s, and shown with
        !           702:   show-options -s.
        !           703: * New server option quiet (like -q from the command line).
        !           704: * New server option escape-time to set the timeout used to detect if escapes
        !           705:   are alone, part of a function key, or meta sequence.
        !           706: * New session options pane-active-border-bg, pane-active-border-fg,
        !           707:   pane-border-bg, and pane-border-fg to set pane colours.
        !           708: * Make split-window accept a pane target, instead of a window.
        !           709: * New command join-pane (alias joinp) to split, and move an existing pane into
        !           710:   the space (the opposite of break-pane), thus simplifying calls to
        !           711:   split-window, followed by move-window.
        !           712: * Permit S- prefix on keys for shift when the terminal/terminfo supports them.
        !           713: * Window targets (-t flag) can now refer to the last window (!), next (+), and
        !           714:   previous (-) window by number.
        !           715: * Mode keys to jump to the bottom/top of history, end of the next word, scroll
        !           716:   up/down, and reverse search in copy mode.
        !           717: * New session option display-panes-active-colour to display the active pane in
        !           718:   a different colour with the display-panes command.
        !           719: * Read the socket path from $TMUX if it's present, and -L, and -S are not
        !           720:   given.
        !           721: * Vi-style mode keys B, W, and E to navigate between words in copy mode.
        !           722: * Start in more mode when configuration file errors are detected.
        !           723: * Rectangle copy support added.
        !           724: * If attach-session was specified with the -r flag, make the client read-only.
        !           725: * Per-window alternate-screen option.
        !           726: * Make load-buffer work with FIFOs.
        !           727: * New window option word-separators to set the characters considered as word
        !           728:   separators in copy mode.
        !           729: * Permit keys in copy mode to be prefixed by a repeat count, entered with [1-9]
        !           730:   in vi mode, or M-[1-9] in emacs mode.
        !           731: * utf8 improvements.
        !           732: * As usual, additional code reduction, bug fixes, and manpage enhancements.
        !           733: 
        !           734: CHANGES FROM 1.0 TO 1.1, 05 November 2009
        !           735: 
        !           736: * New run-shell (alias run) command to run an external command without a
        !           737:   window, capture it's stdout, and send it to output mode.
        !           738: * Ability to define multiple prefix keys.
        !           739: * Internal locking mechanism removed. Instead, detach each client and run the
        !           740:   external command specified in the new session option lock-command (by default
        !           741:   lock -np), thus allowing the system password to be used.
        !           742: * set-password command, and -U command line flag removed per the above change.
        !           743: * Add support for -c command line flag to execute a shell command.
        !           744: * New lock-client (alias lockc), and lock-session (alias locks) commands to
        !           745:   lock a particular client, or all clients attached to a session.
        !           746: * Support C-n/C-p/C-v/M-v with emacs keys in choice mode.
        !           747: * Use : for goto line rather than g in vi mode. 
        !           748: * Try to guess which client to use when no target client was specified. Finds
        !           749:   the current session, and if only one client is present, use it. Otherwise,
        !           750:   return the most recently used client.
        !           751: * Make C-Down/C-Up in copy mode scroll the screen down/up one line without
        !           752:   moving the cursor.
        !           753: * Scroll mode superseded by copy mode.
        !           754: * New synchronize-panes window option to send all input to all other panes in
        !           755:   the same window.
        !           756: * New lock-server session option to lock, when off (on by default), each
        !           757:   session when it has been idle for the lock-after-time setting. When on, the
        !           758:   entire server locks when all sessions have been idle for their individual
        !           759:   lock-after-time setting.
        !           760: * Add support for grouped sessions which have independent name, options,
        !           761:   current window, but where the linked windows are synchronized (ie creating,
        !           762:   killing windows are mirrored between the sessions). A grouped session may be
        !           763:   created by passing -t to new-session.
        !           764: * New mouse-select-pane session option to select the current pane with the
        !           765:   mouse.
        !           766: * Queue, and run commands in the background for if-shell, status-left,
        !           767:   status-right, and #() by starting each once every status-interval. Adds the
        !           768:   capability to call some programs which would previously cause the server to
        !           769:   hang (eg sleep/tmux). It also avoids running commands excessively (ie if used
        !           770:   multiple times, it will be run only once).
        !           771: * When a window is zombified and automatic-rename is on, append [dead] to the
        !           772:   name.
        !           773: * Split list-panes (alias lsp) off from list-windows.
        !           774: * New pipe-pane (alias pipep) to redirect a pane output to an external command.
        !           775: * Support for automatic-renames for Solaris.
        !           776: * Permit attributes to be turned off in #[] by prefixing with no (eg nobright).
        !           777: * Add H/M/L in vi mode, and M-R/M-r in emacs to move the cursor to the top,
        !           778:   middle, and bottom of the screen.
        !           779: * -a option added to kill-pane to kill all except current pane.
        !           780: * The -d command line flag is now gone (can be replaced by terminal-overrides).
        !           781:   Just use op/AX to detect default colours.
        !           782: * input/tty/utf8 improvements.
        !           783: * xterm-keys rewrite.
        !           784: * Additional code reduction, and bug fixes.
        !           785: 
        !           786: CHANGES FROM 0.9 TO 1.0, 20 Sept 2009
        !           787: 
        !           788: * Option to alter the format of the window title set by tmux.
        !           789: * Backoff for a while after multiple incorrect password attempts.
        !           790: * Quick display of pane numbers (C-b q).
        !           791: * Better choose-window, choose-session commands and a new choose-client command.
        !           792: * Option to request multiple responses when using command-prompt.
        !           793: * Improved environment handling.
        !           794: * Combine wrapped lines when pasting.
        !           795: * Option to override terminal settings (terminal-overrides).
        !           796: * Use the full range of ACS characters for drawing pane separator lines.
        !           797: * Customisable mode keys.
        !           798: * Status line colour options, with embedded colours in status-left/right, and
        !           799:   an option to centre the window list.
        !           800: * Much improved layouts, including both horizontal and vertical splitting.
        !           801: * Optional visual bell, activity and content indications.
        !           802: * Set the utf8 and status-utf8 options when the server is started with -u.
        !           803: * display-message command to show a message in the status line, by default some
        !           804:   information about the current window.
        !           805: * Improved current process detection on NetBSD.
        !           806: * unlink-window -k is now the same as kill-window.
        !           807: * attach-session now works from inside tmux.
        !           808: * A system-wide configuration file, /etc/tmux.conf.
        !           809: * A number of new commands in copy mode, including searching.
        !           810: * Panes are now specified using the target (-t) notation.
        !           811: * -t now accepts fnmatch(3) patterns and looks for prefixes.
        !           812: * Translate \r into \n when pasting.
        !           813: * Support for binding commands to keys without the prefix key
        !           814: * Support for alternate screen (terminfo smcup/rmcup).
        !           815: * Maintain data that goes off screen after reducing the window size, so it can
        !           816:   be restored when the size is increased again.
        !           817: * New if-shell command to test a shell command before running a tmux command.
        !           818: * tmux now works as the shell.
        !           819: * Man page reorganisation.
        !           820: * Many minor additions, much code tidying and several bug fixes.
        !           821: 
        !           822: CHANGES FROM 0.8 TO 0.9, 01 July 2009
        !           823: 
        !           824: * Major changes to build infrastructure: cleanup of makefiles and addition
        !           825:   of a configure script.
        !           826: * monitor-content window option to monitor a window for a specific fnmatch(3)
        !           827:   pattern. The find-window command also now accepts fnmatch(3) patterns.
        !           828: * previous-layout and select-layout commands, and a main-horizontal layout.
        !           829: * Recreate the server socket on SIGUSR1.
        !           830: * clear-history command.
        !           831: * Use ACS line drawing characters for pane separator lines.
        !           832: * UTF-8 improvements, and code to detect UTF-8 support by looking at
        !           833:   environment variables.
        !           834: * The resize-pane-up and resize-pane-down commands are now merged together
        !           835:   into a new resize-pane command with -U and -D flags.
        !           836: * confirm-before command to request a yes/no answer before executing dangerous
        !           837:   commands.
        !           838: * Status line bug fixes, support for UTF-8 (status-utf8 option), and a key to
        !           839:   paste from the paste buffer.
        !           840: * Support for some additional escape sequences and terminal features, including
        !           841:   better support for insert mode and tab stops.
        !           842: * Improved window resizing behaviour, modelled after xterm.
        !           843: * Some code reduction and a number of miscellaneous bug fixes.
        !           844: 
        !           845: ================================================================================
        !           846: 
        !           847: On 01 June 2009, tmux was imported into the OpenBSD base system. From this date
        !           848: onward changes are logged as part of the normal CVS commit message to either
        !           849: OpenBSD or SourceForge CVS. This file will be updated to contain a summary of
        !           850: major changes with each release, and to mention important configuration or
        !           851: command syntax changes during development.
        !           852: 
        !           853: The list of older changes is below.
        !           854: 
        !           855: ================================================================================
        !           856: 
        !           857: 21 May 2009
        !           858: 
        !           859: * stat(2) files before trying to load them to avoid problems, for example
        !           860:   with "source-file /dev/zero".
        !           861: 
        !           862: 19 May 2009
        !           863: 
        !           864: * Try to guess if the window is UTF-8 by outputting a three-byte UTF-8 wide
        !           865:   character and seeing how much the cursor moves. Currently tries to figure out
        !           866:   if this works by some stupid checks on the terminal, these need to be
        !           867:   rethought. Also might be better using a width 1 character rather than width 2.
        !           868: * If LANG contains "UTF-8", assume the terminal supports UTF-8, on the grounds
        !           869:   that anyone who configures it probably wants UTF-8. Not certain if this is
        !           870:   a perfect idea but let's see if it causes any problems.
        !           871: * New window option: monitor-content. Searches for a string in a window and if
        !           872:   it matches, highlight the status line.
        !           873: 
        !           874: 18 May 2009
        !           875: 
        !           876: * main-horizontal layout and main-pane-height option to match vertical.
        !           877: * New window option main-pane-width to set the width of the large left pane with
        !           878:   main-vertical (was left-vertical) layout. 
        !           879: * Lots of layout cleanup. manual layout is now manual-vertical.
        !           880: 
        !           881: 16 May 2009
        !           882: 
        !           883: * select-layout command and a few default key bindings (M-0, M-1, M-2, M-9) to
        !           884:   select layouts.
        !           885: * Recreate server socket on SIGUSR1, per SF feature request 2792533.
        !           886: 
        !           887: 14 May 2009
        !           888: 
        !           889: * Keys in status line (p in vi mode, M-y in emacs) to paste the first line
        !           890:   of the upper paste buffer. Suggested by Dan Colish.
        !           891: * clear-history command to clear a pane's history.
        !           892: * Don't force wrapping with \n when asked, let the cursor code figure it out.
        !           893:   Should fix terminals which use this to detect line breaks.
        !           894: * Major cleanup and restructuring of build infrastructure. Still separate files
        !           895:   for GNU and BSD make, but they are now hugely simplified at the expense of
        !           896:   adding a configure script which must be run before make. Now build and
        !           897:   install with:
        !           898: 
        !           899:        $ ./configure && make && sudo make install
        !           900: 
        !           901: 04 May 2009
        !           902: 
        !           903: * Use ACS line drawing characters for pane separator lines.
        !           904: 
        !           905: 30 April 2009
        !           906: 
        !           907: * Support command sequences without a space before the semicolon, for example
        !           908:   "neww; neww" now works as well as "neww ; neww". "neww;neww" is still an
        !           909:   error.
        !           910: * previous-layout command.
        !           911: * Display the layout name in window lists.
        !           912: * Merge resize-pane-up and resize-pane-down into resize-pane with -U and -D
        !           913:   flags.
        !           914: 
        !           915: 29 April 2009
        !           916: 
        !           917: * Get rid of compat/vis.* - only one function was used which is easily
        !           918:   replaced,and less compat code == good.
        !           919: 
        !           920: 27 April 2009
        !           921: 
        !           922: * Avoid using the prompt history when the server is locked, and prevent any
        !           923:   input entered from being added to the client's prompt history.
        !           924: * New command, confirm-before (alias confirm), which asks for confirmation
        !           925:   before executing a command. Bound "&" and "x" by default to confirm-before
        !           926:   "kill-window" and confirm-before "kill-pane", respectively.
        !           927: 
        !           928: 23 April 2009
        !           929: 
        !           930: * Support NEL, yet another way of making newline. Fixes the output from some
        !           931:   Gentoo packaging thing. Reported by someone on SF then logs that allowed a
        !           932:   fix sent by tcunha.
        !           933: * Use the xenl terminfo flag to detect early-wrap terminals like the FreeBSD
        !           934:   console. Many thanks for a very informative email from Christian Weisgerber.
        !           935: 
        !           936: 21 April 2009
        !           937: 
        !           938: * tmux 0.8 released.
        !           939: 
        !           940: 17 April 2009
        !           941: 
        !           942: * Remove the right number of characters from the buffer when escape then
        !           943:   a cursor key (or other key prefixed by \033) is pressed. Reported by
        !           944:   Stuart Henderson.
        !           945: 
        !           946: 03 April 2009
        !           947: 
        !           948: * rotate-window command. -U flag (default) for up, -D flag for down.
        !           949: 
        !           950: 02 April 2009
        !           951: 
        !           952: * Change scroll/pane redraws to only redraw the single pane affected rather
        !           953:   than the entire window.
        !           954: * If redrawing the region would mean redrawing > half the pane, just schedule
        !           955:   to redraw the entire window. Also add a flag to skip updating the window any
        !           956:   further if it is scheduled to be redrawn. This has the effect of batching
        !           957:   multiple redraws together.
        !           958: 
        !           959: 01 April 2009
        !           960: 
        !           961: * Basic horizontal splitting and layout management. Still some redraw and other
        !           962:   issues - particularly, don't mix with manual pane resizing, be careful when
        !           963:   viewing from multiple clients and don't expect shell windows to redraw very
        !           964:   well after the layout is changed; generally cycling the layout a few times
        !           965:   will fix most problems. Getting this in for testing while I think about how
        !           966:   to deal with manual mode.
        !           967: 
        !           968:   Split window as normal and cycle the layouts with C-b space. Some of the
        !           969:   layouts will work better when swap-pane comes along.
        !           970: 
        !           971: 31 March 2009
        !           972: 
        !           973: * AIX port, thanks to cmihai for access to a box. Only tested on 6.1 with xlc
        !           974:   10.1 (make sure CC is set). Needs GNU make and probably ncurses (didn't try
        !           975:   plain curses). Also won't build with DEBUG, so comment the FDEBUG=1 line in
        !           976:   GNUmakefile.
        !           977: * Draw a vertical line on the right when the window size is less than the
        !           978:   terminal size. This is partly to shake out any horizontal limit bugs on the
        !           979:   way to horizontal splitting/pane tiling. Currently a bit slow since it has to
        !           980:   do a lot of redrawing but hopefully that will improve as I get some better
        !           981:   ideas for how to do it.
        !           982: * Fix remaining problems with copy and paste and UTF-8.
        !           983: 
        !           984: 28 March 2009
        !           985: 
        !           986: * Better UTF-8 support, including combined characters. Unicode data is now
        !           987:   stored as UTF-8 in a separate array, the code does a lookup into this every
        !           988:   time it gets to a UTF-8 cell. Zero width characters are just appended onto
        !           989:   the UTF-8 data for the previous cell. This also means that almost no bytes
        !           990:   extra are wasted non-Unicode data (yay).
        !           991: 
        !           992:   Still some oddities, such as copy mode skips over wide characters in a
        !           993:   strange way, and the code could do with some tidying.
        !           994: * Key repeating is now a property of the key binding not of the command.
        !           995:   Repeat is turned on when the key is bound with the -r flag to bind-key.
        !           996:   next/previous-window no longer repeat by default as it turned out to annoy
        !           997:   me.
        !           998: 
        !           999: 27 March 2009
        !          1000: 
        !          1001: * Clear using ED when redrawing the screen. I foolishly assumed using spaces
        !          1002:   would be equivalent and terminals would pick up on this, but apparently not.
        !          1003:   This fixes copy and paste in xterm/rxvt.
        !          1004: * Sockets in /tmp are now created in a subdirectory named, tmux-UID, eg
        !          1005:   tmux-1000. The default socket is thus /tmp/tmux-UID/default. To start a
        !          1006:   separate server, the new -L command line option should be used: this creates
        !          1007:   a socket in the same directory with a different name ("-L main" will create
        !          1008:   socket called "main"). -S should only be used to place the socket outside
        !          1009:   /tmp. This makes sockets a little more secure and a bit more convenient to
        !          1010:   use multiple servers.
        !          1011: 
        !          1012: 21 March 2009
        !          1013: 
        !          1014: * New session flag "set-remain-on-exit" to set remain-on-exit flag for new
        !          1015:   windows created in that session (like "remain-by-default" used to do). Not
        !          1016:   perfectly happy about this, but until I can think of a good way to introduce
        !          1017:   it generically (maybe a set of options in the session) this will do. Fixes
        !          1018:   SF request 2527847.
        !          1019: 
        !          1020: 07 March 2009
        !          1021: 
        !          1022: * Support for 88 colour terminals.
        !          1023: * break-pane command to create a new window using an existing pane.
        !          1024: 
        !          1025: 02 March 2009
        !          1026: 
        !          1027: * Make escape key timer work properly so escape+key can be used without
        !          1028:   lightning fast key presses.
        !          1029: 
        !          1030: 13 February 2009
        !          1031: 
        !          1032: * Redo mode keys slightly more cleanly and apply them to command prompt
        !          1033:   editing. vi or emacs mode is controlled by the session option status-keys.
        !          1034: 
        !          1035: 12 February 2009
        !          1036: 
        !          1037: * Looking up argv[0] is expensive, so just use p_comm for the window name which
        !          1038:   is good enough. Also increase name update time to 500 ms.
        !          1039: 
        !          1040: 11 February 2009
        !          1041: 
        !          1042: * Only use ri when actually at the top of the screen; just move the cursor up
        !          1043:   otherwise.
        !          1044: * FreeBSD's console wraps lines at $COLUMNS - 1 rather than $COLUMNS (the
        !          1045:   cursor can never be beyond $COLUMNS - 1) and does not appear to support
        !          1046:   changing this behaviour, or any of the obvious possibilities (turning off
        !          1047:   right margin wrapping, insert mode). This is irritating, most notably because
        !          1048:   it impossible to write to the very bottom-right of the screen without
        !          1049:   scrolling. To work around this, if built on FreeBSD and run with a "cons"
        !          1050:   $TERM, the bottom-right cell on the screen is omitted.
        !          1051: * Emulate scroll regions (slowly) to support the few terminals which don't have
        !          1052:   it (some of which don't really have any excuse).
        !          1053: 
        !          1054: 10 February 2009
        !          1055: 
        !          1056: * No longer redraw the status line every status-interval unless it has actually
        !          1057:   changed.
        !          1058: 
        !          1059: 08 February 2009
        !          1060: 
        !          1061: * Don't treat empty arguments ("") differently when parsing configuration
        !          1062:   file/command prompt rather than command line.
        !          1063: * tmux 0.7 released.
        !          1064: 
        !          1065: 03 February 2009
        !          1066: 
        !          1067: * New command, copy-buffer (alias copyb), to copy a session paste buffer to
        !          1068:   another session.
        !          1069: 
        !          1070: 01 February 2009
        !          1071: 
        !          1072: * The character pair #(command) may now contain (escaped) right parenthesis.
        !          1073: 
        !          1074: 30 January 2009
        !          1075: 
        !          1076: * . now bound to "command-prompt 'move-window %%'" by default, from joshe.
        !          1077: 
        !          1078: 29 January 2009
        !          1079: 
        !          1080: * Window options to set status line fg, bg and attributes for a single
        !          1081:   window. Options are: window-status-fg, window-status-bg,
        !          1082:   window-status-attr. Set to "default" to use the session status colours.
        !          1083: 
        !          1084:   This allows quite neat things like:
        !          1085: 
        !          1086:        $ cat ~/bin/xssh
        !          1087:        #!/bin/sh
        !          1088: 
        !          1089:        if [ ! -z "$TMUX" ]; then
        !          1090:        case "$1" in
        !          1091:        natalya)
        !          1092:                tmux setw window-status-fg red >/dev/null
        !          1093:                ;;
        !          1094:        natasha)
        !          1095:                tmux setw window-status-fg yellow >/dev/null
        !          1096:                ;;
        !          1097:        esac
        !          1098:        fi
        !          1099:        ssh "$@"
        !          1100:        [ ! -z "$TMUX" ] && tmux setw -u window-status-fg >/dev/null
        !          1101:        $ alias ssh="~/bin/xssh"
        !          1102: 
        !          1103: * Support #(command) in status-left, and status-right, which is displayed as
        !          1104:   the first line of command's output (e.g. set -g status-right
        !          1105:   "#(whoami)@#(hostname -s)"). Commands with )s aren't supported.
        !          1106: 
        !          1107: 28 January 2009
        !          1108: 
        !          1109: * Support mouse in copy mode to move cursor. Can't do anything else at the
        !          1110:   moment until other mouse modes are handled.
        !          1111: * Better support for at least the most common variant of mouse input: parse it
        !          1112:   and adjust for different panes. Also support mouse in window/session choice
        !          1113:   mode.
        !          1114: 
        !          1115: 27 January 2009
        !          1116: 
        !          1117: * Bring back the fancy window titles with session/window names: it is easy to
        !          1118:   work around problems with elinks (see FAQ).
        !          1119: * -u flag to scroll-mode and copy-mode to start scrolled one page
        !          1120:   up. scroll-mode -u is bound to prefix,page-up (ppage) by default.
        !          1121: * Allow status, mode and message attributes to be changed by three new options:
        !          1122:   status-attr, mode-attr, message-attr. A comma-separated list is accepted
        !          1123:   containing: bright, dim, underscore, blink, reverse, hidden, italics, for
        !          1124:   example:
        !          1125: 
        !          1126:        set -g status-attr bright,blink
        !          1127: 
        !          1128:   From Josh Elsasser, thanks!
        !          1129: 
        !          1130: 26 January 2009
        !          1131: 
        !          1132: * Be more clever about picking the right process to create the window name.
        !          1133: * Don't balls up the terminal on UTF-8 combined characters. Don't support them
        !          1134:   properly either - they are just discarded for the moment.
        !          1135: 
        !          1136: 25 January 2009
        !          1137: 
        !          1138: * load-buffer command
        !          1139: 
        !          1140: 23 January 2009
        !          1141: 
        !          1142: * Use reverse colours rather than swapping fg and bg for message, mode and
        !          1143:   status line. This makes these usable on black and white terminals.
        !          1144: * Better error messages when creating a session or window fails.
        !          1145: * Oops. Return non-zero on error. Reported by Will Maier.
        !          1146: 
        !          1147: 21 January 2009
        !          1148: 
        !          1149: * Handle SIGTERM (and kill-server which uses it), a bit more neatly - tidy
        !          1150:   up properly and print a nicer message. Same effect though :-).
        !          1151: * new-window now supports -k to kill target window if it exists.
        !          1152: * Bring back split-window -p and -l options to specify the height a percentage
        !          1153:   or as a number of lines.
        !          1154: * Make window and session choice modes allow you to choose items in vi keys
        !          1155:   mode (doh!). As a side-effect, this makes enter copy selection (as well
        !          1156:   as C-w/M-w) when using emacs keys in copy mode. Reported by merdely.
        !          1157: 
        !          1158: 20 January 2009
        !          1159: 
        !          1160: * Darwin support for automatic-rename from joshe; Darwin doesn't seem to have
        !          1161:   a sane method of getting argv[0] and searching for the precise insane way
        !          1162:   is too frustrating, so this just uses the executable name.
        !          1163: * Try to change the window title to match the command running it in. This is
        !          1164:   done by reading argv[0] from the process group leader of the group that owns
        !          1165:   the tty (tcgetpgrp()). This can't be done portably so some OS-dependent code
        !          1166:   is introduced (ugh); OpenBSD, FreeBSD and Linux are supported at the moment.
        !          1167: 
        !          1168:   A new window flag, automatic-rename, is available: if this is set to off, the
        !          1169:   window name is not changed. Specifying a name with the new-window,
        !          1170:   new-session or rename-window commands will automatically set this flag to off
        !          1171:   for the window in question. To disable it entirely set the option to off
        !          1172:   globally (setw -g automatic-rename off).
        !          1173: 
        !          1174: 19 January 2009
        !          1175: 
        !          1176: * Fix various stupid issues when the status line is turned off. Grr.
        !          1177: * Use reverse attributes for clock and cursor, otherwise they do not
        !          1178:   appear on black and white terminals.
        !          1179: * An error in a command sequence now stops execution of that sequence.
        !          1180:   Internally, each command code now passes a return code back rather than
        !          1181:   talking to the calling client (if any) directly.
        !          1182: * attach-session now tries to start the server if it isn't already started - if
        !          1183:   no sessions are created in .tmux.conf this will cause an error.
        !          1184: * Clean up starting server by making initial client get a special socketpair.
        !          1185: 
        !          1186: 18 January 2009
        !          1187: 
        !          1188: * Unbreak UTF-8.
        !          1189: * -a flag to next-window and previous-window to select the next or previous
        !          1190:   window with activity or bell. Bound to M-n and M-p.
        !          1191: * find-window command to search window names, titles and visible content (but
        !          1192:   not history) for a string. If only one is found, the window is selected
        !          1193:   otherwise a choice list is shown. This (as with the other choice commands)
        !          1194:   only works from a key. Bound to "f" by default.
        !          1195: * Cleaned up command printing code, also enclose arguments with spaces in "s.
        !          1196: * Added command sequences. These are entered by separating each argument by a ;
        !          1197:   argument (spaces on both sides), for example:
        !          1198: 
        !          1199:        lsk ; lsc
        !          1200: 
        !          1201:   To use a literal ; as the argument prefix it with \, for example:
        !          1202: 
        !          1203:        bind x lsk \; lsc
        !          1204: 
        !          1205:   Commands are executed from left to right. Also note that command sequences do
        !          1206:   not support repeat-time repetition unless all commands making up the sequence
        !          1207:   support it.
        !          1208: * suspend-client command to suspend a client. Don't try to background it
        !          1209:   though...
        !          1210: * Mark attached sessions in sessions lists. Suggested by Simon Kuhnle.
        !          1211: 
        !          1212: 17 January 2009
        !          1213: 
        !          1214: * tmux 0.6 released.
        !          1215: 
        !          1216: 15 January 2009
        !          1217: 
        !          1218: * Support #H for hostname and #S for session name in status-left/right.
        !          1219: * Two new commands, choose-window and choose-session which work only when bound
        !          1220:   to a key and allow the window or session to be selected from a list. These
        !          1221:   are now bound to "w" and "s" instead of the list commands.
        !          1222: 
        !          1223: 14 January 2009
        !          1224: 
        !          1225: * Rework the prefix-time stuff. The option is now called repeat-time and
        !          1226:   defaults to 500 ms. It only applies to a small subset of commands, currently:
        !          1227:   up-pane, down-pane, next-window, previous-window, resize-pane-up,
        !          1228:   resize-pane-down. These are the commands for which it is obviously useful,
        !          1229:   having it for everything else was just bloody annoying.
        !          1230: * The alt-up and alt-down keys now resize a pane by five lines at a time.
        !          1231: * switch-pane is now select-pane and requires -p to select a pane. The
        !          1232:   "o" key binding is changed to down-pane.
        !          1233: * up-pane and down-pane commands, bound to arrow up and down by default.
        !          1234: * Multiple vertical window splitting. Minimum pane size is four lines, an
        !          1235:   (unhelpful) error will be shown if attempting to split a window with less
        !          1236:   that eight lines. If the window is resized, as many panes are shown as can
        !          1237:   fit without reducing them below four lines. There is (currently!) not a way
        !          1238:   to show a hidden pane without making the window larger.
        !          1239: 
        !          1240:   Note the -p and -l options to split-window are now gone, these may reappear
        !          1241:   once I think them through again.
        !          1242: * Server locking on inactivity (lock-after-time) is now disabled by default.
        !          1243: 
        !          1244: 13 January 2009
        !          1245: 
        !          1246: * kill-pane command.
        !          1247: 
        !          1248: 12 January 2009
        !          1249: 
        !          1250: * command-prompt now accepts a single argument, a template string. Any
        !          1251:   occurrences of %% in this string are replaced by whatever is entered at the
        !          1252:   prompt and the result is executed as a command. This allows things like (now
        !          1253:   bound by default):
        !          1254: 
        !          1255:         bind , command-prompt "rename-window %%"
        !          1256: 
        !          1257:   Or my favourite:
        !          1258: 
        !          1259:          bind x command-prompt "split-window 'man %%'"
        !          1260: 
        !          1261: * Option to set prefix time, allowing multiple commands to be entered without
        !          1262:   pressing the prefix key again, so long as they each typed within this time of
        !          1263:   each other.
        !          1264: * Yet more hacks for key handling. Think it is just about working now.
        !          1265: * Two commands, resize-pane-up and resize-pane-down to resize a pane.
        !          1266: * Make the window pane code handle panes of different sizes, and add a -l
        !          1267:   and -p arguments to split-window to specify the new window size in lines
        !          1268:   or as a percentage.
        !          1269: 
        !          1270: 11 January 2009
        !          1271: 
        !          1272: * Vertical window splitting. Currently can only split a window into two panes.
        !          1273:   New split-window command splits (bound to ") and switch-pane command (bound to
        !          1274:   o) switches between panes.
        !          1275: 
        !          1276:   close-pane, swap-pane commands are to follow. Also to come are pane resizing,
        !          1277:   >2 panes, the ability to break a pane out to a full window and vice versa and
        !          1278:   possibly horizontal splitting.
        !          1279: 
        !          1280:   Panes are subelements of windows rather than being windows in their own
        !          1281:   right. I tried to make them windows (so the splitting was at the session or
        !          1282:   client level) but this rapidly became very complex and invasive. So in the
        !          1283:   interests of having something working, I just made it so each window can have
        !          1284:   two child processes instead of one (and it still took me 12 hours straight
        !          1285:   coding). Now the concept is proven and much of the support code is there,
        !          1286:   this may change in future if more flexibility is needed.
        !          1287: * save-buffer command, from Tiago Cunha.
        !          1288: 
        !          1289: 10 January 2009
        !          1290: 
        !          1291: * New option, lock-after-time. If there is no activity in the period specified
        !          1292:   by this option (in seconds), tmux will lock the server. Default is 1800 (30
        !          1293:   minutes), set to 0 to disable.
        !          1294: * Server locking. Two new commands: set-password to set a password (a
        !          1295:   preencrypted password may be specified with -c); and lock-server to lock the
        !          1296:   server until the password is entered. Also an additional command line flag,
        !          1297:   -U, to unlock from the shell. The default password is blank (any password
        !          1298:   accepted). If specifying an encrypted password from encrypt(1) in .tmux.conf
        !          1299:   with -c, don't forget to enclose it in single-quotes (') to prevent shell
        !          1300:   variable expansion.
        !          1301: * If a window is created from the command line, tmux will now use the same
        !          1302:   current working directory for the new process. A new default-path option to
        !          1303:   sets the working directory for processes created from keys or interactively
        !          1304:   from the prompt.
        !          1305: * New mode to display a large clock. Entered with clock-mode command (bound to
        !          1306:   C-b t by default); two window options: clock-mode-colour and clock-mode-style
        !          1307:   (12 or 24). This will probably be used as the basis for window locking.
        !          1308: * New command, server-info, to show some server information and terminal
        !          1309:   details.
        !          1310: 
        !          1311: 09 January 2009
        !          1312: 
        !          1313: * Stop using ncurses variables and instead build a table of the codes we want
        !          1314:   into an array for each terminal type. This makes the code a little more
        !          1315:   untidy in places but gets rid of the awful global variables and calling
        !          1316:   setterm all the time, and shoves all the ncurses-dependent mess into a single
        !          1317:   file, tty-term.c. It also allows overriding single terminal codes, this is
        !          1318:   used to fix rxvt on some platforms (where it is missing dch) and in future
        !          1319:   may allow user customisation a la vim.
        !          1320: * Update key handling code. Simplify, support ctrl properly and add a new
        !          1321:   window option (xterm-keys) to output xterm key codes including ctrl and,
        !          1322:   if available, alt and shift.
        !          1323: 
        !          1324: 08 January 2009
        !          1325: 
        !          1326: * If built without DEBUG (the release versions), don't cause a fatal error if
        !          1327:   the grid functions notice an input error, just log and ignore the
        !          1328:   request. This might mean me getting shouted at less often when bugs kill
        !          1329:   long-running sessions, at least in release versions.
        !          1330: * Hopefully fix cursor out-of-bounds checking when writing to grid. When I
        !          1331:   wrote the code I must have forgotten that the cursor can be one cell off the
        !          1332:   right of the screen (yes, I know), so there were number of out-of-bounds/
        !          1333:   overflow problems.
        !          1334: 
        !          1335: 07 January 2009
        !          1336: 
        !          1337: * New flag to set and setw, -u, to unset an option (allowing it to inherit from)
        !          1338:   the global options again.
        !          1339: * Added more info messages for options changes.
        !          1340: * A bit of tidying and reorganisation of options code.
        !          1341: 
        !          1342: 06 January 2009
        !          1343: 
        !          1344: * Don't crash when backspacing if cursor is off the right of the screen,
        !          1345:   reported by David Chisnall.
        !          1346: * Complete words at any point inside command in prompt, also use option name
        !          1347:   as well as command names.
        !          1348: * Per-client prompt history of up to 100 items.
        !          1349: * Use a splay tree for key bindings instead of an array. As a side-effect this
        !          1350:   sorts them when listed.
        !          1351: 
        !          1352: 22 December 2008
        !          1353: 
        !          1354: * Use the right keys for home and end.
        !          1355: 
        !          1356: 20 December 2008
        !          1357: 
        !          1358: * Add vim mode for tmux configuration file to examples/, from Tiago Cunha.
        !          1359: 
        !          1360: 15 December 2008
        !          1361: 
        !          1362: * New command, source-file (alias source), to load a configuration
        !          1363:   file. Written by Tiago Cunha, many thanks.
        !          1364: 
        !          1365: 13 December 2008
        !          1366: 
        !          1367: * Work around lack of dch. On Linux, the rxvt termcap doesn't have it (it is
        !          1368:   lying, but we can't really start disbelieving termcaps...). This is a bit
        !          1369:   horrible - I can see no way to do it without pretty much redrawing the whole
        !          1370:   line, but it works...
        !          1371: 
        !          1372: 10 December 2008
        !          1373: 
        !          1374: * glibc's getopt(3) is useless: it is not POSIX compliant without jumping
        !          1375:   through non-portable hoops, and the method of resetting it is unclear (the
        !          1376:   man page on my system says set optind to 1, but other sources say 0). So,
        !          1377:   import OpenBSD's getopt_long.c into compat/ for use on Linux and use the
        !          1378:   clearly documented optreset = optind = 1 method. This fixes some strange
        !          1379:   issues with command parsing (getting the syntax wrong would prevent any
        !          1380:   further commands being parsed).
        !          1381: 
        !          1382: 06 December 2008
        !          1383: 
        !          1384: * Bring set/setw/show/showw into line with other commands. This means that by
        !          1385:   default they now affect the current window (if any); the new -g flag must be
        !          1386:   passed to set the global options. This changes the behaviour of set/show and
        !          1387:   WILL BREAK CURRENT CONFIGURATIONS.
        !          1388: 
        !          1389:   In summary, whether in the configuration file, the command prompt, or a key
        !          1390:   binding, use -g to set a global option, use -t to specify a particular window
        !          1391:   or session, or omit both to try and use the current window or session.
        !          1392: 
        !          1393:   This makes set/show a bit of a pain but is the correct behaviour for
        !          1394:   setw/showw and is the same as every other command, so we can put up with a
        !          1395:   bit of pain for consistency.
        !          1396: * Redo window options. They now work in the same way to session options with a
        !          1397:   global options set. showw/setw commands now have similar syntax to show/set
        !          1398:   (including the ability to use abbreviations).
        !          1399: 
        !          1400:   PLEASE NOTE this includes the following configuration-breaking changes:
        !          1401: 
        !          1402:   - remain-by-default is now GONE, use "setw -g remain-on-exit" to apply the
        !          1403:     global window option instead;
        !          1404:   - mode-keys is now a window option rather than session - use "setw [-g]
        !          1405:     mode-keys" instead of set.
        !          1406: 
        !          1407:   There are also some additions:
        !          1408: 
        !          1409:   - message-fg and message-bg session options to control status line message
        !          1410:     colours;
        !          1411:   - mode-fg and mode-bg window options to set colours in window modes such as
        !          1412:     copy mode.
        !          1413: 
        !          1414:   The options code still a mess and now there is twice as much of it :-(.
        !          1415: 
        !          1416: 02 December 2008
        !          1417: 
        !          1418: * Add support for including the window title in status-left or status-right
        !          1419:   strings by including the character pair "#T". This may be prefixed with
        !          1420:   a number to specify a maximum length, for example "#24T" to use at most
        !          1421:   24 characters of the title.
        !          1422: * Introduce two new options, status-left-length and status-right-length,
        !          1423:   control the maximum length of left and right components of the status bar.
        !          1424: * elinks (and possibly others) bypass the terminal and talk directly to X to
        !          1425:   restore the window title when exiting. tmux can't know about this particular
        !          1426:   bit of stupidity so the title ends up strange - the prefix isn't terribly
        !          1427:   important and elinks is quite useful so just get rid of it.
        !          1428: 
        !          1429: 27 November 2008
        !          1430: 
        !          1431: * Tweaks to support Dragonfly.
        !          1432: 
        !          1433: 17 November 2008
        !          1434: 
        !          1435: * tmux 0.5 released.
        !          1436: 
        !          1437: 16 November 2008
        !          1438: 
        !          1439: * New window option: "utf8"; this must be on (it is off by default) for UTF-8
        !          1440:   to be parsed. The global/session option "utf8-default" controls the setting
        !          1441:   for new windows.
        !          1442: 
        !          1443:   This means that by default tmux does not handle UTF-8. To use UTF-8 by
        !          1444:   default it is necessary to a) "set utf8-default on" in .tmux.conf b) start
        !          1445:   tmux with -u on any terminal which support UTF-8.
        !          1446: 
        !          1447:   It seems a bit unnecessary for this to be a per-window option but that is
        !          1448:   the easiest way to do it, and it can't do any harm...
        !          1449: * Enable default colours if op contains \033[39;49m, based on a report from
        !          1450:   fulvio ciriaco.
        !          1451: 
        !          1452: 12 November 2008
        !          1453: 
        !          1454: * Keep stack of last windows rather than just most recent; based on a diff from
        !          1455:   joshe.
        !          1456: 
        !          1457: 04 November 2008
        !          1458: 
        !          1459: * Don't try to redraw status line when showing a prompt or message; if it does,
        !          1460:   the status timer is never reset so it redraws on every loop. Spotted by
        !          1461:   joshe.
        !          1462: 
        !          1463: 09 October 2008
        !          1464: 
        !          1465: * Translate 256 colours into 16 if 256 is not available, same as screen does.
        !          1466: * Better support for OSC command (only to set window title now), and also
        !          1467:   support using APC for the same purpose (some Linux default shell profiles do
        !          1468:   this).
        !          1469: 
        !          1470: 25 September 2008
        !          1471: 
        !          1472: * Large internal rewrite to better support 256 colours and UTF-8. Screen data
        !          1473:   is now stored as single two-way array of structures rather than as multiple
        !          1474:   separate arrays. Also simplified a lot of code.
        !          1475: 
        !          1476:   Only external changes are three new flags, -2, -d and -u, which force tmux to
        !          1477:   assume the terminal supports 256 colours, default colours (useful for
        !          1478:   xterm-256color which lacks the AX flag), or UTF-8 respectively.
        !          1479: 
        !          1480: 10 September 2008
        !          1481: 
        !          1482: * Split off colour conversion code from screen code.
        !          1483: 
        !          1484: 09 September 2008
        !          1485: 
        !          1486: * Initial UTF-8 support. A bit ugly and with a limit of 4096 UTF-8
        !          1487:   characters per window.
        !          1488: 
        !          1489: 08 September 2008
        !          1490: 
        !          1491: * 256 colour support. tmux attempts to autodetect the terminal by looking
        !          1492:   both at what ncurses reports (usually wrong for xterm) and checking if
        !          1493:   the TERM contains "256col". For xterm TERM=xterm-256color is needed (as
        !          1494:   well as a build that support 256 colours); this seems to work for rxvt
        !          1495:   as well. On non-256 colour terminals, high colours are translated to white
        !          1496:   foreground and black background.
        !          1497: 
        !          1498: 28 August 2008
        !          1499: 
        !          1500: * Support OS X/Darwin thanks to bsd-poll.c from OpenSSH. Also convert
        !          1501:   from clock_gettime(2) to gettimeofday(2) as OS X doesn't support the
        !          1502:   former; microsecond accuracy will have to be sufficient ;-).
        !          1503: 
        !          1504: 07 August 2008
        !          1505: 
        !          1506: * Lose some unused/useless wrapper functions.
        !          1507: 
        !          1508: 25 July 2008
        !          1509: 
        !          1510: * Shell variables may now be defined and used in configuration file. Define
        !          1511:   variables with:
        !          1512: 
        !          1513:        VAR=1
        !          1514: 
        !          1515:   And use with:
        !          1516: 
        !          1517:         renamew ${VAR}
        !          1518:        renamew "x${VAR}x"
        !          1519: 
        !          1520:  Also some other fixes to make, for example, "abc""abc" work similarly to
        !          1521:  the shell.
        !          1522: 
        !          1523: 24 July 2008
        !          1524: 
        !          1525: * Finally lose inconsistently-used SCREEN_DEF* defines.
        !          1526: * If cursor mode is on, switch the arrow keys from \033[A to \033OA.
        !          1527: * Support the numeric keypad in both application and numbers mode. This is
        !          1528:   different from screen which always keeps it in application mode.
        !          1529: 
        !          1530: 19 July 2008
        !          1531: 
        !          1532: * Unbreak "set status" - tmux thought it was ambiguous, reported by rivo nurges.
        !          1533: 
        !          1534: 02 July 2008
        !          1535: 
        !          1536: * Split vi and emacs mode keys into two tables and add an option (mode-keys)
        !          1537:   to select between them. Default is emacs, use,
        !          1538: 
        !          1539:      tmux set mode-keys vi
        !          1540: 
        !          1541:   to change to vi.
        !          1542: 
        !          1543:   vi mode uses space to start selection, enter to copy selection and escape
        !          1544:   to clear selection.
        !          1545: 
        !          1546: 01 July 2008
        !          1547: 
        !          1548: * Protocol versioning. Clients which identify as a different version from the
        !          1549:   server will be rejected.
        !          1550: * tmux 0.4 released.
        !          1551: 
        !          1552: 29 June 2008
        !          1553: 
        !          1554: * Zombie windows. These are not closed when the child process dies. May be
        !          1555:   set for a window with the new "remain-on-exit" option; the default setting
        !          1556:   of this flag for new windows may be set with the "remain-by-default" session
        !          1557:   option.
        !          1558: 
        !          1559:   A window may be restarted with the respawn-window command:
        !          1560: 
        !          1561:        respawn-window [-k] [command]
        !          1562: 
        !          1563:   If -k is given, any existing process running in the window is killed;
        !          1564:   if command is omitted, the same command as when the window was first
        !          1565:   created is used.
        !          1566: 
        !          1567: 27 June 2008
        !          1568: 
        !          1569: * Handle nonexistent session or client to -t properly.
        !          1570: 
        !          1571: 25 June 2008
        !          1572: 
        !          1573: * select-prompt command to allow a window to be selected at a prompt. Only
        !          1574:   windows in the current session may be selected. Bound to ' by default.
        !          1575:   Suggested by merdely.
        !          1576: * move-window command. Requested by merdely.
        !          1577: * Support binding alt keys (prefixed with M-). Change default to use
        !          1578:   C- for ctrl keys (^ is still accepted as an alternative).
        !          1579: * Slim down default key bindings: support lowercase only.
        !          1580: * Handle escaped keys properly (parse eg \033b into a single key code) and
        !          1581:   use this to change copy mode next/previous work to M-f and M-b to match
        !          1582:   emacs.
        !          1583: 
        !          1584: 24 June 2008
        !          1585: 
        !          1586: * Next word (C-n/w) and previous word (C-b/b) in copy mode.
        !          1587: 
        !          1588: 23 June 2008
        !          1589: 
        !          1590: * list-commands command (alias lscm).
        !          1591: * Split information about options into a table and use it to parse options
        !          1592:   on input (allowing abbreviations) and to print them with show-options
        !          1593:   (meaning that bell-action gets a proper string). This turned out a bit ugly
        !          1594:   though :-/.
        !          1595: 
        !          1596: 22 June 2008
        !          1597: 
        !          1598: * Do not translate black and white into default if the terminal supports
        !          1599:   default colours. This was nice to force programs which didn't use default
        !          1600:   colours to be properly transparent in rxvt/aterm windows with a background
        !          1601:   image, but it causes trouble if someone redefines the default foreground and
        !          1602:   background (to have black on white or something).
        !          1603: 
        !          1604: 21 June 2008
        !          1605: 
        !          1606: * Naive tab completion in the command prompt. This only completes command
        !          1607:   names if a) they are at the start of the text b) the cursor is at
        !          1608:   the end of the text c) the text contains no spaces.
        !          1609: * Only attempt to set the title where TERM looks like an xterm (contains
        !          1610:   "xterm", "rxvt" or is "screen"). I hate this but I don't see a better way:
        !          1611:   setting the title actually kills some other terminals pretty much dead.
        !          1612: * Strip padding out of terminfo(5) strings. Currently the padding is just
        !          1613:   ignored, this may need to be altered if there are any software terminals
        !          1614:   out there that actually need it.
        !          1615: 
        !          1616: 20 June 2008
        !          1617: 
        !          1618: * buffer-limit option to set maximum size of buffer stack. Default is 9.
        !          1619: * Initial buffer improvements. Each session has a stack of buffers and each
        !          1620:   buffer command takes a -b option to manipulate items on the stack. If -b
        !          1621:   is omitted, the top entry is used. The following commands are currently
        !          1622:   available:
        !          1623: 
        !          1624:        set-buffer [-b index] [-t target-session] string
        !          1625:        paste-buffer [-d] [-b index] [-t target-window]
        !          1626:        delete-buffer [-b index] [-t target-session]
        !          1627:        show-buffers [-t target-session]
        !          1628:        show-buffer [-b index] [-t target-session]
        !          1629: 
        !          1630:   -d to paste-buffer deletes the buffer after pasting it.
        !          1631: * New option, display-time, sets the time status line messages stay on screen
        !          1632:   (unless a key is pressed). Set in milliseconds, default is 750 (0.75 seconds).
        !          1633:   The timer is only checked every 100 ms or so.
        !          1634: 
        !          1635: 19 June 2008
        !          1636: 
        !          1637: * Use "status" consistently for status line option, and prefix for "prefix" key
        !          1638:   option.
        !          1639: * Allow commands to be entered at a prompt. This is triggered with the
        !          1640:   command-prompt command, bound to : by default.
        !          1641: * Show status messages properly, without blocking the server.
        !          1642: 
        !          1643: 18 June 2008
        !          1644: 
        !          1645: * New option, set-titles. On by default, this attempts to set the window title
        !          1646:   using the \e]2;...\007 xterm code.
        !          1647: 
        !          1648:   Note that elinks requires the STY environment variable (used by screen) to be
        !          1649:   set before it will set the window title. So, if you want window titles set by
        !          1650:   elinks, set STY before running it (any value will do). I can't do this for all
        !          1651:   windows since setting it to an invalid value breaks screen.
        !          1652: * Show arrows at either end of status line when scrolled if more windows
        !          1653:   exist. Highlight the arrow if a hidden window has activity or bell.
        !          1654: * Scroll the status line to show the current window if necessary. Also handle
        !          1655:   windows smaller than needed better (show a blank status line instead of
        !          1656:   hanging or crashing).
        !          1657: 
        !          1658: 17 June 2008
        !          1659: 
        !          1660: * tmux 0.3 released.
        !          1661: 
        !          1662: 16 June 2008
        !          1663: 
        !          1664: * Add some information messages when window options are changed, suggested by
        !          1665:   Mike Erdely. Also add a -q command-line option to suppress them.
        !          1666: * show-window-options (showw) command.
        !          1667: 
        !          1668: 15 June 2008
        !          1669: 
        !          1670: * show-options (show) command to show one or all options.
        !          1671: 
        !          1672: 14 June 2008
        !          1673: 
        !          1674: * New window options: force-width and force-height. This will force a window
        !          1675:   to an arbitrary width and height (0 for the default unlimited). This is
        !          1676:   neat for emacs which doesn't have a sensible way to force hard wrapping at 80
        !          1677:   columns. Also, don't try to be clever and use clr_eol when redrawing the
        !          1678:   whole screen, it causes trouble since the redraw functions are used to draw
        !          1679:   the blank areas too.
        !          1680: * Clear the blank area below windows properly when they are smaller than client,
        !          1681:   also add an indicator line to show the vertical limit.
        !          1682: * Don't die on empty strings in config file, reported by Will Maier.
        !          1683: 
        !          1684: 08 June 2008
        !          1685: 
        !          1686: * Set socket mode +x if any sessions are attached and -x if not.
        !          1687: 
        !          1688: 07 June 2008
        !          1689: 
        !          1690: * Make status-interval actually changeable.
        !          1691: 
        !          1692: 06 June 2008
        !          1693: 
        !          1694: * New window option: aggressive-resize. Normally, windows are resized to the
        !          1695:   size of the smallest attached session to which they are linked. This means a
        !          1696:   window only changes size when sessions are detached or attached, or they are
        !          1697:   linked or unlinked from a session. This flag changes a window to be the size
        !          1698:   of the smallest attached session for which it is the current window - it is
        !          1699:   resized every time a session changes to it or away from it. This is nice for
        !          1700:   things that handle SIGWINCH well (like irssi) and bad for things like shells.
        !          1701: * The server now exits when no sessions remain.
        !          1702: * Fix bug with inserting characters with TERM=xterm-color.
        !          1703: 
        !          1704: 05 June 2008
        !          1705: 
        !          1706: * Completely reorganise command parsing. Much more common code in cmd-generic.c
        !          1707:   and a new way of specifying windows, clients or sessions. Now, most commands
        !          1708:   take a -t argument, which specifies a client, a session, or a window target.
        !          1709:   Clients and sessions are given alone (sessions are fnmatch(3)d and
        !          1710:   clients currently not), windows are give by (client|session):index. For
        !          1711:   example, if a user is in session "1" window 0 on /dev/ttypi, these should all
        !          1712:   be equivalent:
        !          1713: 
        !          1714:        tmux renamew newname                    (current session and window)
        !          1715:        tmux renamew -t: newname                (current session and window)
        !          1716:        tmux renamew -t:0 newname               (current session, window 0)
        !          1717:        tmux renamew -t0 newname                (current session, window 0)
        !          1718:        tmux renamew -t1:0 newname              (session 1, window 0)
        !          1719:        tmux renamew -t1: newname               (session 1's current window)
        !          1720:        tmux renamew -t/dev/ttypi newname       (client /dev/ttypi's current
        !          1721:                                                 session and window)
        !          1722:        tmux renamew -t/dev/ttypi: newname      (client /dev/ttypi's current
        !          1723:                                                 session and window)
        !          1724:        tmux renamew -t/dev/ttypi:0 newname     (client /dev/ttypi's current
        !          1725:                                                 session, window 0)
        !          1726: 
        !          1727:   This does have some downsides, for example, having to use -t on selectw,
        !          1728: 
        !          1729:        tmux selectw -t7
        !          1730: 
        !          1731:   is annoying. But then using non-flagged arguments would mean renaming the
        !          1732:   current window would need to be something like:
        !          1733: 
        !          1734:        tmux renamew : newname
        !          1735: 
        !          1736:   It might be better not to try and be so consistent; comments to the usual
        !          1737:   address ;-).
        !          1738: * Infrastructure for printing arguments in list-keys output. Easy ones only for
        !          1739:   now.
        !          1740: 
        !          1741: 04 June 2008
        !          1742: 
        !          1743: * Add some vi(1) key bindings in copy mode, and support binding ^[, ^\, ^]
        !          1744:   ^^ and ^_. Both from/prompted by Will Maier.
        !          1745: * setw monitor-activity and set status without arguments now toggle the current
        !          1746:   value; suggested by merdely.
        !          1747: * New command set-window-option (alias setw) to set the single current window
        !          1748:   option: monitor-activity to determine whether window activity is shown in
        !          1749:   the status bar for that window (default off).
        !          1750: * Change so active/bell windows are inverted in status line.
        !          1751: * Activity monitoring - window with activity are marked in status line. No
        !          1752:   way to disable this/filter windows yet.
        !          1753: * Brought select-window command into line with everything else; it now uses
        !          1754:   -i for the window index.
        !          1755: * Strings to display on the left and right of the status bar may now be set
        !          1756:   with the status-left and status-right options. These are passed through
        !          1757:   strftime(3) before being displayed. The status bar is automatically updated
        !          1758:   at an interval set by the status-interval option. The default is to display
        !          1759:   nothing on the left and the date and time on the left; the default update
        !          1760:   interval is 15 seconds.
        !          1761: 
        !          1762: 03 June 2008
        !          1763: 
        !          1764: * Per session options. Setting options without specifying a session sets the
        !          1765:   global options as normal (global options are inherited by all sessions);
        !          1766:   passing -c or -s will set the option only for that session.
        !          1767: * Because a client has a session attached, any command needing a session can
        !          1768:   take a client and use its session. So, anything that used to accept -s now
        !          1769:   accepts -c as well.
        !          1770: * -s to specify session name now supports fnmatch(3) wildcards; if multiple
        !          1771:   sessions are found, or if no -s is specified, the most newly created is used.
        !          1772: * If no command is specified, assume new-session. As a byproduct, clean up
        !          1773:   command default values into separate init functions.
        !          1774: * kill-server command.
        !          1775: 
        !          1776: 02 June 2008
        !          1777: 
        !          1778: * New command, start-server (alias "start"), to start the tmux server and do
        !          1779:   nothing else. This is good if you have a configuration file which creates
        !          1780:   windows or sessions (like me): in that case, starting the server the first
        !          1781:   time tmux new is run is bad since it creates a new session and window (as
        !          1782:   it is supposed to - starting the server is a side-effect).
        !          1783: 
        !          1784:   Instead, I have a little script which does the equivalent of:
        !          1785: 
        !          1786:        tmux has -s0 2>/dev/null || tmux start
        !          1787:        tmux attach -d -s0
        !          1788: 
        !          1789:   And I use it to start the server if necessary and attach to my primary
        !          1790:   session.
        !          1791: * Basic configuration file in ~/.tmux.conf or specified with -f. This is file
        !          1792:   contains a set of tmux commands that are run the first time the server is
        !          1793:   started. The configuration commands are executed before any others, so
        !          1794:   if you have a configuration file that contains:
        !          1795: 
        !          1796:        new -d
        !          1797:        neww -s0
        !          1798: 
        !          1799:   And you do the following without an existing server running:
        !          1800: 
        !          1801:        tmux new
        !          1802: 
        !          1803:   You will end up with two sessions, session 0 with two windows (created by
        !          1804:   the configuration file) and your client attached to session 1 with one
        !          1805:   window (created by the command-line command). I'm not completely happy with
        !          1806:   this, it seems a little non-obvious, but I haven't yet decided what to do
        !          1807:   about it.
        !          1808: 
        !          1809:   There is no environment variable handling or other special stuff yet.
        !          1810: 
        !          1811:   In the future, it might be nice to be able to have per-session configuration
        !          1812:   settings, probably by having conditionals in the file (so you could, for
        !          1813:   example, have commands to define a particular window layout that would only
        !          1814:   be invoked if you called tmux new -smysession and mysession did not already
        !          1815:   exist).
        !          1816: * BIG CHANGE: -s and -c to specify session name and client name are now passed
        !          1817:   after the command rather than before it. So, for example:
        !          1818: 
        !          1819:        tmux -s0 neww
        !          1820: 
        !          1821:   Becomes:
        !          1822: 
        !          1823:        tmux neww -s0
        !          1824: 
        !          1825:   This is to allow them to be used in the (forthcoming) configuration file
        !          1826:   THIS WILL BREAK ANY CURRENT SCRIPTS OR ALIASES USING -s OR -c.
        !          1827: 
        !          1828: 01 June 2008
        !          1829: 
        !          1830: * Bug fix: don't die if -k passed to link-window and the destination doesn't
        !          1831:   exist.
        !          1832: * New command, send-keys, will send a set of keys to a window.
        !          1833: 
        !          1834: 31 May 2008
        !          1835: 
        !          1836: * Fix so tmux doesn't hang if the initial window fails for some reason. This
        !          1837:   was highlighted by problems on Darwin, thanks to Elias Pipping for the report
        !          1838:   and access to a test account. (tmux still won't work on Darwin since its
        !          1839:   poll(2) is broken.)
        !          1840: 
        !          1841: 02 January 2008
        !          1842: 
        !          1843: * Don't attempt to reset the tty on exit if it has been closed externally.
        !          1844: 
        !          1845: 06 December 2007
        !          1846: 
        !          1847: * Restore checks for required termcap entries and add a few more obvious
        !          1848:   emulations.
        !          1849: * Another major reorganisation, this time of screen handling. A new set of
        !          1850:   functions, screen_write_*, are now used to write to a screen and a tty
        !          1851:   simultaneously. These are used by the input parser to update the base
        !          1852:   window screen and also by the different modes which now interpose their own
        !          1853:   screen.
        !          1854: 
        !          1855: 30 November 2007
        !          1856: 
        !          1857: * Support \ek...\e\ to set window name.
        !          1858: 
        !          1859: 27 November 2007
        !          1860: 
        !          1861: * Enable/disable mouse when asked, if terminal claims to support it. Mouse
        !          1862:   sequences are just passed through unaltered for the moment.
        !          1863: * Big internal reorganisation. Rather than leaving control of the tty solely in
        !          1864:   the client and piping all data through a socket to it, change so that the
        !          1865:   server opens the tty again and reads and writes to it directly. This avoids
        !          1866:   a lot of buffering and copying. Also reorganise the redrawing stuff so that
        !          1867:   everything goes through screen_draw_* - this makes the code simpler, but
        !          1868:   still needs broken up more, and all the ways of writing to screens should be
        !          1869:   more consistent.
        !          1870: 
        !          1871: 26 November 2007
        !          1872: 
        !          1873: * Rather than shifting up one line at a time once the history is full,
        !          1874:   shift by 10% of the history each time. This is faster.
        !          1875: * Add ^A and ^E to copy mode to move to start-of-line/end-of-line.
        !          1876: 
        !          1877: 24 November 2007
        !          1878: 
        !          1879: * Support for alt charset mode (VT100 graphics characters).
        !          1880: 
        !          1881: 23 November 2007
        !          1882: 
        !          1883: * Mostly complete copy & paste. Copy mode entered with C-b [ (copy-mode
        !          1884:   command). In copy mode, arrow keys/page up/page down/hjkl/C-u/C-f navigate,
        !          1885:   space or C-space starts selection, and enter or C-w copies and (important!)
        !          1886:   exits copy mode. C-b ] (paste-buffer) pastes into current window. No
        !          1887:   extra utility keys (bol/eol/clear selection/etc), only one single buffer,
        !          1888:   and no buffer manipulation commands (clear/view/etc) yet. The code is also
        !          1889:   fugly :-(.
        !          1890: * history-limit option to set maximum history. Does not apply retroactively to
        !          1891:   existing windows! Lines take up a variable amount of space, but a reasonable
        !          1892:   guess for an 80-column terminal is 250 KB per 1000 lines (of history used,
        !          1893:   an empty history takes no space).
        !          1894: 
        !          1895: 21 November 2007
        !          1896: 
        !          1897: * Create every line as zero length and only expand it as data is written,
        !          1898:   rather than creating at full size immediately.
        !          1899: * Make command output (eg list-keys) go to a scrollable window similar to
        !          1900:   scroll mode.
        !          1901: * Redo screen redrawing so it is a) readable b) split into utility functions
        !          1902:   that can be used outside screen.c. Use these to make scroll mode only
        !          1903:   redraw what it has to which gets rid of irritating flickering status box and
        !          1904:   makes it much faster.
        !          1905: * Full line width memory and horizontal scrolling in history.
        !          1906: * Initial support for scroll history. = to enter scrolling mode, and then
        !          1907:   vi keys or up/down/pgup/pgdown to navigate. Q to exit. No horizontal history
        !          1908:   yet (need per-line sizes) and a few kinks to be worked out (resizing while in
        !          1909:   history mode will probably cause trouble).
        !          1910: 
        !          1911: 20 November 2007
        !          1912: 
        !          1913: * Fix format string error with "must specify a client" message. Also
        !          1914:   sprinkle some printflike tags.
        !          1915: * tmux 0.1 released.
        !          1916: 
        !          1917: 17 November 2007
        !          1918: 
        !          1919: * (nicm) Add -k option to link-window to kill target window if it exists.
        !          1920: 
        !          1921: 16 November 2007
        !          1922: 
        !          1923: * (nicm) Split in-client display into two columns. This is a hack but not a lot
        !          1924:   more so than that bit is already and it helps with lots of keys.
        !          1925: * (nicm) switch-client command to switch client between different sessions. This
        !          1926:   is pretty cool:
        !          1927: 
        !          1928:        $ tmux bind q switch 0
        !          1929:        $ tmux bind w switch 1
        !          1930: 
        !          1931:   Then you can switch between sessions 0 and 1 with a key :-).
        !          1932: * (nicm) Accept "-c client-tty" on command line to allow client manipulation
        !          1933:   commands, and change detach-/refresh-session to detach-/refresh-client (this
        !          1934:   loses the -a behaviour, but at some point -session versions may return, and
        !          1935:   -c will allow fnmatch(3)).
        !          1936: * (nicm) List available commands on ambiguous command.
        !          1937: 
        !          1938: 12 November 2007
        !          1939: 
        !          1940: * (nicm) If the terminal supports default colours (AX present), force black
        !          1941:   background and white foreground to default. This is useful on transparent
        !          1942:   *terms for programs which don't do it themselves (like most(1)).
        !          1943: * (nicm) Fill in the rest of the man page.
        !          1944: * (nicm) kill-session command.
        !          1945: 
        !          1946: 09 November 2007
        !          1947: 
        !          1948: * (nicm) C-space is now "^ " not "^@".
        !          1949: * (nicm) Support tab (\011).
        !          1950: * (nicm) Initial man page outline.
        !          1951: * (nicm) -V to show version.
        !          1952: * (nicm) rename-session command.
        !          1953: 
        !          1954: 08 November 2007
        !          1955: 
        !          1956: * (nicm) Check for required terminal capabilities on start.
        !          1957: 
        !          1958: 31 October 2007
        !          1959: 
        !          1960: * (nicm) Linux port.
        !          1961: 
        !          1962: 30 October 2007
        !          1963: 
        !          1964: * (nicm) swap-window command. Same as link-window but swaps windows.
        !          1965: 
        !          1966: 26 October 2007
        !          1967: 
        !          1968: * (nicm) Saving scroll region on \e7 causes problems with ncmpc so I guess
        !          1969:   it is not required.
        !          1970: * (nicm) unlink-window command.
        !          1971: * (nicm) link-window command to link an existing window into another session
        !          1972:   (or another index in the same session). Syntax:
        !          1973: 
        !          1974:        tmux -s dstname link-window [-i dstidx] srcname srcidx
        !          1975: 
        !          1976: * (nicm) Redo window data structures. The global array remains, but each per-
        !          1977:   session list is now a RB tree of winlink structures. This disassociates the
        !          1978:   window index from the array size (allowing arbitrary indexes) which still
        !          1979:   allowing windows to have multiple indexes.
        !          1980: 
        !          1981: 25 October 2007
        !          1982: 
        !          1983: * (nicm) has-session command: checks if session exists.
        !          1984: 
        !          1985: 24 October 2007
        !          1986: 
        !          1987: * (nicm) Support for \e6n to request cursor position. resize(1) now works.
        !          1988: * (nicm) Support for \e7, \e8 save/restore cursor and attribute sequences.
        !          1989:   Currently don't save mode (probably should). Also change some cases where
        !          1990:   out-of-bound values are ignored to limit them to within range (there are
        !          1991:   others than need to be checked too).
        !          1992: 
        !          1993: 23 October 2007
        !          1994: 
        !          1995: * (nicm) Lift limit on session name passed with -s.
        !          1996: * (nicm) Show size in session/window lists.
        !          1997: * (nicm) Pass tty up to server when client identifies and add a list-clients
        !          1998:   command to list connected clients.
        !          1999: 
        !          2000: 20 October 2007
        !          2001: 
        !          2002: * (nicm) Add default-command option and change default to be $SHELL rather than
        !          2003:   $SHELL -l. Also try to read shell from passwd db if $SHELL isn't present.
        !          2004: 
        !          2005: 19 October 2007
        !          2006: 
        !          2007: * (nicm) -n on new-session is now -s, and -n is now the initial window name.
        !          2008:   This was documented but not implemented :-/.
        !          2009: * (nicm) kill-window command, bound to & by default (because it should be hard
        !          2010:   to hit accidently).
        !          2011: * (nicm) bell-style option with three choices: "none" completely ignore bell;
        !          2012:   "any" pass through a bell in any window to current; "current" ignore bells
        !          2013:   except in current window. This applies only to the bell terminal signal,
        !          2014:   the status bar always reflects any bells.
        !          2015: * (nicm) Refresh session command.
        !          2016: 
        !          2017: 12 October 2007
        !          2018: 
        !          2019: * (nicm) Add a warning if $TMUX exists on new/attach.
        !          2020: * (nicm) send-prefix command. Bound to C-b by default.
        !          2021: * (nicm) set status, status-fg, status-bg commands. fg and bg are as a number
        !          2022:   from 0 to 8 or a string ("red", "blue", etc). status may be 1/0, on/off,
        !          2023:   yes/no.
        !          2024: * (nicm) Make status line mark window in yellow on bell.
        !          2025: 
        !          2026: 04 October 2007
        !          2027: 
        !          2028: * (nicm) -d option to attach to detach all other clients on the same session.
        !          2029: * (nicm) Partial resizing support. Still buggy. A C-b S and back sometimes fixes
        !          2030:   it when it goes wonky.
        !          2031: * (mxey) Added my tmux start script as an example (examples/start-tmux.sh).
        !          2032: * (mxey) New sessions can now be given a command for their first window.
        !          2033: * (mxey) Fixed usage statement for new-window.
        !          2034: * (nicm) attach-session (can't believe I forgot it until now!) and list-windows
        !          2035:   commands.
        !          2036: * (nicm) rename-window and select-window commands.
        !          2037: * (nicm) set-option command (alias set): "tmux set-option prefix ^A".
        !          2038: * (nicm) Key binding and unbinding is back.
        !          2039: 
        !          2040: 03 October 2007
        !          2041: 
        !          2042: * (nicm) {new,next,last,previous}-window.
        !          2043: * (nicm) Rewrite command handling so commands are much more generic and the
        !          2044:   same commands are used for command line and keys (although most will probably
        !          2045:   need to check how they are called). Currently incomplete (only new/detach/ls
        !          2046:   implemented). Change: -s is now passed before command again!
        !          2047: * (nicm) String number arguments. So you can do: tmux bind ^Q create "blah".
        !          2048: * (nicm) Key binding. tmux bind key command [argument] and tmux unbind key.
        !          2049:   Key names are in a table in key-string.c, plus A is A, ^A is ctrl-A.
        !          2050:   Possible commands are in cmd.c (look at cmd_bind_table).
        !          2051: * (nicm) Move command parsing into the client. Also rename some messages and
        !          2052:   tidy up a few bits. Lots more tidying up needed :-/.
        !          2053: 
        !          2054: 02 October 2007
        !          2055: 
        !          2056: * (nicm) Redraw client status lines on rename.
        !          2057: * (nicm) Error on ambiguous command.
        !          2058: 
        !          2059: 01 October 2007
        !          2060: 
        !          2061: * (nicm) Restore window title handling.
        !          2062: * (nicm) Simple uncustomisable status line with window list.
        !          2063: 
        !          2064: 30 September 2007
        !          2065: 
        !          2066: * (nicm) Window info command for debugging, C-b I.
        !          2067: 
        !          2068: 29 September 2007
        !          2069: 
        !          2070: * (nicm) Deleting/inserting lines should follow scrolling region. Fix.
        !          2071: * (nicm) Allow creation of detached sessions: "tmux new-session -d".
        !          2072: * (nicm) Permit error messages to be passed back for transient clients like
        !          2073:   rename. Also make rename -i work.
        !          2074: * (nicm) Pass through bell in any window to current.
        !          2075: 
        !          2076: 28 September 2007
        !          2077: 
        !          2078: * (nicm) Major rewrite of input parser:
        !          2079:        - Lose the old weirdness in favour of a state machine.
        !          2080:        - Merge in parsing from screen.c.
        !          2081:        - Split key parsing off into a separate file.
        !          2082:   This is step one towards hopefully allowing a status line. It requires
        !          2083:   that we output data as if the terminal had one line less than it really does -
        !          2084:   a serious problem when it comes to things like scrolling. This change
        !          2085:   consolidates all the range checking and limiting together which should make
        !          2086:   it easier.
        !          2087: * (mxey) Added window renaming, like "tmux rename [-s session] [-i index] name"
        !          2088: 
        !          2089: 27 September 2007
        !          2090: 
        !          2091: * Split "tmux list" into "tmux list-sessions" (ls) and "list-windows" (lsw).
        !          2092: * New command session selection:
        !          2093:        - if name is specified, look for it and use it if it exists, otherwise
        !          2094:          error
        !          2095:        - if no name specified, try the current session from $TMUX
        !          2096:        - if $TMUX doesn't exist, and there is only one session, use it,
        !          2097:          otherwise error
        !          2098: 
        !          2099: 26 September 2007
        !          2100: 
        !          2101: * Add command aliases, so "ls" is an alias for "list".
        !          2102: * Rename some commands and alter syntax to take options after a la CVS. Also
        !          2103:   change some flags. So:
        !          2104: 
        !          2105:        tmux -s/socket -nabc new
        !          2106: 
        !          2107:   Becomes:
        !          2108: 
        !          2109:        tmux -S/socket new -sabc
        !          2110: 
        !          2111: * Major tidy and split of client/server code.
        !          2112: 
        !          2113: 22 September 2007
        !          2114: 
        !          2115: * Window list command (C-b W). Started by Maximilian Gass, finished by me.
        !          2116: 
        !          2117: 20 September 2007
        !          2118: 
        !          2119: * Specify meta via environment variable (META).
        !          2120: * Record last window and ^L key to switch to it. Largely from Maximilian Gass.
        !          2121: * Reset ignored signals in child after forkpty, makes ^C work.
        !          2122: * Wrap on next/previous. From Maximilian Gass.
        !          2123: 
        !          2124: 19 September 2007
        !          2125: 
        !          2126: * Don't renumber windows on close.
        !          2127: 
        !          2128: 28 August 2007
        !          2129: 
        !          2130: * Scrolling region (\e[r) support.
        !          2131: 
        !          2132: 27 August 2007
        !          2133: 
        !          2134: * Change screen.c to work more logically and hopefully fix heap corruption.
        !          2135: 
        !          2136: 09 July 2007
        !          2137: 
        !          2138: * Initial import to CVS. Basic functions are working, albeit with a couple of
        !          2139:   showstopper memory bugs and many missing features. Detaching, reattaching,
        !          2140:   creating new sessions, listing sessions work acceptably for using with shells.
        !          2141:   Simple curses programs (top, systat, tetris) and more complicated ones (mutt,
        !          2142:   emacs) that don't require scrolling regions (ESC[r) mostly work fine
        !          2143:   (including mutt, emacs). No status bar yet and no key remapping or other
        !          2144:   customisation.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>