Nicholas Marriott
248fb14f08
Merge the before and after attach client code into one in client.c
...
(instead of two in tmux.c and client.c).
2010-10-18 20:00:02 +00:00
Nicholas Marriott
31954339d1
Make stdio blocking again before calling shell command with -c.
2010-10-16 08:42:35 +00:00
Nicholas Marriott
f56b4ec2ff
Trying to set FD_CLOEXEC on every fd is a lost cause, just use
...
closefrom() before exec.
2010-10-16 08:31:55 +00:00
Nicholas Marriott
6c42f1a89e
Fall back on normal session choice method if $TMUX exists but is invalid
...
rather than rejecting.
2010-10-16 07:57:42 +00:00
Nicholas Marriott
65ff5b00bd
Use an explicit event rather than event_once for the main event so it
...
can be removed when the client becomes ready.
2010-10-14 17:38:39 +00:00
Nicholas Marriott
f6cd0342f6
Treat the meta bit in the xterm extended modifier key set as the same as
...
escape (tmux's meta). From Emanuele Giaquinta.
2010-10-14 00:37:51 +00:00
Nicholas Marriott
1580afdfdf
Put "or" on new line from command with .Ic.
2010-10-14 00:30:03 +00:00
Nicholas Marriott
7aef2994e4
Set cause when failing due to linking a window to itself, from Martin
...
Pieuchot.
2010-10-09 12:58:00 +00:00
Nicholas Marriott
08bcd6978c
Skip NULL entries in the sessions list when choosing the next session,
...
from Simon Olofsson.
2010-10-05 17:15:21 +00:00
Nicholas Marriott
4789a4ee1f
Nuke a leftover RB tree declaration spotted by blambert.
2010-09-28 07:15:45 +00:00
Nicholas Marriott
9a7cde0c9b
Two new options:
...
- server option "exit-unattached" makes the server exit when no clients
are attached, even if sessions are present;
- session option "destroy-unattached" destroys a session once no clients
are attached to it.
These are useful for preventing tmux remaining in the background where
it is undesirable and when using tmux as a login shell to keep a limit
on new sessions.
2010-09-26 20:43:30 +00:00
Nicholas Marriott
66152010a7
Modify the permissions on the socket when adding or removing +x to show
...
attached sessions, rather than replacing them.
2010-09-26 18:51:48 +00:00
Nicholas Marriott
2772557d15
detach-on-destroy is a session option, not server.
2010-09-25 20:35:52 +00:00
Nicholas Marriott
ea4487c6da
Ugh. Pass the right type into tty_term_has. Teaches me to make last
...
minute changes :-/.
2010-09-11 16:20:58 +00:00
Nicholas Marriott
cb564bb427
Use UTF-8 line drawing characters on UTF-8 terminals. Fixes some stupid
...
terminals (I'm looking at you, putty) which disable the vt100 ACS mode
switching sequences in UTF-8 mode.
Also on terminals without ACS at all, use ASCII equivalents where
obvious.
2010-09-11 16:19:22 +00:00
Nicholas Marriott
3696cce4ae
Ignore terminal overrides settings without a value.
2010-09-11 15:43:11 +00:00
Nicholas Marriott
c1c5f43a01
When resizing the copy mode screen, don't allow it to end up with the
...
viewable position beyond the size of the history.
2010-09-11 15:39:55 +00:00
Nicholas Marriott
a22a6deda5
Add -n and -p flags to switch-client to move to the next and previous
...
session (yes, it doesn't match window/pane, but so what, nor does
switch-client).
Based on a diff long ago from "edsouza".
2010-09-08 22:02:28 +00:00
Nicholas Marriott
bbf743769b
Do not crash if the screen size is too small for the indicator in copy mode.
2010-09-08 20:36:42 +00:00
Nicholas Marriott
de68c2a7da
Simplify xterm modifier detection by treating as a bitmask + 1. Spotted
...
by and diff from Emanuele Giaquinta.
2010-09-01 21:11:14 +00:00
Nicholas Marriott
5309252053
Reset running jobs when the status line is enabled or disabled as well,
...
some people have it bound to a key.
2010-09-01 21:06:51 +00:00
Nicholas Marriott
8e8e0f1d53
Add missing prototype.
2010-08-31 22:46:59 +00:00
Nicholas Marriott
f69ce39a6c
When destroying a pane, reset any mode (which reenables pane
...
bufferevent) before freeing the bufferevent.
2010-08-25 19:19:43 +00:00
Nicholas Marriott
fc9f08235b
Can't call event_del() without event_set() first - so call event_set()
...
when setting up the client.
2010-08-23 17:36:32 +00:00
Nicholas Marriott
5f5104e782
MSG_EXIT can now have a return code in the message, so check for that
...
size as well. Stops the client fatal()ing on exit.
2010-08-22 16:09:49 +00:00
Nicholas Marriott
e3be9b1951
Do not call event_del() for signals after fork(), just use sigaction()
...
directly instead - calling libevent functions after fork() w/o
event_reinit() is a bad idea, even if in this case it was harmless.
2010-08-19 18:29:01 +00:00
Nicholas Marriott
c2822ca119
Do not need to dup() the tty fd sent from the client because it is
...
already dup()d again later. Fixes a leak seen by espie@.
2010-08-19 17:20:26 +00:00
Nicholas Marriott
828f12b748
Do not allow duplicate session names to be created, reported by Dominik
...
Honnef, patch from Thomas Adam.
2010-08-11 07:45:06 +00:00
Nicholas Marriott
ae70071494
Handle failure to change mode, to avoid dying when switching into copy
...
mode when already in a different mode. Reported by "Florian".
2010-08-11 07:41:05 +00:00
Nicholas Marriott
3999886901
Usage string fixes from Ben Boeckel.
2010-08-11 07:38:00 +00:00
Nicholas Marriott
cc474b4ede
Treat trying to link or move to the same window as an error to avoid
...
removing it accidentally.
2010-08-11 07:36:23 +00:00
Nicholas Marriott
8363e31953
Change the way backoff works. Instead of stopping reading from the pty
...
when the client tty backs up too much, just stop updating the tty and
only update the internal screen. Then when the tty recovers, force a
redraw.
This prevents a dodgy client from causing other clients to go into
backoff while still allowing tmux to be responsive (locally) when seeing
lots of output.
2010-08-11 07:34:43 +00:00
Nicholas Marriott
933dc48de3
Show which pane is active in the list-panes output, suggested by Dominik
...
Honnef.
2010-08-11 07:27:50 +00:00
Theo Deraadt
4274a7ec89
switch back to kqueue for now, since (a) kqueue has been fixed to deal
...
with strange devices and (b) since there appears to be a bull in the
poll code in libevent as well...
requested by nicm who is away
2010-08-04 19:46:13 +00:00
Nicholas Marriott
77f9c49829
dup() the stdin fd so it isn't closed twice (once for stdin, once for tty).
2010-07-28 22:15:15 +00:00
Nicholas Marriott
c87187f913
When changing so that the client passes its stdout and stderr as well as
...
stdin up to the server, I forgot one essential point - the tmux server
could now be both the producer and consumer. This happens when tmux is
run inside tmux, as well as when piping tmux commands together.
So, using stdio(3) was a bad idea - if sufficient data was written, this
could block in write(2). When that happened and the server was both
producer and consumer, it deadlocks.
Change to use libevent bufferevents for the client stdin, stdout and
stderr instead. This is trivial enough for output but requires a
callback mechanism to trigger when stdin is finished.
This relies on the underlying polling mechanism for libevent to work
with whatever devices to which the user could redirect stdin, stdout or
stderr, hence the change to use poll(2) over kqueue(2) for tmux.
2010-07-24 20:11:59 +00:00
Nicholas Marriott
bf09b00fe9
kqueue(2) is currently broken when used with /dev/null and a few other
...
devices.
An upcoming fix for some problems with the client stdout/stderr handling
relies on it working, so make tmux force libevent to use poll(2) via
EVENT_NOKQUEUE, until we have fixed kqueue.
2010-07-24 19:25:31 +00:00
Nicholas Marriott
a97b7ad11c
Fix a crash: if remain-on-exit is set and the pane has exited, the
...
buffers may not be valid, so do not try to disable/enable them when
switching to copy mode.
2010-07-22 21:10:51 +00:00
Nicholas Marriott
2b80ede963
Don't return if in the current window since we may want to report a bell
...
(if bell-action any/current), just clear the flag so the status line
doesn't show the bell.
2010-07-19 21:13:03 +00:00
Nicholas Marriott
2a0f3f0d79
Send the \n to stdout with the message, not stderr... doh.
2010-07-19 18:27:38 +00:00
Jason McIntyre
a471b5de9c
some escapes i missed;
2010-07-15 21:54:20 +00:00
Nicholas Marriott
43355fa75c
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.
2010-07-14 18:37:49 +00:00
Nicholas Marriott
b9c873cdaa
Return the command client return code with MSG_EXIT now that MSG_ERROR and
...
MSG_PRINT are unused.
New clients should be compatible with old tmux servers but vice versa may print
an error.
2010-07-11 17:06:45 +00:00
Ted Unangst
b4b9b831ee
replace some magic mouse constants with defines for clarity. ok nicm
2010-06-29 05:24:49 +00:00
Nicholas Marriott
552c9cd83f
Custom layouts. list-windows command displays the layout as a string (such as
...
"bb62,159x48,0,0{79x48,0,0,79x48,80,0}") and it can be applied to another
window (with the same number of panes or fewer) using select-layout.
2010-06-29 03:30:13 +00:00
Nicholas Marriott
76bbdeb586
Send all three of stdin, stdout, stderr from the client to the server, so that
...
commands can directly make use of them. This means that load-buffer and
save-buffer can have "-" as the file to read from stdin or write to stdout.
This is a protocol version bump so the tmux server will need to be restarted
after upgrade (or an older client used).
2010-06-28 22:10:42 +00:00
Nicholas Marriott
07a71fd432
Store the current working directory in the session, change the default-path
...
option to default to empty and make that mean that the stored session CWD is
used.
2010-06-27 02:56:59 +00:00
Nicholas Marriott
26524c99f6
New option, detach-on-destroy, to set what happens to a client when the session
...
it is attached to is destroyed. If on (the default), it is detached; if off, it
is switched to the most recently active session.
2010-06-27 00:22:22 +00:00
Nicholas Marriott
34464da8d3
Use server_destroy_session() for kill-session.
2010-06-26 23:55:50 +00:00
Nicholas Marriott
42e2413978
Setting the cmdlist pointer in the bind-key to NULL to prevent it being freed
...
after the command is executing is bogus because it may still be needed if the
same command is going to be executed again (for example if you "bind-key a
bind-key b ..."). Making a copy is hard, so instead add a reference count to
the cmd_list.
While here, also print bind-key -n and the rest of the flags properly.
Fixes problem reported by mcbride@.
2010-06-26 18:20:53 +00:00