aboutsummaryrefslogtreecommitdiff
path: root/tmux.h
Commit message (Collapse)AuthorAge
...
* Add a flag to cmd_find_session so that attach-session can preferNicholas Marriott2011-04-05
| | | | | unattached sessions when choosing the most recently used (if -t is not given). Suggested by claudio@.
* Change -t on display-message to be target-pane for the #[A-Z]Nicholas Marriott2011-03-29
| | | | replacements and add -c as target-client.
* Style: uint -> u_int and a missing else.Nicholas Marriott2011-03-28
|
* Don't include meta twice when working out the flags to output forNicholas Marriott2011-03-27
| | | | | xterm-style keys - bit 3 is accepted on input but not on output. Also a style nit in the header.
* 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.
* Support passing through escape sequences to the underlying terminal byNicholas Marriott2011-03-07
| | | | | | | | | | using DCS with a "tmux;" prefix. Escape characters in the sequences must be doubled. For example: $ printf '\033Ptmux;\033\033]12;red\007\033\\' Will pass \033]12;red\007 to the terminal (and change the cursor colour in xterm). From Kevin Goodsell.
* Add a -P option to detach to HUP the client's parent process (usuallyNicholas Marriott2011-03-03
| | | | causing it to exit as well).
* Simplify the way jobs work and drop the persist type, so all jobs areNicholas Marriott2011-01-26
| | | | | | | | | | | | | | | | | fire-and-forget. Status jobs now managed with two trees of output (new and old), rather than storing the output in the jobs themselves. When the status line is processed any jobs which don't appear in the new tree are started and the output from the old tree displayed. When a job finishes it updates the new tree with its output and that is used for any subsequent redraws. When the status interval expires, the new tree is moved to the old so that all jobs are run again. This fixes the "#(echo %H:%M:%S)" problem which would lead to thousands of identical persistent jobs and high memory use (this can still be achieved by adding "sleep 30" but that is much less likely to happen by accident).
* Use LIST_* not SLIST_*.Nicholas Marriott2011-01-26
|
* When clearing the entire screen, clear lines that are used into theNicholas Marriott2011-01-25
| | | | history like xterm does. Requested ages ago by someone I've forgotten.
* 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.
* Set $TMUX without the session when background jobs are run.Nicholas Marriott2011-01-23
|
* Mouse highlight mode (1001) requires a program to cooperate soNicholas Marriott2011-01-15
| | | | supporting it through tmux is not as easy as this, remove it for now.
* 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").
* Clean up and simplify tmux command argument parsing.Nicholas Marriott2011-01-04
| | | | | | | | | | | | | | | | | | | 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.
* Support for UTF-8 mouse input (\033[1005h). This was added in xterm 262Nicholas Marriott2011-01-03
| | | | | | | | | | and supports larger terminals than the older way. If the new mouse-utf8 option is on, UTF-8 mouse input is enabled for all UTF-8 terminals. The option defaults to on if LANG etc are set in the same manner as the utf8 option. With help and based on code from hsim at gmx.li.
* Move the user-visible parts of all options (names, types, limit, defaultNicholas Marriott2011-01-01
| | | | | | values) together into one set of tables in options-table.c. Also clean up and simplify cmd-set-options.c and move a common print function into option-table.c.
* Sprinkle a little more const.Nicholas Marriott2011-01-01
|
* Another table that should be const.Nicholas Marriott2011-01-01
|
* Don't reset the activity timer for unattached sessions every second,Nicholas Marriott2011-01-01
| | | | | | | this screws up the choice of most-recently-used. Instead, break the time update into a little function and do it when the session is attached. Pointed out by joshe@.
* Remove some unused defines.Nicholas Marriott2010-12-30
|
* Change from a per-session stack of buffers to one global stack which isNicholas Marriott2010-12-30
| | | | | | | 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.
* Add a function to create window flags rather than doing the same thingNicholas Marriott2010-12-30
| | | | in two places. From Thomas Adam.
* Support all four of the xterm mouse modes. Based on a diff from hsim atNicholas Marriott2010-12-29
| | | | gmx.li.
* Store sessions in an RB tree by name rather than a list, this is tidierNicholas Marriott2010-12-21
| | | | | | | | | 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.
* Dead sessions are never on the active sessions list, so the SESSION_DEADNicholas Marriott2010-12-20
| | | | flag is effectively unused. Remove it.
* Use pointer rather than index for the client's last session.Nicholas Marriott2010-12-20
|
* Unify the way sessions are used by callbacks - store the address and useNicholas Marriott2010-12-20
| | | | | the reference count, then check it is still on the global sessions list in the callback.
* Track the last session for a client and add a flag to switch-client andNicholas Marriott2010-12-11
| | | | a key binding (L) to move a client back to its last session.
* Make the prompt history global for all clients which is much more useful ↵Nicholas Marriott2010-12-11
| | | | than per-client history.
* Add an option to alert (monitor) for silence (lack of activity) in aNicholas Marriott2010-12-06
| | | | window. From Thomas Adam.
* There is somewhere that WINDOW_HIDDEN is getting set when it shouldn'tNicholas Marriott2010-11-22
| | | | | | | | be and I can't find it, but the flag itself is a useless optimisation that only applies to automatic-resize windows, so just dispose of it entirely. Fixes problems reported by Nicholas Riley.
* Declaration in header should be extern.Nicholas Marriott2010-11-11
|
* We now send argv to the server after parsing it in the client to get theNicholas Marriott2010-10-29
| | | | | command, so the client should not modify it. Instead, take a copy. Fixes parsing command lists, reported by mcbride@.
* Add a last-pane command (bound to ; by default). Requested ages ago byNicholas Marriott2010-10-23
| | | | somebody whose name I have forgotten.
* Merge the before and after attach client code into one in client.cNicholas Marriott2010-10-18
| | | | (instead of two in tmux.c and client.c).
* Nuke a leftover RB tree declaration spotted by blambert.Nicholas Marriott2010-09-28
|
* Two new options:Nicholas Marriott2010-09-26
| | | | | | | | | | | | - 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.
* Use UTF-8 line drawing characters on UTF-8 terminals. Fixes some stupidNicholas Marriott2010-09-11
| | | | | | | | 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.
* Add -n and -p flags to switch-client to move to the next and previousNicholas Marriott2010-09-08
| | | | | | | session (yes, it doesn't match window/pane, but so what, nor does switch-client). Based on a diff long ago from "edsouza".
* 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.
* Change the way backoff works. Instead of stopping reading from the ptyNicholas Marriott2010-08-11
| | | | | | | | | | 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.
* When changing so that the client passes its stdout and stderr as well asNicholas Marriott2010-07-24
| | | | | | | | | | | | | | | | | | 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.
* 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.
* Return the command client return code with MSG_EXIT now that MSG_ERROR andNicholas Marriott2010-07-11
| | | | | | | MSG_PRINT are unused. New clients should be compatible with old tmux servers but vice versa may print an error.
* replace some magic mouse constants with defines for clarity. ok nicmTed Unangst2010-06-29
|
* Custom layouts. list-windows command displays the layout as a string (such asNicholas Marriott2010-06-29
| | | | | "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.
* Send all three of stdin, stdout, stderr from the client to the server, so thatNicholas Marriott2010-06-28
| | | | | | | | 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).
* Store the current working directory in the session, change the default-pathNicholas Marriott2010-06-27
| | | | | option to default to empty and make that mean that the stored session CWD is used.
* Setting the cmdlist pointer in the bind-key to NULL to prevent it being freedNicholas Marriott2010-06-26
| | | | | | | | | | | 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@.