aboutsummaryrefslogtreecommitdiff
path: root/tmux.h
Commit message (Collapse)AuthorAge
...
* Get rid of the ugly CMD_CHFLAG macro and use a const string (eg "dDU") in theNicholas Marriott2009-11-13
| | | | command entry structs and a couple of functions to check/set the flags.
* Destroy panes immediately rather than checking them all every loop.Nicholas Marriott2009-11-13
|
* Zap unused functions, prompted by deraadt.Nicholas Marriott2009-11-13
|
* Only need to chmod +x or -x the socket when a client is created, lost orNicholas Marriott2009-11-11
| | | | attached, rather than every event loop.
* Whoops, this is needed for last commit as well.Nicholas Marriott2009-11-10
|
* Switch the tty key tree over to an (unbalanced) ternary tree which allowsNicholas Marriott2009-11-05
| | | | | | | partial matches to be done (they wait for further data or a timer to expire, like a naked escape). Mouse and xterm-style keys still expect to be atomic.
* Key flags are only used for initialisation so they are not needed in the mainNicholas Marriott2009-11-05
| | | | tty_key struct.
* Now all timers are events, there is no longer any need to wake up every 50 ms -Nicholas Marriott2009-11-05
| | | | only wake up when an event happens.
* Switch tty key input over to happen on a read event. This is a bit moreNicholas Marriott2009-11-05
| | | | | | | | | | complicated because of escape input, but in that case instead of processing a key immediately, schedule a timer and reprocess the bufer when it expires. This currently assumes that keys will be atomic (ie that if eg F1 is pressed the entire sequence is present in the buffer). This is usually but not always true, a change in the tree format so it can differentiate potential (partial) key sequences will happens soon and will allow this to be fixed.
* Convert the key repeat timer to an event.Nicholas Marriott2009-11-05
|
* 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.