aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Set the current window pointer to NULL when killing a winlink that is to beNicholas Marriott2009-10-11
| | | | | | | replaced with link-window -k. This prevents it being pushed onto the last window stack and causing a use-after-free. Only took me an hour to find this :-/...
* 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@.
* Convert if-shell over to the background job framework as well.Nicholas Marriott2009-10-11
|
* Remove a debugging leftover and add copyright.Nicholas Marriott2009-10-11
|
* Switch run-shell over to queue the command in the background like #().Nicholas Marriott2009-10-11
|
* There isn't much point in having a free function if it isn't used.Nicholas Marriott2009-10-11
| | | | Also allow a NULL tree.
* Collect status from dead jobs and don't invoke the callback until bothNicholas Marriott2009-10-11
| | | | all input (the socket is closed) and status is available.
* 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.
* Braek some bits out of server_fill_client() that aren't really related toNicholas Marriott2009-10-11
| | | | polling into their own function.
* Put all jobs on a global all_jobs list and use that in server.c instead ofNicholas Marriott2009-10-10
| | | | running through all the clients.
* -scroll mode which is dead.Nicholas Marriott2009-10-10
|
* Split list-panes off from list-windows.Nicholas Marriott2009-10-10
|
* Accept key and mouse input for keys in zombified windows if they are in a mode..Nicholas Marriott2009-10-10
|
* When a window is zombified and automatic-rename is on, append [dead] to theNicholas Marriott2009-10-10
| | | | name.
* Rather than running status-left, status-right and window title #() with popenNicholas Marriott2009-10-10
| | | | | | | | | | | | | | | | | immediately every redraw, queue them up and run them in the background, starting each once every status-interval. The actual status line uses the output from the last run. This brings several advantages: - tmux itself may be called from inside #() without causing the server to hang; - likewise, sleep or similar doesn't cause the server to block; - commands aren't run excessively often when redrawing; - commands shared by status-left and status-right, or used multiple times, will only be run once. run-shell and if-shell still use system()/popen() but will be changed over to use this too later.
* 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.
* There is no point setting the scroll region up for line feeds unless scrollingNicholas Marriott2009-10-10
| | | | is actually going to happen, so don't.
* 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.
* Support for individual session idle time locking. May be enabled by turning offNicholas Marriott2009-10-10
| | | | | | | | | | | | | the lock-server option (it is on by default). When this is off, each session locks when it has been idle for the lock-after-time setting. When on, the entire server locks when ALL sessions have been idle for their individual lock-after-time settings. This replaces one global-only option (lock-after-time) with another (lock-server), but the default behaviour is usually preferable so there don't seem to be many alternatives. Diff/idea largely from Thomas Adam, tweaked by me.
* Instead of passing a struct pollfd ** around through various functions, buildNicholas Marriott2009-10-10
| | | | | | | them into a tree and then convert into a flat poll array before and after poll. This adds a little code but should reduce annoying problems with ordering when adding new things that also need to be polled.
* The UTF-8 detection idea doesn't work and I am reasonably happy with theNicholas Marriott2009-10-09
| | | | current methods, so remove the (already #ifdef 0'd) code.
* 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.
* Be less aggressive about turning the cursor off, only explicitly turn it offNicholas Marriott2009-10-09
| | | | when tmux is redrawing, otherwise leave in the state set by the application.
* Support J and K for scroll up and scroll down in copy mode with vi keys,Nicholas Marriott2009-10-07
| | | | suggested by martynas.
* Fix comment.Nicholas Marriott2009-10-07
|
* Accept ^? for backspace as well as BSpace.Nicholas Marriott2009-10-06
|
* Remove scroll mode which is now redundant, copy mode should be used instead.Nicholas Marriott2009-10-06
| | | | The = key binding now does nothing.
* Make C-Up and C-Down in copy mode scroll the screen up and down one lineNicholas Marriott2009-10-06
| | | | | without moving the cursor, like Up and Down in scroll mode (which will shortly disappear).
* If no target client is specified to commands which accept one, try to guess theNicholas Marriott2009-10-05
| | | | | | 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.
* tweak previous;Jason McIntyre2009-10-04
|
* Get / and ? the right way round in vi mode, and use : for goto line rather thanNicholas Marriott2009-10-04
| | | | g.
* Check for already locked/suspended clients in server_lock_client rather thanNicholas Marriott2009-10-04
| | | | its callers.
* Add a key string for space ("Space") and document the names, suggested byNicholas Marriott2009-10-04
| | | | guenther@. Also document how to bind " and ', suggested by miod@.
* C-v and M-v too.Nicholas Marriott2009-10-04
|
* Support C-n/C-p with emacs keys in choice mode, also fix a comment.Nicholas Marriott2009-10-04
|
* New lock-client and lock-session commands to lock an individual client or allNicholas Marriott2009-09-24
| | | | clients attached to a session respectively.
* Don't allow locked or suspended clients to limit the size of active clients.Nicholas Marriott2009-09-24
|
* Remove PROMPT_HIDDEN code which is now unused.Nicholas Marriott2009-09-23
|
* Support -c like sh(1) to execute a command, useful when tmux is a loginNicholas Marriott2009-09-23
| | | | | | | shell. Suggested by halex@. This includes another protocol version increase (the last for now) so again restart the tmux server before upgrading.
* On SIGTERM, just abandon any suspended/locked clients and leave them to it,Nicholas Marriott2009-09-23
| | | | | otherwise the server will hang around (refusing new connections) until they exit properly.
* Don't die if the client is detaching (the tty has been closed) after waking upNicholas Marriott2009-09-23
| | | | from locking.
* Remove the internal tmux locking and instead detach each client and run theNicholas Marriott2009-09-23
| | | | | | | | | | | | | | 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.
* Trim some code by moving the ioctl(TIOCGWINSZ) after SIGWINCH from the clientNicholas Marriott2009-09-23
| | | | | | | into the server. This is another (the second of four) protocol version changes coming this morning, so again the server should be killed before upgrading.
* Don't attempt to open() the tty path, rely on the client sending its stdin fdNicholas Marriott2009-09-23
| | | | | | | | | with imsg and fatal if it doesn't, then set the FD_CLOEXEC flag in tty_init instead of tty_open to prevent them leaking into child processes if any are created between the two calls. This bumps the protocol version, so the tmux server should be killed before upgrading.
* Be more careful about what flags are cleared when opening the terminal,Nicholas Marriott2009-09-22
| | | | otherwise the opened/started flags are cleared and the terminal never released.
* Permit multiple prefix keys to be defined, separated by commas, for example:Nicholas Marriott2009-09-22
| | | | | | | set -g prefix ^a,^b Any key in the list acts as the prefix. The send-prefix command always sends the first key in the list.
* Use KEYC_NONE constant instead of 0 on init.Nicholas Marriott2009-09-21
|
* Nuke -i option which isn't used anymore.Nicholas Marriott2009-09-21
|
* Use option print function for info messages as well.Nicholas Marriott2009-09-21
|
* Move common code from show-options and show-window-options into a function.Nicholas Marriott2009-09-21
|