aboutsummaryrefslogtreecommitdiff
path: root/window.c
Commit message (Collapse)AuthorAge
* Give each pane created in a tmux server a unique id (starting from 0),Nicholas Marriott2011-03-27
| | | | | put it in the TMUX_PANE environment variable and accept it as a target. Suggested by and with testing and tweaks from Ben Boeckel.
* Check if the index is in use and fail before creating the child process,Nicholas Marriott2011-01-25
| | | | rather than leaving a stray child on failure.
* Move all calls to fcntl(...O_NONBLOCK) into a function and clear theNicholas Marriott2011-01-08
| | | | | flag on the stdio file descriptors before closing them (fixes things like "tmux ls && cat").
* Add a function to create window flags rather than doing the same thingNicholas Marriott2010-12-30
| | | | in two places. From Thomas Adam.
* Add an option to alert (monitor) for silence (lack of activity) in aNicholas Marriott2010-12-06
| | | | window. From Thomas Adam.
* Don't allow last and active window to become the same - a very bad moveNicholas Marriott2010-11-14
| | | | when the active window is closed and freed. Reported by sthen@.
* Add a last-pane command (bound to ; by default). Requested ages ago byNicholas Marriott2010-10-23
| | | | somebody whose name I have forgotten.
* When removing a pane, don't change the active pane unless the activeNicholas Marriott2010-10-23
| | | | pane is actually the one being removed.
* Trying to set FD_CLOEXEC on every fd is a lost cause, just useNicholas Marriott2010-10-16
| | | | closefrom() before exec.
* When destroying a pane, reset any mode (which reenables paneNicholas Marriott2010-08-25
| | | | bufferevent) before freeing the bufferevent.
* Do not call event_del() for signals after fork(), just use sigaction()Nicholas Marriott2010-08-19
| | | | | directly instead - calling libevent functions after fork() w/o event_reinit() is a bad idea, even if in this case it was harmless.
* Make pane/window wrapping more logical (so with 10 windows, +10 fromNicholas Marriott2010-07-14
| | | | window 5 stays in the same place), and tidy the code. From Tiago Cunha.
* Extend the -t:+ and -t:- window targets for next and previous window toNicholas Marriott2010-06-21
| | | | accept an offset such as -t:+2. From Tiago Cunha.
* Pass in the session, rather than the client, to window modes' key()Nicholas Marriott2010-05-23
| | | | | | | | | 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.
* Put this back in with the initialisation in the right order.Nicholas Marriott2010-05-04
|
* Revert last change, it appears to be broken somehow.Nicholas Marriott2010-05-04
|
* Make signal handler setup/teardown two common functions instead of six,Nicholas Marriott2010-05-03
| | | | | and reset SIGCHLD after fork to fix problems with some shells. From Romain Francois.
* Run job commands explicitly in the global enviroment (which can beNicholas Marriott2010-04-04
| | | | | modified with setenv -g) rather than with the environment tmux started with.
* Squash a function that is only called in a callback into the callbackNicholas Marriott2010-04-04
| | | | function.
* Support up, down, left, right movement through panes with -UDLR flags toNicholas Marriott2010-03-22
| | | | | | | select-pane. Also REMOVE the up- and down-pane commands: equivalent behaviour is now available using -t :.+ and -t :.-.
* New input parser based on http://vt100.net/emu/dec_ansi_parser.Nicholas Marriott2010-03-22
|
* Instead of bailing out on the first configuration file error, carry on,Nicholas Marriott2010-02-06
| | | | | collecting all the errors, then start with the active window in more mode displaying them.
* Massive spaces->tabs and trailing whitespace cleanup, hopefully for the lastNicholas Marriott2009-12-03
| | | | | time now I've configured emacs to make them displayed in really annoying colours...
* Remove a couple of unused arguments where possible, and add /* ARGSUSED */ toNicholas Marriott2009-11-26
| | | | the rest to reduce lint output.
* Change status line drawing to create the window list in a separate screen andNicholas Marriott2009-11-19
| | | | | then copy it into the status line screen. This allows UTF-8 in window names and fixes some problems with #[] in window-status-format.
* Destroy panes immediately rather than checking them all every loop.Nicholas Marriott2009-11-13
|
* Change window name change to use a timer event rather than a gettimeofday()Nicholas Marriott2009-11-04
| | | | check every loop.
* Convert the window pane (pty master side) fd over to use a bufferevent.Nicholas Marriott2009-11-04
| | | | | 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.
* Switch window pane pipe redirect fd over to a bufferevent.Nicholas Marriott2009-11-04
|
* Initial changes to move tmux to libevent.Nicholas Marriott2009-11-04
| | | | | | | | | 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.
* Only redraw the pane when changing mode, not the entire window.Nicholas Marriott2009-10-22
|
* Stop updating the screen when not in output mode, stops copy mode gettingNicholas Marriott2009-10-19
| | | | confused.
* Add a pipe-pane command to allow a pane to be piped to a shell command, forNicholas Marriott2009-10-11
| | | | | | | | | | | 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@.
* Clean up by introducing a wrapper struct for mouse clicks rather than passingNicholas Marriott2009-10-11
| | | | | | | 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.
* Accept key and mouse input for keys in zombified windows if they are in a mode..Nicholas Marriott2009-10-10
|
* New option, mouse-select-pane. If on, the mouse may be used to select theNicholas Marriott2009-10-10
| | | | | | current pane. Suggested by sthen@ and also by someone else ages ago who I have forgotten.
* Add "grouped sessions" which have independent name, options, current window andNicholas Marriott2009-10-10
| | | | | | | | 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.
* Add a simple synchronize-panes window option: when set, all input to any paneNicholas Marriott2009-10-09
| | | | | that is part of the window is also sent to all other panes in the same window. Suggested by several, most recently Tomasz Pajor.
* Regularise some fatal messages.Nicholas Marriott2009-09-20
|
* Rather than constructing an entire termios struct from ttydefaults.h, just letNicholas Marriott2009-09-16
| | | | | forkpty do it and then alter the bits that should be changed after fork. A little neater and more portable.
* If forking a login shell or if SHELL is otherwise not useful, set it to theNicholas Marriott2009-09-01
| | | | default shell. Based on a diff from martynas@.
* When using tmux as a login shell, there is currently no way to specify a shellNicholas Marriott2009-09-01
| | | | | | | | | | | | to be used as a login shell inside tmux, so add a default-shell session option. This sets the shell invoked as a login shell when the default-command option is empty. The default option value is whichever of $SHELL, getpwuid(getuid())'s pw_shell or /bin/sh is valid first. Based on a diff from martynas@, changed by me to be a session option rather than a window option.
* Add a base-index session option to specify the first index checked when lookingNicholas Marriott2009-08-13
| | | | for an index for a new window.
* When creating a new session from the command-line where there is an externalNicholas Marriott2009-08-13
| | | | | terminal, copy the termios(4) special characters and use them for new windows created in the new session. Suggested by Theo.
* When started as the shell, __progname contains a leading -, so hardcode "tmux"Nicholas Marriott2009-08-12
| | | | for socket path and log files, and strip it when working out the shell.
* Have the client pass its stdin fd to the server when identifying itself andNicholas Marriott2009-08-11
| | | | | | | | | have the server use that rather than reopening the tty. If the fd isn't given, use the old behaviour (so no need for a version change). This allows tmux to be used as the shell, so also change so that when working out the command to execute if default-command is empty (the default), tmux will try not execute itself.
* Infrastructure and commands to manage the environment for processes startedNicholas Marriott2009-08-08
| | | | | | | | | | | | | | | 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.
* If select-layout is not given an argument, repply the last layout used in theNicholas Marriott2009-07-28
| | | | window, if any.
* window_add_pane cannot fail, so remove the unused cause argument and don'tNicholas Marriott2009-07-22
| | | | bother to check for a NULL return.
* Make some functions which return unused values void (mostly found by lint) andNicholas Marriott2009-07-21
| | | | tweak a redundant expression in window_pane_set_mode.