OpenBSD CVS

CVS log for src/usr.bin/tmux/cmd.c


[BACK] Up to [local] / src / usr.bin / tmux

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.176 / (download) - annotate - [select for diffs], Sat May 18 08:50:11 2024 UTC (20 hours, 16 minutes ago) by jsg
Branch: MAIN
CVS Tags: HEAD
Changes since 1.175: +1 -3 lines
Diff to previous 1.175 (colored)

remove externs with no matching var; ok nicm@

Revision 1.175 / (download) - annotate - [select for diffs], Thu Aug 17 14:10:28 2023 UTC (9 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_7_5_BASE, OPENBSD_7_5, OPENBSD_7_4_BASE, OPENBSD_7_4
Changes since 1.174: +9 -5 lines
Diff to previous 1.174 (colored)

Add a session, pane and user mouse range types for the status line and
add format variables for mouse_status_line and mouse_status_range so
they can be associated with different commands in the key bindings.
GitHub issue 3652.

Revision 1.174 / (download) - annotate - [select for diffs], Mon May 30 12:48:57 2022 UTC (23 months, 2 weeks ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_7_3_BASE, OPENBSD_7_3, OPENBSD_7_2_BASE, OPENBSD_7_2
Changes since 1.173: +3 -1 lines
Diff to previous 1.173 (colored)

Add an ACL list for users connecting to the tmux socket. Users may be
forbidden from attaching, forced to attach read-only, or allowed to
attach read-write. A new command, server-access, configures the list.
tmux gets the user using getpeereid(3) of the client socket. Users must
still configure file system permissions manually. From Dallas Lyons and
others.

Revision 1.173 / (download) - annotate - [select for diffs], Thu Sep 9 21:55:03 2021 UTC (2 years, 8 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_7_1_BASE, OPENBSD_7_1, OPENBSD_7_0_BASE, OPENBSD_7_0
Changes since 1.172: +2 -2 lines
Diff to previous 1.172 (colored)

Keep -? as usage.

Revision 1.172 / (download) - annotate - [select for diffs], Fri Aug 27 17:25:55 2021 UTC (2 years, 8 months ago) by nicm
Branch: MAIN
Changes since 1.171: +49 -1 lines
Diff to previous 1.171 (colored)

Replace %% in command lists (by copying them) for template arguments ,
this means they can be used with {} as well. Also make argument
processing from an existing vector preserve commands. GitHub issue 2858.

Revision 1.171 / (download) - annotate - [select for diffs], Wed Aug 25 08:51:55 2021 UTC (2 years, 8 months ago) by nicm
Branch: MAIN
Changes since 1.170: +9 -3 lines
Diff to previous 1.170 (colored)

Validate command argument types (string or command list) and give more
useful error messages.

Revision 1.170 / (download) - annotate - [select for diffs], Sat Aug 21 18:39:07 2021 UTC (2 years, 8 months ago) by nicm
Branch: MAIN
Changes since 1.169: +10 -17 lines
Diff to previous 1.169 (colored)

Pass typed arguments out of the parser into the arguments list and let
it convert them into strings.

Revision 1.169 / (download) - annotate - [select for diffs], Sat Aug 21 14:10:08 2021 UTC (2 years, 8 months ago) by nicm
Branch: MAIN
Changes since 1.168: +1 -12 lines
Diff to previous 1.168 (colored)

Remove some members of struct cmd which are no longer used.

Revision 1.168 / (download) - annotate - [select for diffs], Sat Aug 21 14:06:17 2021 UTC (2 years, 8 months ago) by nicm
Branch: MAIN
Changes since 1.167: +13 -2 lines
Diff to previous 1.167 (colored)

Preserve command group when moving temporary list to current list being
buit.

Revision 1.167 / (download) - annotate - [select for diffs], Sat Aug 21 08:44:59 2021 UTC (2 years, 8 months ago) by nicm
Branch: MAIN
Changes since 1.166: +2 -3 lines
Diff to previous 1.166 (colored)

Wrap command argument definitions in their own struct.

Revision 1.166 / (download) - annotate - [select for diffs], Fri Aug 20 19:50:17 2021 UTC (2 years, 8 months ago) by nicm
Branch: MAIN
Changes since 1.165: +3 -6 lines
Diff to previous 1.165 (colored)

Hide struct args behind a couple of accessor functions.

Revision 1.165 / (download) - annotate - [select for diffs], Fri Aug 20 19:34:51 2021 UTC (2 years, 8 months ago) by nicm
Branch: MAIN
Changes since 1.164: +3 -3 lines
Diff to previous 1.164 (colored)

Add a couple of const and fix some warnings.

Revision 1.164 / (download) - annotate - [select for diffs], Thu Jun 10 07:50:03 2021 UTC (2 years, 11 months ago) by nicm
Branch: MAIN
Changes since 1.163: +5 -1 lines
Diff to previous 1.163 (colored)

Add different command historys for different types of prompts
("command", "search" etc). From Anindya Mukherjee.

Revision 1.163 / (download) - annotate - [select for diffs], Mon Jun 29 15:53:28 2020 UTC (3 years, 10 months ago) by bket
Branch: MAIN
CVS Tags: OPENBSD_6_9_BASE, OPENBSD_6_9, OPENBSD_6_8_BASE, OPENBSD_6_8
Changes since 1.162: +2 -7 lines
Diff to previous 1.162 (colored)

Replace TAILQ concatenation loop with TAILQ_CONCAT

As a result remove unneeded variables

OK @nicm

Revision 1.162 / (download) - annotate - [select for diffs], Thu Jun 4 07:12:05 2020 UTC (3 years, 11 months ago) by nicm
Branch: MAIN
Changes since 1.161: +10 -8 lines
Diff to previous 1.161 (colored)

Instead of using a custom parse function to process {}, treat it as a
set of statements and parse with yacc, then convert back to a string as
the last step. This means the rules are consistent inside and outside
{}, %if and friends work at the right time, and the final result isn't
littered with unnecessary newlines.

Revision 1.161 / (download) - annotate - [select for diffs], Sat May 16 16:02:24 2020 UTC (4 years ago) by nicm
Branch: MAIN
Changes since 1.160: +3 -1 lines
Diff to previous 1.160 (colored)

Add a customize mode where keys and options may be browsed and changed,
includes adding a brief description of each option. Bound to "C" by
default.

Revision 1.160 / (download) - annotate - [select for diffs], Mon Apr 13 16:19:37 2020 UTC (4 years, 1 month ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_6_7_BASE, OPENBSD_6_7
Changes since 1.159: +16 -7 lines
Diff to previous 1.159 (colored)

When parsing strings, put all commands in one group even if there are
newlines. This means that for example bind q { a \n b } and bind q "a ;
b" are the same. Also log commands in different groups separated by ;;
rather than ; (a command list like this should never be user visible).

Revision 1.159 / (download) - annotate - [select for diffs], Mon Apr 13 15:55:51 2020 UTC (4 years, 1 month ago) by nicm
Branch: MAIN
Changes since 1.158: +12 -13 lines
Diff to previous 1.158 (colored)

When adding a list of commands to the queue, instead of automatically
creating a new state for each group of commands, require the caller to
create one and use it for all the commands in the list. This means the
current target works even with list with multiple groups (which can
happen if they are defined with newlines).

Revision 1.158 / (download) - annotate - [select for diffs], Mon Apr 13 08:26:27 2020 UTC (4 years, 1 month ago) by nicm
Branch: MAIN
Changes since 1.157: +119 -10 lines
Diff to previous 1.157 (colored)

Make struct cmd local to cmd.c and move it out of tmux.h.

Revision 1.157 / (download) - annotate - [select for diffs], Tue Mar 24 08:09:43 2020 UTC (4 years, 1 month ago) by nicm
Branch: MAIN
Changes since 1.156: +3 -1 lines
Diff to previous 1.156 (colored)

Add support for overlay popup boxes to show text or output temporarily
above the normal layout. These work similarly to menus and are created
with the display-popup command.

Revision 1.156 / (download) - annotate - [select for diffs], Sat Jan 4 18:01:56 2020 UTC (4 years, 4 months ago) by nicm
Branch: MAIN
Changes since 1.155: +2 -2 lines
Diff to previous 1.155 (colored)

Add ~ to quoted characters for %%%, reported by tb@.

Revision 1.155 / (download) - annotate - [select for diffs], Thu Oct 3 10:24:05 2019 UTC (4 years, 7 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_6_6_BASE, OPENBSD_6_6
Changes since 1.154: +2 -2 lines
Diff to previous 1.154 (colored)

Do not lazily use BUFSIZ for "I don't care what size" when building
strings because it is only guaranteed to be 256 bytes and even the
default 1024 is not always enough. Reported by Gregory Pakosz.

Revision 1.154 / (download) - annotate - [select for diffs], Thu Aug 29 07:13:48 2019 UTC (4 years, 8 months ago) by nicm
Branch: MAIN
Changes since 1.153: +2 -6 lines
Diff to previous 1.153 (colored)

It is not longer necessary to double-escape ; in %%%, problem reported
by Theo Buehler.

Revision 1.153 / (download) - annotate - [select for diffs], Sat Jul 6 20:56:34 2019 UTC (4 years, 10 months ago) by nicm
Branch: MAIN
Changes since 1.152: +3 -3 lines
Diff to previous 1.152 (colored)

Correctly adjust mouse position if the status line is at the top and
more than one line. GitHub issue 1822.

Revision 1.152 / (download) - annotate - [select for diffs], Sat May 25 10:44:09 2019 UTC (4 years, 11 months ago) by nicm
Branch: MAIN
Changes since 1.151: +4 -4 lines
Diff to previous 1.151 (colored)

Use client name when logging command queue.

Revision 1.151 / (download) - annotate - [select for diffs], Sat May 25 07:29:04 2019 UTC (4 years, 11 months ago) by nicm
Branch: MAIN
Changes since 1.150: +80 -1 lines
Diff to previous 1.150 (colored)

Merge the now tiny cmd-list.c into cmd.c.

Revision 1.150 / (download) - annotate - [select for diffs], Sat May 25 06:58:10 2019 UTC (4 years, 11 months ago) by nicm
Branch: MAIN
Changes since 1.149: +14 -7 lines
Diff to previous 1.149 (colored)

Make cmd_log_argv take a printf-like format for the prefix.

Revision 1.149 / (download) - annotate - [select for diffs], Thu May 23 11:13:30 2019 UTC (4 years, 11 months ago) by nicm
Branch: MAIN
Changes since 1.148: +105 -85 lines
Diff to previous 1.148 (colored)

Replace the split parser code (cfg.c and cmd-string.c) with a single
parser using yacc(1). This is a major change but is clearer and simpler
and allows some edge cases to be made more consistent, as well as
tidying up how aliases are handled. It will also allow some further
improvements later.

Entirely the same parser is now used for parsing the configuration file
and for string commands. This means that constructs previously only
available in .tmux.conf, such as %if, can now be used in string commands
(for example, those given to if-shell - not commands invoked from the
shell, they are still parsed by the shell itself).

The only syntax change I am aware of is that #{} outside quotes or a
comment is now considered a format and not a comment, so #{ is now a
syntax error (notably, if it is at the start of a line).

This also adds two new sections to the man page documenting the syntax
and outlining how parsing and command execution works.

Thanks to everyone who sent me test configs (they still all parse
without errors - but this doesn't mean they still work as intended!).

Thanks to Avi Halachmi for testing and man page improvements, also to
jmc@ for reviewing the man page changes.

Revision 1.148 / (download) - annotate - [select for diffs], Fri May 10 18:04:06 2019 UTC (5 years ago) by nicm
Branch: MAIN
Changes since 1.147: +3 -1 lines
Diff to previous 1.147 (colored)

Add support for simple menus usable with mouse or keyboard. New command
display-menu shows a menu (bound to the mouse on status line by default)
and a couple of extra formats for the default menus.

Revision 1.147 / (download) - annotate - [select for diffs], Wed May 8 18:05:03 2019 UTC (5 years ago) by nicm
Branch: MAIN
Changes since 1.146: +12 -7 lines
Diff to previous 1.146 (colored)

Adjust how mouse targets are found so they always have a session, window
and pane.

Revision 1.146 / (download) - annotate - [select for diffs], Fri May 3 18:42:40 2019 UTC (5 years ago) by nicm
Branch: MAIN
Changes since 1.145: +3 -3 lines
Diff to previous 1.145 (colored)

Do not store the mouse position we calculate as the start of a drag back
into the mouse event that later code uses, it has been adjusted and they
should use the original position. GitHub issue 1710.

Revision 1.145 / (download) - annotate - [select for diffs], Fri May 3 16:51:29 2019 UTC (5 years ago) by nicm
Branch: MAIN
Changes since 1.144: +4 -5 lines
Diff to previous 1.144 (colored)

Fix mouse positioning when the pane is not entirely visible.

Revision 1.144 / (download) - annotate - [select for diffs], Thu Apr 25 19:36:59 2019 UTC (5 years ago) by nicm
Branch: MAIN
Changes since 1.143: +1 -5 lines
Diff to previous 1.143 (colored)

options_array_item_value cannot return NULL.

Revision 1.143 / (download) - annotate - [select for diffs], Tue Apr 23 20:36:55 2019 UTC (5 years ago) by nicm
Branch: MAIN
Changes since 1.142: +12 -9 lines
Diff to previous 1.142 (colored)

Indicate an array option with a flag rather than a special type so that
in future will not have to be strings.

Revision 1.142 / (download) - annotate - [select for diffs], Mon Mar 18 11:58:40 2019 UTC (5 years, 2 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_6_5_BASE, OPENBSD_6_5
Changes since 1.141: +21 -21 lines
Diff to previous 1.141 (colored)

Make array options a sparse tree instead of an array of char * and
remove the size limit.

Revision 1.141 / (download) - annotate - [select for diffs], Thu Oct 18 08:38:01 2018 UTC (5 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.140: +3 -1 lines
Diff to previous 1.140 (colored)

Support for windows larger than visible on the attached client. This has
been a limitation for a long time.

There are two new options, window-size and default-size, and a new
command, resize-window. The force-width and force-height options and the
session_width and session_height formats have been removed.

The new window-size option tells tmux how to work out the size of
windows: largest means it picks the size of the largest session,
smallest the smallest session (similar to the old behaviour) and manual
means that it does not automatically resize windows. The default is
currently largest but this may change. aggressive-resize modifies the
choice of session for largest and smallest as it did before.

If a window is in a session attached to a client that is too small, only
part of the window is shown. tmux attempts to keep the cursor visible,
so the part of the window displayed is changed as the cursor moves (with
a small delay, to try and avoid excess redrawing when applications
redraw status lines or similar that are not currently visible). The
offset of the visible portion of the window is shown in status-right.

Drawing windows which are larger than the client is not as efficient as
those which fit, particularly when the cursor moves, so it is
recommended to avoid using this on slow machines or networks (set
window-size to smallest or manual).

The resize-window command can be used to resize a window manually. If it
is used, the window-size option is automatically set to manual for the
window (undo this with "setw -u window-size"). resize-window works in a
similar way to resize-pane (-U -D -L -R -x -y flags) but also has -a and
-A flags. -a sets the window to the size of the smallest client (what it
would be if window-size was smallest) and -A the largest.

For the same behaviour as force-width or force-height, use resize-window
-x or -y, and "setw -u window-size" to revert to automatic sizing..

If the global window-size option is set to manual, the default-size
option is used for new windows. If -x or -y is used with new-session,
that sets the default-size option for the new session.

The maximum size of a window is 10000x10000. But expect applications to
complain and much higher memory use if making a window excessively
big. The minimum size is the size required for the current layout
including borders.

The refresh-client command can be used to pan around a window, -U -D -L
-R moves up, down, left or right and -c returns to automatic cursor
tracking. The position is reset when the current window is changed.

Revision 1.140 / (download) - annotate - [select for diffs], Thu Aug 2 18:35:21 2018 UTC (5 years, 9 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_6_4_BASE, OPENBSD_6_4
Changes since 1.139: +14 -1 lines
Diff to previous 1.139 (colored)

Log command arguments.

Revision 1.139 / (download) - annotate - [select for diffs], Tue May 30 21:44:59 2017 UTC (6 years, 11 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_6_3_BASE, OPENBSD_6_3, OPENBSD_6_2_BASE, OPENBSD_6_2
Changes since 1.138: +1 -5 lines
Diff to previous 1.138 (colored)

Rewrite of choose mode, both to simplify and tidy the code and to add
some modern features.

Now the common code is in mode-tree.c, which provides an API used by the
three modes now separated into window-{buffer,client,tree}.c. Buffer
mode shows buffers, client mode clients and tree mode a tree of
sessions, windows and panes.

Each mode has a common set of key bindings plus a few that are specific
to the mode. Other changes are:

- each mode has a preview pane: for buffers this is the buffer content
  (very useful), for others it is a preview of the pane;

- items may be sorted in different ways ('O' key);

- multiple items may be tagged and an operation applied to all of them
  (for example, to delete multiple buffers at once);

- in tree mode a command may be run on the selected item (session,
  window, pane) or on tagged items (key ':');

- displayed items may be filtered in tree mode by using a format (this
  is used to implement find-window) (key 'f');

- the custom format (-F) for the display is no longer available;

- shortcut keys change from 0-9, a-z, A-Z which was always a bit weird
  with keys used for other uses to 0-9, M-a to M-z.

Now that the code is simpler, other improvements will come later.

Primary key bindings for each mode are documented under the commands in
the man page (choose-buffer, choose-client, choose-tree).

Parts written by Thomas Adam.

Revision 1.138 / (download) - annotate - [select for diffs], Sat Apr 22 10:22:39 2017 UTC (7 years ago) by nicm
Branch: MAIN
Changes since 1.137: +1 -175 lines
Diff to previous 1.137 (colored)

Get rid of the extra layer of flags and cmd_prepare() and just store the
CMD_FIND_* flags in the cmd_entry and call it for the command. Commands
with special requirements call it themselves and update the target for
hooks to use.

Revision 1.137 / (download) - annotate - [select for diffs], Fri Apr 21 20:26:34 2017 UTC (7 years ago) by nicm
Branch: MAIN
Changes since 1.136: +12 -22 lines
Diff to previous 1.136 (colored)

Make the cmd_find_* functions more obvious when looking for a client,
rather than having it inside other functions. Should be no change to the
way targets are resolved just yet.

Revision 1.136 / (download) - annotate - [select for diffs], Tue Jan 24 19:59:19 2017 UTC (7 years, 3 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_6_1_BASE, OPENBSD_6_1
Changes since 1.135: +1 -3 lines
Diff to previous 1.135 (colored)

server-info can become an alias rather than a command.

Revision 1.135 / (download) - annotate - [select for diffs], Tue Jan 24 19:53:37 2017 UTC (7 years, 3 months ago) by nicm
Branch: MAIN
Changes since 1.134: +66 -4 lines
Diff to previous 1.134 (colored)

Add support for custom command aliases, this is an array option which
contains items of the form "alias=command". This is consulted when an
unknown command is parsed.

Revision 1.134 / (download) - annotate - [select for diffs], Mon Jan 16 14:52:25 2017 UTC (7 years, 4 months ago) by nicm
Branch: MAIN
Changes since 1.133: +3 -65 lines
Diff to previous 1.133 (colored)

Revert WIP parts of previous I didn't mean to commit yet.

Revision 1.133 / (download) - annotate - [select for diffs], Mon Jan 16 14:49:14 2017 UTC (7 years, 4 months ago) by nicm
Branch: MAIN
Changes since 1.132: +66 -4 lines
Diff to previous 1.132 (colored)

getopt() has a struct option so just return to using options_entry.

Revision 1.132 / (download) - annotate - [select for diffs], Tue Jan 10 18:10:24 2017 UTC (7 years, 4 months ago) by nicm
Branch: MAIN
Changes since 1.131: +6 -2 lines
Diff to previous 1.131 (colored)

Need to escape ; twice because the command list parser will eat one,
reported by Theo Buehler.

Revision 1.131 / (download) - annotate - [select for diffs], Tue Jan 10 11:58:30 2017 UTC (7 years, 4 months ago) by nicm
Branch: MAIN
Changes since 1.130: +3 -3 lines
Diff to previous 1.130 (colored)

Quote backslash as well for %%%.

Revision 1.130 / (download) - annotate - [select for diffs], Fri Jan 6 11:57:03 2017 UTC (7 years, 4 months ago) by nicm
Branch: MAIN
Changes since 1.129: +2 -2 lines
Diff to previous 1.129 (colored)

Incremental search in copy mode (on for emacs keys by default) - much
the same as normal searching but updates the cursor position and marked
search terms as you type. C-r and C-s in the prompt repeat the search,
once finished searching (with Enter), N and n work as before.

Revision 1.129 / (download) - annotate - [select for diffs], Wed Dec 28 10:34:34 2016 UTC (7 years, 4 months ago) by nicm
Branch: MAIN
Changes since 1.128: +3 -2 lines
Diff to previous 1.128 (colored)

Fix the prefer unattached session behaviour of
attach-session/switch-client, reported by Thomas Sattle.

Revision 1.128 / (download) - annotate - [select for diffs], Wed Nov 2 13:35:36 2016 UTC (7 years, 6 months ago) by nicm
Branch: MAIN
Changes since 1.127: +18 -9 lines
Diff to previous 1.127 (colored)

Make an empty state on error rather than leaving something partially
created (which now is now a fatal() later).

Revision 1.127 / (download) - annotate - [select for diffs], Fri Oct 21 13:51:59 2016 UTC (7 years, 6 months ago) by nicm
Branch: MAIN
Changes since 1.126: +14 -6 lines
Diff to previous 1.126 (colored)

Add %%% to substitute with quotes escaped (convert " to \"). Use this
for the prompts in copy mode. Fixes problems with jumping to ' reported
by Theo Buehler.

Revision 1.126 / (download) - annotate - [select for diffs], Sun Oct 16 19:04:05 2016 UTC (7 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.125: +16 -16 lines
Diff to previous 1.125 (colored)

Mass rename struct cmd_q to struct cmdq_item and related.

Revision 1.125 / (download) - annotate - [select for diffs], Sun Oct 16 17:55:14 2016 UTC (7 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.124: +22 -31 lines
Diff to previous 1.124 (colored)

Rewrite command queue handling. Each client still has a command queue,
but there is also now a global command queue. Instead of command queues
being dispatched on demand from wherever the command happens to be
added, they are now all dispatched from the top level server
loop. Command queues may now also include callbacks as well as commands,
and items may be inserted after the current command as well as at the end.

This all makes command queues significantly more predictable and easier
to use, and avoids the complex multiple nested command queues used by
source-file, if-shell and friends.

A mass rename of struct cmdq to a better name (cmdq_item probably) is
coming.

Revision 1.124 / (download) - annotate - [select for diffs], Thu Oct 13 10:01:49 2016 UTC (7 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.123: +12 -2 lines
Diff to previous 1.123 (colored)

Some improvements and bug fixes for hooks:

- Prepare the state again before the "after" hooks are run, because the
  command may have killed or moved windows.

- Use the hooks list from the newly prepared target, not the old hooks
  list (only matters for new-session really).

- Correctly detect an invalid current state and ignore it in
  cmd_find_target ("killw; swapw").

- Change neww, new, killp, killw, splitw, swapp, swapw to update the
  current state (used if no explicit target is given) to something more
  useful after they have finished. For example, neww changes it to the
  newly created window.

Hooks are still relatively new and primitive so there are likely to be
more changes to come.

Parts based on bug reports from Uwe Werler and Iblis Lin.

Revision 1.123 / (download) - annotate - [select for diffs], Wed Oct 5 12:32:13 2016 UTC (7 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.122: +5 -3 lines
Diff to previous 1.122 (colored)

Allow cmd_mouse_at return arguments to be NULL.

Revision 1.122 / (download) - annotate - [select for diffs], Tue Mar 1 12:06:07 2016 UTC (8 years, 2 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_6_0_BASE, OPENBSD_6_0
Changes since 1.121: +1 -2 lines
Diff to previous 1.121 (colored)

Remove some more unused variables, and use RB_FOREACH_SAFE in
key_bindings_unref_table.

Revision 1.121 / (download) - annotate - [select for diffs], Tue Jan 19 16:01:30 2016 UTC (8 years, 4 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_5_9_BASE, OPENBSD_5_9
Changes since 1.120: +76 -32 lines
Diff to previous 1.120 (colored)

Split out getting the current state from the target search so it can be
replaced if we already know the current.

Revision 1.120 / (download) - annotate - [select for diffs], Tue Jan 19 15:59:12 2016 UTC (8 years, 4 months ago) by nicm
Branch: MAIN
Changes since 1.119: +2 -2 lines
Diff to previous 1.119 (colored)

I no longer use my SourceForge address so replace it.

Revision 1.119 / (download) - annotate - [select for diffs], Mon Dec 14 23:30:58 2015 UTC (8 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.118: +4 -18 lines
Diff to previous 1.118 (colored)

Use cmd_find_clear_state instead of an extra function doing the same.

Revision 1.118 / (download) - annotate - [select for diffs], Mon Dec 14 00:31:54 2015 UTC (8 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.117: +95 -220 lines
Diff to previous 1.117 (colored)

Instead of combined flags for -c, -s, -t, split into different sets
using an enum and simplify the parsing code.

Revision 1.117 / (download) - annotate - [select for diffs], Sun Dec 13 21:53:57 2015 UTC (8 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.116: +4 -4 lines
Diff to previous 1.116 (colored)

Use member names in cmd_entry definitions so I stop getting confused
about the order.

Revision 1.116 / (download) - annotate - [select for diffs], Sun Dec 13 21:17:37 2015 UTC (8 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.115: +33 -4 lines
Diff to previous 1.115 (colored)

Actually I thought cmd_get_state_client was unnecessary but it will be
needed.

Revision 1.115 / (download) - annotate - [select for diffs], Sun Dec 13 18:31:47 2015 UTC (8 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.114: +11 -6 lines
Diff to previous 1.114 (colored)

-c needs to be able for fail for display-message.

Revision 1.114 / (download) - annotate - [select for diffs], Sun Dec 13 18:27:47 2015 UTC (8 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.113: +6 -34 lines
Diff to previous 1.113 (colored)

Remove an unnecessary function.

Revision 1.113 / (download) - annotate - [select for diffs], Sun Dec 13 17:58:26 2015 UTC (8 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.112: +2 -2 lines
Diff to previous 1.112 (colored)

Don't log an error when doing the first check for move-window.

Revision 1.112 / (download) - annotate - [select for diffs], Sun Dec 13 17:55:14 2015 UTC (8 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.111: +33 -55 lines
Diff to previous 1.111 (colored)

Use struct cmd_find_state directly and remove cmd_state_flag, also
change so that winlink is set even if an index is too.

Revision 1.111 / (download) - annotate - [select for diffs], Sun Dec 13 16:44:35 2015 UTC (8 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.110: +53 -49 lines
Diff to previous 1.110 (colored)

Change cmd_find_target to use a state struct from the caller.

Revision 1.110 / (download) - annotate - [select for diffs], Sun Dec 13 15:32:12 2015 UTC (8 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.109: +76 -45 lines
Diff to previous 1.109 (colored)

Remove the cmd_find_{session,window,pane,index} functions (which are
just wrappers around cmd_find_target) and just use cmd_find_target
directly.

Revision 1.109 / (download) - annotate - [select for diffs], Sun Dec 13 15:00:37 2015 UTC (8 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.108: +3 -4 lines
Diff to previous 1.108 (colored)

Move logging into cmd_find_target rather than each function.

Revision 1.108 / (download) - annotate - [select for diffs], Sun Dec 13 14:32:38 2015 UTC (8 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.107: +252 -1 lines
Diff to previous 1.107 (colored)

Instead of every command resolving the target (-t or -s) itself, prepare
the state (client, session, winlink, pane) for it it before entering the
command. Each command provides some flags that tell the prepare step
what it is expecting.

This is a requirement for having hooks on commands (for example, if you
hook "select-window -t1:2", the hook command should to operate on window
1:2 not whatever it thinks is the current window), and should allow some
other target improvements.

The old cmd_find_* functions remain for the moment but that layer will
be dropped later.

Joint work with Thomas Adam.

Revision 1.107 / (download) - annotate - [select for diffs], Tue Dec 8 01:10:31 2015 UTC (8 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.106: +5 -1 lines
Diff to previous 1.106 (colored)

Add hooks infrastructure, basic commands (set-hook, show-hooks) and a
couple of not very useful client hooks. This will eventually let
commands be run at various points and on notifications. Joint work with
Thomas Adam.

Revision 1.106 / (download) - annotate - [select for diffs], Fri Nov 27 15:06:43 2015 UTC (8 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.105: +12 -14 lines
Diff to previous 1.105 (colored)

Do not set a limit on the length of commands when printing them.

Revision 1.105 / (download) - annotate - [select for diffs], Tue Sep 1 09:48:34 2015 UTC (8 years, 8 months ago) by nicm
Branch: MAIN
Changes since 1.104: +88 -1 lines
Diff to previous 1.104 (colored)

All the cmd_*_entry declarations do not need to be in tmux.h.

Revision 1.104 / (download) - annotate - [select for diffs], Mon Apr 27 16:25:57 2015 UTC (9 years ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_5_8_BASE, OPENBSD_5_8
Changes since 1.103: +3 -936 lines
Diff to previous 1.103 (colored)

Rewrite of the target resolution internals to be simpler and more
consistent but with much less duplication, but keeping the same internal
API. Also adds more readable aliases for some of the special tokens used
in targets (eg "{start}" instead of "^"). Some behaviours may have
changed, for example prefix matches now happen before fnmatch.

Revision 1.103 / (download) - annotate - [select for diffs], Sat Apr 25 18:33:59 2015 UTC (9 years ago) by nicm
Branch: MAIN
Changes since 1.102: +2 -1 lines
Diff to previous 1.102 (colored)

Make message log a TAILQ.

Revision 1.102 / (download) - annotate - [select for diffs], Sat Apr 25 18:09:28 2015 UTC (9 years ago) by nicm
Branch: MAIN
Changes since 1.101: +7 -55 lines
Diff to previous 1.101 (colored)

Move the functions to convert ids from strings into session.c and window.c.

Revision 1.101 / (download) - annotate - [select for diffs], Fri Apr 24 23:17:11 2015 UTC (9 years ago) by nicm
Branch: MAIN
Changes since 1.100: +15 -13 lines
Diff to previous 1.100 (colored)

Convert clients list into a TAILQ.

Revision 1.100 / (download) - annotate - [select for diffs], Tue Apr 21 22:42:27 2015 UTC (9 years ago) by nicm
Branch: MAIN
Changes since 1.99: +5 -5 lines
Diff to previous 1.99 (colored)

Look up indexes as number before name, makes more sense if windows are
named starting with numbers. From Thomas Adam.

Revision 1.99 / (download) - annotate - [select for diffs], Sun Apr 19 21:34:21 2015 UTC (9 years, 1 month ago) by nicm
Branch: MAIN
Changes since 1.98: +92 -4 lines
Diff to previous 1.98 (colored)

Rewrite of tmux mouse support which was a mess. Instead of having
options for "mouse-this" and "mouse-that", mouse events may be bound as
keys and there is one option "mouse" that turns on mouse support
entirely (set -g mouse on).

See the new MOUSE SUPPORT section of the man page for description of the
key names and new flags (-t= to specify the pane or window under mouse
as a target, and send-keys -M to pass through a mouse event).

The default builtin bindings for the mouse are:

    bind -n   MouseDown1Pane select-pane -t=; send-keys -M
    bind -n MouseDown1Status select-window -t=
    bind -n   MouseDrag1Pane copy-mode -M
    bind -n MouseDrag1Border resize-pane -M

To get the effect of turning mode-mouse off, do:

    unbind -n MouseDrag1Pane
    unbind -temacs-copy MouseDrag1Pane

The old mouse options are now gone, set-option -q may be used to
suppress warnings if mixing configuration files.

Revision 1.98 / (download) - annotate - [select for diffs], Wed Oct 8 17:35:58 2014 UTC (9 years, 7 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_5_7_BASE, OPENBSD_5_7
Changes since 1.97: +4 -4 lines
Diff to previous 1.97 (colored)

Add xreallocarray and remove nmemb argument from xrealloc.

Revision 1.97 / (download) - annotate - [select for diffs], Thu Sep 25 12:51:40 2014 UTC (9 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.96: +47 -40 lines
Diff to previous 1.96 (colored)

Support using pane id as part of session or window specifier (so %1
means session-of-%1 or window-of-%1) and window id as part of session
(so @1 means session-of-@1).

Revision 1.96 / (download) - annotate - [select for diffs], Thu Sep 25 12:45:35 2014 UTC (9 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.95: +8 -2 lines
Diff to previous 1.95 (colored)

Support ! for last pane.

Revision 1.95 / (download) - annotate - [select for diffs], Sun Jul 13 20:57:46 2014 UTC (9 years, 10 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_5_6_BASE, OPENBSD_5_6
Changes since 1.94: +9 -4 lines
Diff to previous 1.94 (colored)

Show an error if cmd_find_session can't find the current session, like
the other functions.

Revision 1.94 / (download) - annotate - [select for diffs], Tue May 13 08:08:32 2014 UTC (10 years ago) by nicm
Branch: MAIN
Changes since 1.93: +28 -2 lines
Diff to previous 1.93 (colored)

If multiple arguments are given to new-session, new-window,
split-window, respawn-window or respawn-pane, pass them directly to
execvp() to help avoid quoting problems. One argument still goes to "sh
-c" like before. Requested by many over the years. Patch from J Raynor.

Revision 1.93 / (download) - annotate - [select for diffs], Fri May 9 09:11:24 2014 UTC (10 years ago) by nicm
Branch: MAIN
Changes since 1.92: +2 -2 lines
Diff to previous 1.92 (colored)

Just use char ** for argv like normal people, not char *const *.

Revision 1.92 / (download) - annotate - [select for diffs], Wed Apr 16 21:02:41 2014 UTC (10 years, 1 month ago) by nicm
Branch: MAIN
Changes since 1.91: +1 -2 lines
Diff to previous 1.91 (colored)

Remove the choose-list command to prepare for some later choose-* work.

Revision 1.91 / (download) - annotate - [select for diffs], Mon Mar 31 21:32:31 2014 UTC (10 years, 1 month ago) by nicm
Branch: MAIN
Changes since 1.90: +4 -1 lines
Diff to previous 1.90 (colored)

Don't write into buffer if no arguments, reported by Filipe Rosset.

Revision 1.90 / (download) - annotate - [select for diffs], Thu Jan 9 14:20:55 2014 UTC (10 years, 4 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_5_5_BASE, OPENBSD_5_5
Changes since 1.89: +1 -3 lines
Diff to previous 1.89 (colored)

Allow attach-session -t to accept a window and pane to select them on
attach. Based on a diff from J Raynor.

Revision 1.89 / (download) - annotate - [select for diffs], Thu Oct 10 12:29:35 2013 UTC (10 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.88: +1 -9 lines
Diff to previous 1.88 (colored)

We accidentally haven't been using $TMUX to work out the session for a
while and in fact it is less useful that using the client ttyname. So
don't bother and don't pass it from the client. If we need it in future
it is in c->environ.

Revision 1.88 / (download) - annotate - [select for diffs], Thu Oct 10 12:28:56 2013 UTC (10 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.87: +1 -72 lines
Diff to previous 1.87 (colored)

Remove now unused cmd_get_default_path.

Revision 1.87 / (download) - annotate - [select for diffs], Thu Oct 10 12:07:36 2013 UTC (10 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.86: +24 -37 lines
Diff to previous 1.86 (colored)

Support -c for new-session, based on code from J Raynor.

Revision 1.86 / (download) - annotate - [select for diffs], Thu Oct 10 12:00:24 2013 UTC (10 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.85: +1 -3 lines
Diff to previous 1.85 (colored)

Remove the barely-used and unnecessary command check() function.

Revision 1.85 / (download) - annotate - [select for diffs], Wed May 15 15:34:09 2013 UTC (11 years ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_5_4_BASE, OPENBSD_5_4
Changes since 1.84: +3 -3 lines
Diff to previous 1.84 (colored)

Reserve space for \0 in cmd_print, from George Nachman.

Revision 1.84 / (download) - annotate - [select for diffs], Mon Mar 25 11:53:54 2013 UTC (11 years, 1 month ago) by nicm
Branch: MAIN
Changes since 1.83: +3 -3 lines
Diff to previous 1.83 (colored)

Sort includes and fix spaces.

Revision 1.83 / (download) - annotate - [select for diffs], Mon Mar 25 10:11:45 2013 UTC (11 years, 1 month ago) by nicm
Branch: MAIN
Changes since 1.82: +23 -3 lines
Diff to previous 1.82 (colored)

Rename session idx to session id throughout and add $ prefix to targets
to use it, extended from a diff from George Nachman.

Revision 1.82 / (download) - annotate - [select for diffs], Mon Mar 25 10:09:05 2013 UTC (11 years, 1 month ago) by nicm
Branch: MAIN
Changes since 1.81: +2 -1 lines
Diff to previous 1.81 (colored)

Add a wait-for command which blocks a client on a named channel until it
is woken up again (with wait-for -S). From Thiago Padilha.

Revision 1.81 / (download) - annotate - [select for diffs], Mon Mar 25 10:04:44 2013 UTC (11 years, 1 month ago) by nicm
Branch: MAIN
Changes since 1.80: +5 -5 lines
Diff to previous 1.80 (colored)

tty.path can be NULL, don't dereference it. From George Nachman.

Revision 1.80 / (download) - annotate - [select for diffs], Sun Mar 24 09:54:10 2013 UTC (11 years, 1 month ago) by nicm
Branch: MAIN
Changes since 1.79: +65 -93 lines
Diff to previous 1.79 (colored)

Add a command queue to standardize and simplify commands that call other
commands and allow a command to block execution of subsequent
commands. This allows run-shell and if-shell to be synchronous which has
been much requested.

Each client has a default command queue and commands are consumed one at
a time from it. A command may suspend execution from the queue by
returning CMD_RETURN_WAIT and then resume it by calling cmd_continue() -
for example run-shell does this from the callback that is fired after
the job is freed.

When the command queue becomes empty, command clients are automatically
exited (unless attaching). A callback is also fired - this is used for
nested commands in, for example, if-shell which can block execution of
the client's cmdq until a new cmdq becomes empty.

Also merge all the old error/info/print functions together and lose the
old curclient/cmdclient distinction - a cmdq is bound to one client (or
none if in the configuration file), this is a command client if
c->session is NULL otherwise an attached client.

Revision 1.79 / (download) - annotate - [select for diffs], Sun Mar 24 09:27:20 2013 UTC (11 years, 1 month ago) by nicm
Branch: MAIN
Changes since 1.78: +9 -5 lines
Diff to previous 1.78 (colored)

Fix error reporting for client commands by adding a flag to
cmd_find_client to tell it whether or not to show errors, sometimes it's
needed and sometimes not.

Revision 1.78 / (download) - annotate - [select for diffs], Fri Mar 22 15:54:29 2013 UTC (11 years, 1 month ago) by nicm
Branch: MAIN
Changes since 1.77: +5 -2 lines
Diff to previous 1.77 (colored)

Need to set clients in context before changing their reference count.

Revision 1.77 / (download) - annotate - [select for diffs], Fri Mar 22 15:49:55 2013 UTC (11 years, 1 month ago) by nicm
Branch: MAIN
Changes since 1.76: +34 -14 lines
Diff to previous 1.76 (colored)

Add functions to allocate and free command contexts rather than doing it
all on the stack.

Revision 1.76 / (download) - annotate - [select for diffs], Thu Mar 21 16:22:48 2013 UTC (11 years, 2 months ago) by nicm
Branch: MAIN
Changes since 1.75: +2 -2 lines
Diff to previous 1.75 (colored)

Do not crash when calling choose-tree with a command that changes the mode.

Revision 1.75 / (download) - annotate - [select for diffs], Thu Mar 21 16:19:25 2013 UTC (11 years, 2 months ago) by nicm
Branch: MAIN
Changes since 1.74: +6 -6 lines
Diff to previous 1.74 (colored)

Fix constness of cmd_template_replace, window_choose_add_item and
window_choose_add_window.

Revision 1.74 / (download) - annotate - [select for diffs], Fri Jan 18 02:10:29 2013 UTC (11 years, 4 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_5_3_BASE, OPENBSD_5_3
Changes since 1.73: +4 -4 lines
Diff to previous 1.73 (colored)

Style nits - return (x) not return x.

Revision 1.73 / (download) - annotate - [select for diffs], Mon Dec 24 12:38:57 2012 UTC (11 years, 4 months ago) by nicm
Branch: MAIN
Changes since 1.72: +5 -1 lines
Diff to previous 1.72 (colored)

Add ^ and $ special command targets to select lowest and highest
numbered windows, from Raghavendra D Prabhu.

Revision 1.72 / (download) - annotate - [select for diffs], Tue Nov 27 09:20:03 2012 UTC (11 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.71: +25 -13 lines
Diff to previous 1.71 (colored)

Fix session choice so that preferring unattached sessions actually
works, reported by Drew Frank.

Revision 1.71 / (download) - annotate - [select for diffs], Mon Sep 24 13:05:10 2012 UTC (11 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.70: +2 -2 lines
Diff to previous 1.70 (colored)

Use pgrp of pty fd not pid of immediate child when recovering current
working directory (like current process). From Marcel Partap.

Revision 1.70 / (download) - annotate - [select for diffs], Mon Sep 3 09:57:57 2012 UTC (11 years, 8 months ago) by nicm
Branch: MAIN
Changes since 1.69: +2 -1 lines
Diff to previous 1.69 (colored)

add cmd-choose-list to allow arbitrary options to be selected. From
Thomas Adam.

Revision 1.69 / (download) - annotate - [select for diffs], Wed Jul 11 07:10:15 2012 UTC (11 years, 10 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_5_2_BASE, OPENBSD_5_2
Changes since 1.68: +2 -2 lines
Diff to previous 1.68 (colored)

Make command exec functions return an enum rather than -1/0/1 values and
add a new value to mean "leave client running but don't attach" to fix
problems with using some commands in a command sequence. Most of the
work by Thomas Adam, problem reported by "jspenguin" on SF bug 3535531.

Revision 1.68 / (download) - annotate - [select for diffs], Tue Jul 10 11:53:01 2012 UTC (11 years, 10 months ago) by nicm
Branch: MAIN
Changes since 1.67: +19 -28 lines
Diff to previous 1.67 (colored)

xfree is not particularly helpful, remove it. From Thomas Adam.

Revision 1.67 / (download) - annotate - [select for diffs], Sun Jul 8 16:04:38 2012 UTC (11 years, 10 months ago) by nicm
Branch: MAIN
Changes since 1.66: +2 -1 lines
Diff to previous 1.66 (colored)

Add choose-tree command to show windows and sessions in the same
list. Change choose-window and -session to use the same code. From
Thomas Adam.

Revision 1.66 / (download) - annotate - [select for diffs], Mon Jun 18 09:20:19 2012 UTC (11 years, 11 months ago) by nicm
Branch: MAIN
Changes since 1.65: +3 -3 lines
Diff to previous 1.65 (colored)

Do not crash when the current session has no window, fixes a bug
reported by Giorgio Lando. Fix from Thomas Adam.

Revision 1.65 / (download) - annotate - [select for diffs], Mon Apr 23 22:43:09 2012 UTC (12 years ago) by nicm
Branch: MAIN
Changes since 1.64: +5 -3 lines
Diff to previous 1.64 (colored)

Do not return a buffer on the stack, mentioned by jsg a while ago.

Revision 1.64 / (download) - annotate - [select for diffs], Sun Apr 22 05:24:05 2012 UTC (12 years ago) by nicm
Branch: MAIN
Changes since 1.63: +4 -5 lines
Diff to previous 1.63 (colored)

Fix printing commands with no arguments, from Benjamin Poirier.

Revision 1.63 / (download) - annotate - [select for diffs], Sat Mar 3 08:31:18 2012 UTC (12 years, 2 months ago) by nicm
Branch: MAIN
Changes since 1.62: +2 -1 lines
Diff to previous 1.62 (colored)

Add move-pane command (like join-pane but allows the same window). Also
-b flag to join-pane and move-pane to place the pane to the left or
above. From George Nachman.

Revision 1.62 / (download) - annotate - [select for diffs], Mon Feb 6 17:29:29 2012 UTC (12 years, 3 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_5_1_BASE, OPENBSD_5_1
Changes since 1.61: +3 -2 lines
Diff to previous 1.61 (colored)

Don't die if fail to get root directory, from Ben Boeckel.

Revision 1.61 / (download) - annotate - [select for diffs], Tue Jan 31 15:52:21 2012 UTC (12 years, 3 months ago) by nicm
Branch: MAIN
Changes since 1.60: +69 -20 lines
Diff to previous 1.60 (colored)

Provide defined ways to set the various default-path possibilities: ~
for home directory, . for server start directory, - for session start
directory and empty for the pane's working directory (the default). All
can also be used as part of a relative path (eg -/foo). Also provide -c
flags to neww and splitw to override default-path setting.

Based on a diff from sthen. ok sthen

Revision 1.60 / (download) - annotate - [select for diffs], Mon Jan 30 09:39:34 2012 UTC (12 years, 3 months ago) by nicm
Branch: MAIN
Changes since 1.59: +56 -19 lines
Diff to previous 1.59 (colored)

Give each window a unique id, like panes but prefixed with @. Based on
work from George Nachman.

Revision 1.59 / (download) - annotate - [select for diffs], Fri Jan 20 19:54:07 2012 UTC (12 years, 4 months ago) by nicm
Branch: MAIN
Changes since 1.58: +3 -3 lines
Diff to previous 1.58 (colored)

Add some const and fix a warning.

Revision 1.58 / (download) - annotate - [select for diffs], Tue Dec 27 14:07:20 2011 UTC (12 years, 4 months ago) by stsp
Branch: MAIN
Changes since 1.57: +8 -1 lines
Diff to previous 1.57 (colored)

Allow $HOME as default-path in tmux.conf so the same config file can be used
on different machines regardless of where the user's home directory is.
ok nicm

Revision 1.57 / (download) - annotate - [select for diffs], Fri Dec 9 16:28:18 2011 UTC (12 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.56: +26 -1 lines
Diff to previous 1.56 (colored)

Change the way the working directory for new processes is discovered. If
default-path isn't empty, it is used. Otherwise:

1) If tmux neww is run from the command line, the working directory of the
   client is used.

2) Otherwise sysctl KERN_PROC_CWD is used to retrieve the current
   working directory of the process in the active pane.

3) If that fails, the directory where the session was created is used.

Support code by Romain Francois, OpenBSD specific bits by me.

Note this requires a recent userland and kernel with KERN_PROC_CWD.

Revision 1.56 / (download) - annotate - [select for diffs], Sun Jun 5 11:19:03 2011 UTC (12 years, 11 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_5_0_BASE, OPENBSD_5_0
Changes since 1.55: +2 -1 lines
Diff to previous 1.55 (colored)

Add a respawn-pane command, from Marcel Partap.

Revision 1.55 / (download) - annotate - [select for diffs], Sun Jun 5 10:53:05 2011 UTC (12 years, 11 months ago) by nicm
Branch: MAIN
Changes since 1.54: +8 -12 lines
Diff to previous 1.54 (colored)

Get rid of the layout string code which tries to walk through the layout
hierarchy and instead just look at what panes are actually in the window.

Revision 1.54 / (download) - annotate - [select for diffs], Sun May 8 20:35:58 2011 UTC (13 years ago) by nicm
Branch: MAIN
Changes since 1.53: +3 -3 lines
Diff to previous 1.53 (colored)

Fix a memory leak if cmd_pane_session succeeds, from Tiago Cunha.

Revision 1.53 / (download) - annotate - [select for diffs], Wed Apr 6 21:51:31 2011 UTC (13 years, 1 month ago) by nicm
Branch: MAIN
Changes since 1.52: +9 -3 lines
Diff to previous 1.52 (colored)

Change so that an empty session name always means the current sessions
even if given with, for example, -t '', and explicitly forbid empty
session names and those containing a : when they are created.

Revision 1.52 / (download) - annotate - [select for diffs], Tue Apr 5 19:37:01 2011 UTC (13 years, 1 month ago) by nicm
Branch: MAIN
Changes since 1.51: +20 -14 lines
Diff to previous 1.51 (colored)

Add a flag to cmd_find_session so that attach-session can prefer
unattached sessions when choosing the most recently used (if -t is not
given). Suggested by claudio@.

Revision 1.51 / (download) - annotate - [select for diffs], Sun Mar 27 20:27:26 2011 UTC (13 years, 1 month ago) by nicm
Branch: MAIN
Changes since 1.50: +89 -12 lines
Diff to previous 1.50 (colored)

Give each pane created in a tmux server a unique id (starting from 0),
put it in the TMUX_PANE environment variable and accept it as a
target. Suggested by and with testing and tweaks from Ben Boeckel.

Revision 1.50 / (download) - annotate - [select for diffs], Sun Jan 23 11:03:43 2011 UTC (13 years, 3 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_4_9_BASE, OPENBSD_4_9
Changes since 1.49: +2 -2 lines
Diff to previous 1.49 (colored)

Set $TMUX without the session when background jobs are run.

Revision 1.49 / (download) - annotate - [select for diffs], Tue Jan 4 00:42:47 2011 UTC (13 years, 4 months ago) by nicm
Branch: MAIN
Changes since 1.48: +31 -29 lines
Diff to previous 1.48 (colored)

Clean up and simplify tmux command argument parsing.

Originally, tmux commands were parsed in the client process into a
struct with the command data which was then serialised and sent to the
server to be executed. The parsing was later moved into the server (an
argv was sent from the client), but the parse step and intermediate
struct was kept.

This change removes that struct and the separate parse step. Argument
parsing and printing is now common to all commands (in arguments.c) with
each command left with just an optional check function (to validate the
arguments at parse time), the exec function and a function to set up any
key bindings (renamed from the old init function).

This is overall more simple and consistent.

There should be no changes to any commands behaviour or syntax although
as this touches every command please watch for any unexpected changes.

Revision 1.48 / (download) - annotate - [select for diffs], Thu Dec 30 23:16:18 2010 UTC (13 years, 4 months ago) by nicm
Branch: MAIN
Changes since 1.47: +1 -2 lines
Diff to previous 1.47 (colored)

Change from a per-session stack of buffers to one global stack which is
much more convenient and also simplifies lot of code. This renders
copy-buffer useless and makes buffer-limit now a server option.

By Tiago Cunha.

Revision 1.47 / (download) - annotate - [select for diffs], Tue Dec 21 22:37:59 2010 UTC (13 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.46: +34 -25 lines
Diff to previous 1.46 (colored)

Store sessions in an RB tree by name rather than a list, this is tidier
and allows them to easily be shown sorted in various lists
(list-sessions/choose-sessions).

Keep a session index which is used in a couple of places internally but
make it an ever-increasing number rather than filling in gaps with new
sessions.

Revision 1.46 / (download) - annotate - [select for diffs], Fri Oct 29 20:11:57 2010 UTC (13 years, 6 months ago) by nicm
Branch: MAIN
Changes since 1.45: +17 -1 lines
Diff to previous 1.45 (colored)

We now send argv to the server after parsing it in the client to get the
command, so the client should not modify it. Instead, take a copy. Fixes
parsing command lists, reported by mcbride@.

Revision 1.45 / (download) - annotate - [select for diffs], Sat Oct 23 13:04:34 2010 UTC (13 years, 6 months ago) by nicm
Branch: MAIN
Changes since 1.44: +2 -1 lines
Diff to previous 1.44 (colored)

Add a last-pane command (bound to ; by default). Requested ages ago by
somebody whose name I have forgotten.

Revision 1.44 / (download) - annotate - [select for diffs], Sat Oct 16 07:57:42 2010 UTC (13 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.43: +5 -9 lines
Diff to previous 1.43 (colored)

Fall back on normal session choice method if $TMUX exists but is invalid
rather than rejecting.

Revision 1.43 / (download) - annotate - [select for diffs], Wed Jul 14 18:37:49 2010 UTC (13 years, 10 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_4_8_BASE, OPENBSD_4_8
Changes since 1.42: +79 -80 lines
Diff to previous 1.42 (colored)

Make pane/window wrapping more logical (so with 10 windows, +10 from
window 5 stays in the same place), and tidy the code. From Tiago Cunha.

Revision 1.42 / (download) - annotate - [select for diffs], Mon Jun 21 21:44:09 2010 UTC (13 years, 11 months ago) by nicm
Branch: MAIN
Changes since 1.41: +2 -1 lines
Diff to previous 1.41 (colored)

Add a choose-buffer command for easier use of the paste buffer stack.

Revision 1.41 / (download) - annotate - [select for diffs], Mon Jun 21 01:46:36 2010 UTC (13 years, 11 months ago) by nicm
Branch: MAIN
Changes since 1.40: +124 -65 lines
Diff to previous 1.40 (colored)

Extend the -t:+ and -t:- window targets for next and previous window to
accept an offset such as -t:+2. From Tiago Cunha.

Revision 1.40 / (download) - annotate - [select for diffs], Wed May 5 23:24:23 2010 UTC (14 years ago) by nicm
Branch: MAIN
Changes since 1.39: +1 -2 lines
Diff to previous 1.39 (colored)

Identical behaviour to select-prompt can now be obtained with
command-prompt, so remove select-prompt and change ' to be bound to
command-prompt -p index "select-window -t :%%".

Revision 1.39 / (download) - annotate - [select for diffs], Mon Mar 22 19:07:52 2010 UTC (14 years, 2 months ago) by nicm
Branch: MAIN
Changes since 1.38: +17 -5 lines
Diff to previous 1.38 (colored)

Support up, down, left, right movement through panes with -UDLR flags to
select-pane.

Also REMOVE the up- and down-pane commands: equivalent behaviour is now
available using -t :.+ and -t :.-.

Revision 1.38 / (download) - annotate - [select for diffs], Tue Jan 19 21:27:47 2010 UTC (14 years, 4 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_4_7_BASE, OPENBSD_4_7
Changes since 1.37: +57 -9 lines
Diff to previous 1.37 (colored)

Permit !, + and - to be used for window targets to specify last window (!), or
next and previous window by number (+ and -).

Also tidy an if in cmd-new-window.c.

Revision 1.37 / (download) - annotate - [select for diffs], Thu Jan 7 20:52:18 2010 UTC (14 years, 4 months ago) by nicm
Branch: MAIN
Changes since 1.36: +2 -1 lines
Diff to previous 1.36 (colored)

New command, join-pane, to split and move an existing pane into the space (like
splitw then movep, or the reverse of breakp).

Revision 1.36 / (download) - annotate - [select for diffs], Tue Dec 8 07:49:31 2009 UTC (14 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.35: +28 -15 lines
Diff to previous 1.35 (colored)

Permit panes to be referred to as "top", "bottom", "top-left" etc, if the right
pane can be identified.

Revision 1.35 / (download) - annotate - [select for diffs], Thu Dec 3 22:50:10 2009 UTC (14 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.34: +12 -12 lines
Diff to previous 1.34 (colored)

Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last
time now I've configured emacs to make them displayed in really annoying
colours...

Revision 1.34 / (download) - annotate - [select for diffs], Tue Dec 1 18:42:38 2009 UTC (14 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.33: +2 -1 lines
Diff to previous 1.33 (colored)

New command, capture-pane, which copies the entire pane contents to a paste
buffer. From Jonathan Alvarado.

Revision 1.33 / (download) - annotate - [select for diffs], Sat Nov 21 17:52:18 2009 UTC (14 years, 5 months ago) by nicm
Branch: MAIN
Changes since 1.32: +2 -3 lines
Diff to previous 1.32 (colored)

Use home from struct passwd if HOME is empty as well as if it is NULL, and fix
a style nit. Both from Tiago Cunha.

Revision 1.32 / (download) - annotate - [select for diffs], Wed Nov 18 13:16:33 2009 UTC (14 years, 6 months ago) by nicm
Branch: MAIN
Changes since 1.31: +2 -1 lines
Diff to previous 1.31 (colored)

Add a per-client log of status line messages displayed while that client
exists. A new message-limit session option sets the maximum number of entries
and a command, show-messages, shows the log (bound to ~ by default).

This (and prompt history) might be better as a single global log but until
there are global options it is easier for them to be per client.

Revision 1.31 / (download) - annotate - [select for diffs], Tue Nov 3 22:40:40 2009 UTC (14 years, 6 months ago) by nicm
Branch: MAIN
Changes since 1.30: +29 -28 lines
Diff to previous 1.30 (colored)

Add an activity time for clients, like for sessions, and change session and
client lookup to pick the most recently used rather than the most recently
created - this is much more useful when used interactively and (because the
activity time is set at creation) should have no effect on source-file.

Based on a problem reported by Jan Johansson.

Revision 1.30 / (download) - annotate - [select for diffs], Tue Nov 3 20:59:22 2009 UTC (14 years, 6 months ago) by nicm
Branch: MAIN
Changes since 1.29: +47 -31 lines
Diff to previous 1.29 (colored)

If it isn't available explicitly, work out the current client in a similar way
to the current session - build a list of the possibilities then pick the
newest.

Revision 1.29 / (download) - annotate - [select for diffs], Tue Nov 3 20:29:47 2009 UTC (14 years, 6 months ago) by nicm
Branch: MAIN
Changes since 1.28: +5 -5 lines
Diff to previous 1.28 (colored)

Change session and client activity and creation time members to have more
meaningful names.

Also, remove the code to try and update the session activity time for the
command client when a command message is received as is pointless because it
des not have a session.

Revision 1.28 / (download) - annotate - [select for diffs], Mon Nov 2 16:24:29 2009 UTC (14 years, 6 months ago) by nicm
Branch: MAIN
Changes since 1.27: +14 -9 lines
Diff to previous 1.27 (colored)

When matching the session names with -t, look for exact matches first before
trying partial matches.

Avoids problems where two ambiguous matches are present before an exact match
(eg foo1, foo2, foo would give an error on trying -tfoo), reported by Natacha
Port? natbsd at instinctive dot eu.

Revision 1.27 / (download) - annotate - [select for diffs], Mon Oct 26 21:42:04 2009 UTC (14 years, 6 months ago) by deraadt
Branch: MAIN
Changes since 1.26: +3 -3 lines
Diff to previous 1.26 (colored)

tabs are better; ok nicm

Revision 1.26 / (download) - annotate - [select for diffs], Wed Oct 14 20:52:28 2009 UTC (14 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.25: +9 -8 lines
Diff to previous 1.25 (colored)

cmd_find_client shouldn't die when there is an empty slot in the clients
array. DOH.

Revision 1.25 / (download) - annotate - [select for diffs], Wed Oct 14 09:29:10 2009 UTC (14 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.24: +3 -2 lines
Diff to previous 1.24 (colored)

Don't allow cmd_lookup_client to test clients without a session.

Revision 1.24 / (download) - annotate - [select for diffs], Sun Oct 11 10:04:27 2009 UTC (14 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.23: +2 -1 lines
Diff to previous 1.23 (colored)

Add a pipe-pane command to allow a pane to be piped to a shell command, for
example:

	pipe-pane 'cat >~/out'

No arguments stops outputing and closes the pipe; the -o flag toggles a pipe
and on and off (useful for key bindings).

Suggested by espie@.

Revision 1.23 / (download) - annotate - [select for diffs], Sat Oct 10 17:19:38 2009 UTC (14 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.22: +2 -1 lines
Diff to previous 1.22 (colored)

Split list-panes off from list-windows.

Revision 1.22 / (download) - annotate - [select for diffs], Wed Oct 7 07:02:40 2009 UTC (14 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.21: +2 -2 lines
Diff to previous 1.21 (colored)

Fix comment.

Revision 1.21 / (download) - annotate - [select for diffs], Tue Oct 6 07:19:32 2009 UTC (14 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.20: +1 -2 lines
Diff to previous 1.20 (colored)

Remove scroll mode which is now redundant, copy mode should be used instead.

The = key binding now does nothing.

Revision 1.20 / (download) - annotate - [select for diffs], Mon Oct 5 18:30:54 2009 UTC (14 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.19: +50 -3 lines
Diff to previous 1.19 (colored)

If no target client is specified to commands which accept one, try to guess the
current client, in a similar manner to how sessions already work: if the
current session can be established and has only one client, use that; otherwise
use the most recently created client.

Revision 1.19 / (download) - annotate - [select for diffs], Thu Sep 24 14:17:09 2009 UTC (14 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.18: +3 -1 lines
Diff to previous 1.18 (colored)

New lock-client and lock-session commands to lock an individual client or all
clients attached to a session respectively.

Revision 1.18 / (download) - annotate - [select for diffs], Wed Sep 23 06:18:47 2009 UTC (14 years, 7 months ago) by nicm
Branch: MAIN
Changes since 1.17: +1 -6 lines
Diff to previous 1.17 (colored)

Remove the internal tmux locking and instead detach each client and run the
command specified by a new option "lock-command" (by default "lock -np") in
each client.

This means each terminal has to be unlocked individually but simplifies the
code and allows the system password to be used to unlock.

Note that the set-password command is gone, so it will need to be removed from
configuration files, and the -U command line flag has been removed.

This is the third protocol version change so again it is best to stop the tmux
server before upgrading.

Revision 1.17 / (download) - annotate - [select for diffs], Sun Sep 20 19:15:01 2009 UTC (14 years, 8 months ago) by nicm
Branch: MAIN
Changes since 1.16: +2 -1 lines
Diff to previous 1.16 (colored)

run-shell command to run a shell command without opening a window, sending
stdout to output mode.

Revision 1.16 / (download) - annotate - [select for diffs], Mon Aug 31 20:46:19 2009 UTC (14 years, 8 months ago) by nicm
Branch: MAIN
Changes since 1.15: +2 -1 lines
Diff to previous 1.15 (colored)

Add a new display-panes command, with two options (display-panes-colour and
display-panes-time), which displays a visual indication of the number of each
pane.

Revision 1.15 / (download) - annotate - [select for diffs], Tue Aug 25 12:18:51 2009 UTC (14 years, 8 months ago) by nicm
Branch: MAIN
Changes since 1.14: +43 -1 lines
Diff to previous 1.14 (colored)

Add a choose-client command and extend choose-{session,window} to accept a
template. After a choice is made, %% (or %1) in the template is replaced by the
name of the session, window or client suitable for -t and the result executed
as a command. So, for example, "choose-window "killw -t '%%'"" will kill the
selected window.

The defaults if no template is given are (as now) select-window for
choose-window, switch-client for choose-session, and detach-client for
choose-client (now bound to D).

Revision 1.14 / (download) - annotate - [select for diffs], Sun Aug 23 16:45:00 2009 UTC (14 years, 8 months ago) by nicm
Branch: MAIN
Changes since 1.13: +3 -3 lines
Diff to previous 1.13 (colored)

The cursession member in struct cmd_ctx is always either curclient->session or
NULL when curclient is also NULL, so just eliminate it.

Revision 1.13 / (download) - annotate - [select for diffs], Sat Aug 8 21:52:43 2009 UTC (14 years, 9 months ago) by nicm
Branch: MAIN
Changes since 1.12: +3 -1 lines
Diff to previous 1.12 (colored)

Infrastructure and commands to manage the environment for processes started
within tmux.

There is a global environment, copied from the external environment when the
server is started and each sesssion has an (initially empty) session
environment which overrides it.

New commands set-environment and show-environment manipulate or display the
environments.

A new session option, update-environment, is a space-separated list of
variables which are updated from the external environment into the session
environment every time a new session is created - the default is DISPLAY.

Revision 1.12 / (download) - annotate - [select for diffs], Thu Jul 30 13:45:56 2009 UTC (14 years, 9 months ago) by nicm
Branch: MAIN
Changes since 1.11: +86 -1 lines
Diff to previous 1.11 (colored)

Merge pane number into the target specification for pane commands. Instead of
using -p index, a target pane is now addressed with the normal -t window form
but suffixed with a period and a pane index, for example :0.2 or
mysess:mywin.1. An unadorned number such as -t 1 is tried as a pane index in
the current window, if that fails the same rules are followed as for a target
window and the current pane in that window used.

As a side-effect this now means that swap-pane can swap panes between different
windows.

Note that this changes the syntax of the break-pane, clear-history, kill-pane,
resize-pane, select-pane and swap-pane commands.

Revision 1.11 / (download) - annotate - [select for diffs], Wed Jul 29 17:03:16 2009 UTC (14 years, 9 months ago) by nicm
Branch: MAIN
Changes since 1.10: +47 -8 lines
Diff to previous 1.10 (colored)

Add an additional heuristic to work out the current session when run from the
command line. The name of all slave ptys in the server is known, so if the
client was run on a tty, look for any sessions containing that tty and use the
most recently created.

This is more reliable than looking at $TMUX if windows have been moved or
linked between sessions.

Revision 1.10 / (download) - annotate - [select for diffs], Sun Jul 26 12:58:44 2009 UTC (14 years, 9 months ago) by nicm
Branch: MAIN
Changes since 1.9: +59 -83 lines
Diff to previous 1.9 (colored)

Make all messages sent between the client and server fixed size.

This is the first of two changes to make the protocol more resilient and less
sensitive to other changes in the code, particularly with commands. The client
now packs argv into a buffer and sends it to the server for parsing, rather
than doing it itself and sending the parsed command data.

As a side-effect this also removes a lot of now-unused command marshalling
code.

Mixing a server without this change and a client with or vice versa will cause
tmux to hang or crash, please ensure that tmux is entirely killed before
upgrading.

Revision 1.9 / (download) - annotate - [select for diffs], Fri Jul 24 18:46:40 2009 UTC (14 years, 9 months ago) by nicm
Branch: MAIN
Changes since 1.8: +2 -2 lines
Diff to previous 1.8 (colored)

cmd_find_index should return -2 on error.

Revision 1.8 / (download) - annotate - [select for diffs], Wed Jul 22 21:23:29 2009 UTC (14 years, 10 months ago) by nicm
Branch: MAIN
Changes since 1.7: +90 -54 lines
Diff to previous 1.7 (colored)

Tidy the target parsing code a bit and correct the behaviour so that as before
a string with no colon as a target window is first looked up as a window then
as a session, noted by Iain Morgan.

Also attempt to clarify the description of the target specification in the man
page.

Revision 1.7 / (download) - annotate - [select for diffs], Fri Jul 17 18:45:08 2009 UTC (14 years, 10 months ago) by nicm
Branch: MAIN
Changes since 1.6: +2 -1 lines
Diff to previous 1.6 (colored)

- New command display-message (alias display) to display a message in the
  status line (bound to "i" and displays the current window and time by
  default). The same substitutions are applied as for status-left/right.
- Add support for including the window index (#I), pane index (#P) and window
  name (#W) in the message, and status-left or status-right.
- Bump protocol version.

From Tiago Cunha, thanks!

Revision 1.6 / (download) - annotate - [select for diffs], Wed Jul 15 15:09:17 2009 UTC (14 years, 10 months ago) by nicm
Branch: MAIN
Changes since 1.5: +2 -2 lines
Diff to previous 1.5 (colored)

Return -1 not NULL on error, pointed out by Roy Marples.

Revision 1.5 / (download) - annotate - [select for diffs], Mon Jul 13 17:47:46 2009 UTC (14 years, 10 months ago) by nicm
Branch: MAIN
Changes since 1.4: +372 -50 lines
Diff to previous 1.4 (colored)

Tidy up and improve target (-t) argument parsing:

- move the code back into cmd.c and merge with the existing functions where
  possible;
- accept "-tttyp0" as well as "-t/dev/ttyp0" for clients;
- when looking up session names, try an exact match first, and if that fails
  look for it as an fnmatch pattern and then as the start of a name - if more
  that one session matches an error is given; so if there is one session called
  "mysession", -tmysession, -tmysess, -tmysess* are equivalent but if there
  is also "mysession2", the last two are errors;
- similarly for windows, if the argument is not a valid index or exact window
  name match, try it against the window names as an fnmatch pattern and a
  prefix.

Revision 1.4 / (download) - annotate - [select for diffs], Thu Jul 9 15:47:49 2009 UTC (14 years, 10 months ago) by nicm
Branch: MAIN
Changes since 1.3: +2 -1 lines
Diff to previous 1.3 (colored)

New command, if-shell (alias if). Executes the tmux command in the second
argument if the shell command in the first succeeds, for example:

       if "[ -e ~/.tmux.conf.alt ]" "source .tmux.conf.alt"

Written by Tiago Cunha, many thanks.

Revision 1.3 / (download) - annotate - [select for diffs], Tue Jul 7 21:23:22 2009 UTC (14 years, 10 months ago) by nicm
Branch: MAIN
Changes since 1.2: +6 -3 lines
Diff to previous 1.2 (colored)

Don't let ambiguous commands override an exact alias match: eg if commands
"abc-1", "abc-2", "abc-3" exist and "abc-3" has the alias "abc", "tmux abc"
should execute abc-3, not complain about the command being ambiguous.

Not a problem at the moment but will be soon.

Revision 1.2 / (download) - annotate - [select for diffs], Thu Jun 4 23:34:32 2009 UTC (14 years, 11 months ago) by nicm
Branch: MAIN
CVS Tags: OPENBSD_4_6_BASE, OPENBSD_4_6
Changes since 1.1: +4 -2 lines
Diff to previous 1.1 (colored)

Print a better message than '(null)' if no command is specified ("tmux \;").

Revision 1.1 / (download) - annotate - [select for diffs], Mon Jun 1 22:58:49 2009 UTC (14 years, 11 months ago) by nicm
Branch: MAIN

Import tmux, a terminal multiplexor allowing (among other things) a single
terminal to be switched between several different windows and programs
displayed on one terminal be detached from one terminal and moved to another.

ok deraadt pirofti

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.