aboutsummaryrefslogtreecommitdiff
path: root/tmux.h
Commit message (Collapse)AuthorAge
...
| | * Change window name change to use a timer event rather than a gettimeofday()Nicholas Marriott2009-11-04
| | | | | | | | | | | | check every loop.
| | * Move status timer check into the global once-per-second timer, this could maybeNicholas Marriott2009-11-04
| | | | | | | | | | | | be done better but one every second is better than once every 50 ms.
| | * Use timeout events for the identify and message timers.Nicholas Marriott2009-11-04
| | |
| | * Don't reenlist the client imsg event every loop, instead have a small functionNicholas Marriott2009-11-04
| | | | | | | | | | | | to it and call it after the event triggers or after a imsg is added.
| | * Bye-bye buffer*.c.Nicholas Marriott2009-11-04
| | |
| | * 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
| | |
| | * Switch tty fds over to a bufferevent.Nicholas Marriott2009-11-04
| | |
| | * Switch jobs over to use 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.
| | * Add an activity time for clients, like for sessions, and change session andNicholas Marriott2009-11-03
| | | | | | | | | | | | | | | | | | | | | | | | client lookup to pick the most recently used rather than the most recently created - this is much more useful when used interactively and (because the activity time is set at creation) should have no effect on source-file. Based on a problem reported by Jan Johansson.
| | * If it isn't available explicitly, work out the current client in a similar wayNicholas Marriott2009-11-03
| | | | | | | | | | | | | | | to the current session - build a list of the possibilities then pick the newest.
| | * Change session and client activity and creation time members to have moreNicholas Marriott2009-11-03
| | | | | | | | | | | | | | | | | | | | | | | | meaningful names. Also, remove the code to try and update the session activity time for the command client when a command message is received as is pointless because it des not have a session.
| | * tv member of struct paste_buffer is updated but not otherwise used, so removeNicholas Marriott2009-11-03
| | | | | | | | | | | | it.
| | * Double the escape timer (the time after a \033 is received before tmux gives upNicholas Marriott2009-11-02
| | | | | | | | | | | | | | | waiting to see if it is part of a key sequence and passes it through) to 500 ms, the previous setting was too fast. Suggested by naddy.
| | * Add a flag for jobs that shouldn't be freed after they've died and use it forNicholas Marriott2009-11-01
| | | | | | | | | | | | | | | | | | | | | status jobs, then only kill those jobs when status-left, status-right or set-titles-string is changed. Fixes problems with changing options from inside #().
| | * If any client currently displaying a window pane has more than 1 KB of outputNicholas Marriott2009-10-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | buffered, don't accept any further data from the process running in the pane. This makes tmux much more responsive when flooded with output, although other buffers can still have an impact when running remotely. Prompted by a query from Ranganathan Sankaralingam.
| | * Move the poll registration functions into the server-*.c files.Nicholas Marriott2009-10-27
| | |
| | * Rewrite xterm-keys code (both input and output) so that works (doesn't alwaysNicholas Marriott2009-10-26
| | | | | | | | | | | | | | | output the same modifiers, accepts all the possible input keys) and is more understandable.
| | * Support the (mostly new) function key+modifier caps (kIC-kIC7). Most of theseNicholas Marriott2009-10-26
| | | | | | | | | | | | | | | will be caught (soon) by the xterm keys code in xterm itself but some other descriptions such as rxvt define them as well.
| | * Rename keypad keys to something more useful.Nicholas Marriott2009-10-26
| | |
| | * Remove the -d flag to tmux and just use op/AX to detect default colours.Nicholas Marriott2009-10-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Irritatingly, although op can be used to tell if a terminal supports default colours, it can't be used to set them because in some terminfo descriptions it resets attributes as a side-effect (acts as sgr0) and in others it doesn't, so it is not possible to determine reliably what the terminal state will be afterwards. So if AX is missing and op is present, tmux just sends sgr0. Anyone using -d for a terminal who finds they actually needed it can replace it using terminal-overrides, but please let me know as it is probably an omission from terminfo.
| | * Split the server code handling clients, jobs and windows off into separateNicholas Marriott2009-10-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | files from server.c (merging server-msg.c into the client file) and rather than iterating over each set after poll(), allow a callback to be specified when the fd is added and just walk once over the returned pollfds calling each callback where needed. More to come, getting this in so it is tested.
| | * Client tidying: get rid of client_ctx struct in favour of two variables inNicholas Marriott2009-10-21
| | | | | | | | | | | | client.c, and move the functions in client-fn.c into other files.
| | * Remove unused function.Nicholas Marriott2009-10-21
| | |
| | * Try to reduce the UTF-8 mess.Nicholas Marriott2009-10-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Get rid of passing around u_char[4]s and define a struct utf8_data which has character data, size (sequence length) and width. Move UTF-8 character collection into two functions utf8_open/utf8_append in utf8.c which fill in this struct and use these functions from input.c and the various functions in screen-write.c. Space for rather more data than is necessary for one UTF-8 sequence is in the utf8_data struct because screen_write_copy is still nasty and needs to reinject the character (after combining) into screen_write_cell.
| | * UTF-8 combined character fixes.Nicholas Marriott2009-10-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Thai can have treble combinations (1 x width=1 then 2 x width=0) so bump the UTF-8 cell data size to 9 and alter the code to allow this. Also break off the combining code into a separate function, handle any further combining beyond the buffer size by replacing the character with _s, and when redrawing the UTF-8 character don't assume the first part has just been printed, redraw the entire line.
| | * Nuke stray blank line.Nicholas Marriott2009-10-20
| | |
| | * Instead of having a complicated check to see if the cursor is in the lastNicholas Marriott2009-10-17
| | | | | | | | | | | | | | | | | | position to avoid an explicit wrap, actually move it there. Some UTF-8 fixes to come.
| | * Move lines into the history when scrolling even if the scroll region is notNicholas Marriott2009-10-13
| | | | | | | | | | | | | | | | | | the entire screen. Allows ircII users to see history, prompted by naddy.
| | * Add mode keys to move the cursor to the top, middle and bottom of the screen.Nicholas Marriott2009-10-13
| | | | | | | | | | | | H/M/L in vi mode and M-R/M-r in emacs (bottom of screen not bound in emacs).
| | * When drawing lines that have wrapped naturally, don't force a newline butNicholas Marriott2009-10-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | permit them to wrap naturally again. This allows terminals that use this to guess where lines start and end for eg mouse selecting (like xterm) to work correctly. This was another long-standing issue raised by several people over the last while. Thanks to martynas@ for much testing. This was not trivial to get right so bringing it in for wider testing and adn to fix any further glitches in-tree.
| | * When backspace is received at the beginning of a line and the previous line wasNicholas Marriott2009-10-12
| | | | | | | | | | | | | | | | | | | | | | | | wrapped, move the cursor back up to the end of the previous line. Another one of the forgotten persons requested this quite a while ago (I need to start noting names on todo items...) when it was quite hard to implement. Now it is easy and I don't see it can do any harm, so hey presto...
| | * Use relative cursor movement instead of absolute when possible and whenNicholas Marriott2009-10-12
| | | | | | | | | | | | | | | supported by the terminal to reduce the size of the output data (generally about 10-20%).
| | * Similarly add a tty_cursor_pane function to tidy up most of the calls.Nicholas Marriott2009-10-12
| | |
| | * _absolute is redundant, just use tty_region.Nicholas Marriott2009-10-12
| | |
| | * Cleanup: use two functions for region setting, one for absolute and one insideNicholas Marriott2009-10-12
| | | | | | | | | | | | pane.
| | * 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@.
| | * 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.
| | * 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.
| | * Split list-panes off from list-windows.Nicholas Marriott2009-10-10
| | |
| | * 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.
| | * 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.
| | * 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.
| | * 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.