Nicholas Marriott
5672f2ce6b
Check changes_timer with event_initialized before event_del.
2012-03-20 14:06:44 +00:00
Nicholas Marriott
f59971276a
Add a simple form of output rate limiting by counting the number of
...
certain C0 sequences (linefeeds, backspaces, carriage returns) and if it
exceeds a threshold (current default 50/millisecond), start to redraw
the pane every 100 milliseconds instead of making each change as it
comes. Two configuration options - c0-change-trigger and
c0-change-interval.
This makes tmux much more responsive under very fast output (for example
yes(1) or accidentally cat'ing a large file) but may not be perfect on
all terminals and connections - feedback very welcome, particularly
where this change has a negative rather than positive effect (making it
off by default is a possibility).
After much experimentation based originally on a request Robin Lee
Powell (which ended with a completely different solution), this idea
from discussion with Ailin Nemui.
2012-03-20 11:01:00 +00:00
Nicholas Marriott
46210344a6
Add notify hooks for various events, the functions are currently empty
...
stubs but will be filled in for control mode later. From George Nachman.
2012-03-17 22:35:09 +00:00
Nicholas Marriott
d3c842d367
Check event_initialized before event_del if event may not have been set
...
up; libevent2 complains about this. Reported by Moriyoshi Koizumi.
2012-03-17 18:24:07 +00:00
Nicholas Marriott
8363d19307
Move window name changes into wrapper function window_set_name, from
...
George Nachman.
2012-02-02 00:10:11 +00:00
Nicholas Marriott
0e59bc75fd
Give each window a unique id, like panes but prefixed with @. Based on
...
work from George Nachman.
2012-01-30 09:39:34 +00:00
Nicholas Marriott
9bbc63ed65
Call bufferevent_free before closing file descriptor associated with it
...
or bugs in $EventMechanism on $OtherOS makes libevent get it's knickers
in a twist. From Dylan Alex Simon.
2012-01-29 02:22:11 +00:00
Nicholas Marriott
57df442916
Make window_pane_index work the same as window_index, from Ben Boeckel.
2011-11-15 23:19:51 +00:00
Nicholas Marriott
e6a59c4bee
Reject $SHELL if it is not a full path.
2011-09-25 18:53:04 +00:00
Nicholas Marriott
f01b7191a3
Add pane-base-index option, from Ben Barbour.
2011-08-24 10:29:57 +00:00
Nicholas Marriott
2b60c648c4
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.
2011-06-05 10:53:05 +00:00
Nicholas Marriott
0f97ac4221
The mouse should only work in copy mode if mode-mouse is set, not just
...
mouse-select-pane.
2011-04-18 20:57:16 +00:00
Nicholas Marriott
808502ac3d
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.
2011-03-27 20:27:26 +00:00
Nicholas Marriott
1270f8fed8
Check if the index is in use and fail before creating the child process,
...
rather than leaving a stray child on failure.
2011-01-25 22:31:50 +00:00
Nicholas Marriott
69cb1f830e
Move all calls to fcntl(...O_NONBLOCK) into a function and clear the
...
flag on the stdio file descriptors before closing them (fixes things
like "tmux ls && cat").
2011-01-08 01:52:36 +00:00
Nicholas Marriott
2231e72968
Add a function to create window flags rather than doing the same thing
...
in two places. From Thomas Adam.
2010-12-30 21:35:17 +00:00
Nicholas Marriott
e26a351865
Add an option to alert (monitor) for silence (lack of activity) in a
...
window. From Thomas Adam.
2010-12-06 22:51:02 +00:00
Nicholas Marriott
503edae26f
Don't allow last and active window to become the same - a very bad move
...
when the active window is closed and freed. Reported by sthen@.
2010-11-14 08:58:25 +00:00
Nicholas Marriott
5de84eca3d
Add a last-pane command (bound to ; by default). Requested ages ago by
...
somebody whose name I have forgotten.
2010-10-23 13:04:34 +00:00
Nicholas Marriott
a3efd2ab5a
When removing a pane, don't change the active pane unless the active
...
pane is actually the one being removed.
2010-10-23 12:51:51 +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
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
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
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
386849edc1
Extend the -t:+ and -t:- window targets for next and previous window to
...
accept an offset such as -t:+2. From Tiago Cunha.
2010-06-21 01:46:36 +00:00
Nicholas Marriott
4f5c5b37b8
Pass in the session, rather than the client, to window modes' key()
...
function. We were only ever using the client to find the session anyway.
This allows send-key to work properly for manipulating copy mode from
outside tmux.
From Micah Cowan.
2010-05-23 19:42:19 +00:00
Nicholas Marriott
c4a2fdf15b
Put this back in with the initialisation in the right order.
2010-05-04 17:28:16 +00:00
Nicholas Marriott
af5e0bd15a
Revert last change, it appears to be broken somehow.
2010-05-04 08:48:06 +00:00
Nicholas Marriott
ec1d37b1b2
Make signal handler setup/teardown two common functions instead of six,
...
and reset SIGCHLD after fork to fix problems with some shells. From
Romain Francois.
2010-05-03 16:06:32 +00:00
Nicholas Marriott
b02cd35354
Run job commands explicitly in the global enviroment (which can be
...
modified with setenv -g) rather than with the environment tmux started
with.
2010-04-04 19:02:09 +00:00
Nicholas Marriott
7425122c1c
Squash a function that is only called in a callback into the callback
...
function.
2010-04-04 18:48:37 +00:00
Nicholas Marriott
6f04866044
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 :.-.
2010-03-22 19:07:52 +00:00
Nicholas Marriott
4baafd8126
New input parser based on http://vt100.net/emu/dec_ansi_parser .
2010-03-22 19:02:54 +00:00
Nicholas Marriott
8aba77b7be
Instead of bailing out on the first configuration file error, carry on,
...
collecting all the errors, then start with the active window in more mode
displaying them.
2010-02-06 17:15:33 +00:00
Nicholas Marriott
15a64b805e
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...
2009-12-03 22:50:09 +00:00
Nicholas Marriott
4ca857e0e9
Remove a couple of unused arguments where possible, and add /* ARGSUSED */ to
...
the rest to reduce lint output.
2009-11-26 21:37:13 +00:00
Nicholas Marriott
33b337f618
Change status line drawing to create the window list in a separate screen and
...
then copy it into the status line screen. This allows UTF-8 in window names and
fixes some problems with #[] in window-status-format.
2009-11-19 19:47:28 +00:00
Nicholas Marriott
8e47966225
Destroy panes immediately rather than checking them all every loop.
2009-11-13 17:33:07 +00:00
Nicholas Marriott
44d6a2c435
Change window name change to use a timer event rather than a gettimeofday()
...
check every loop.
2009-11-04 23:54:57 +00:00
Nicholas Marriott
a02c7e804c
Convert the window pane (pty master side) fd over to use a bufferevent.
...
The evbuffer API is very similar to the existing tmux buffer API so this was
remarkably painless. Not many possible ways to do it, I suppose.
2009-11-04 22:43:11 +00:00
Nicholas Marriott
91ad830c88
Switch window pane pipe redirect fd over to a bufferevent.
2009-11-04 22:02:38 +00:00
Nicholas Marriott
abf3a5d50e
Initial changes to move tmux to libevent.
...
This moves the client-side loops are pretty much fully over to event-based only
(tmux.c and client.c) but server-side (server.c and friends) treats libevent as
a sort of clever poll, waking up after every event to run various things.
Moving the server stuff over to bufferevents and timers and so on will come
later.
2009-11-04 20:50:11 +00:00
Nicholas Marriott
fd35b6f836
Only redraw the pane when changing mode, not the entire window.
2009-10-22 12:30:00 +00:00
Nicholas Marriott
2afe395ff2
Stop updating the screen when not in output mode, stops copy mode getting
...
confused.
2009-10-19 13:18:13 +00:00
Nicholas Marriott
64b5f39656
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@.
2009-10-11 10:04:27 +00:00
Nicholas Marriott
4bc0f6e7e9
Clean up by introducing a wrapper struct for mouse clicks rather than passing
...
three u_chars around.
As a side-effect this fixes incorrectly rejecting high cursor positions
(because it was comparing them as signed char), reported by Tom Doherty.
2009-10-11 07:01:10 +00:00
Nicholas Marriott
2988c594cc
Accept key and mouse input for keys in zombified windows if they are in a mode..
2009-10-10 15:29:34 +00:00
Nicholas Marriott
4658c063d5
New option, mouse-select-pane. If on, the mouse may be used to select the
...
current pane.
Suggested by sthen@ and also by someone else ages ago who I have forgotten.
2009-10-10 14:51:16 +00:00
Nicholas Marriott
9dd72b9583
Add "grouped sessions" which have independent name, options, current window and
...
so on but where the linked windows are synchronized (ie creating, killing
windows and so on are mirrored between the sessions). A grouped session may be
created by passing -t to new-session.
Had this around for a while, tested by a couple of people.
2009-10-10 10:02:48 +00:00
Nicholas Marriott
3af09ac946
Add a simple synchronize-panes window option: when set, all input to any pane
...
that is part of the window is also sent to all other panes in the same
window. Suggested by several, most recently Tomasz Pajor.
2009-10-09 07:27:00 +00:00