aboutsummaryrefslogtreecommitdiff
path: root/window.c
Commit message (Collapse)AuthorAge
...
| * 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.
| * Improved layout code.Nicholas Marriott2009-07-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Each window now has a tree of layout cells associated with it. In this tree, each node is either a horizontal or vertical cell containing a list of other cells running from left-to-right or top-to-bottom, or a leaf cell which is associated with a pane. The major functional changes are: - panes may now be split arbitrarily both horizontally (splitw -h, C-b %) and vertically (splitw -v, C-b "); - panes may be resized both horizontally and vertically (resizep -L/-R/-U/-D, bound to C-b left/right/up/down and C-b M-left/right/up/down); - layouts are now applied and then may be modified by resizing or splitting panes, rather than being fixed and reapplied when the window is resized or panes are added; - manual-vertical layout is no longer necessary, and active-only layout is gone (but may return in future); - the main-pane layouts now reduce the size of the main pane to fit all panes if possible. Thanks to all who tested.
| * - New command display-message (alias display) to display a message in theNicholas Marriott2009-07-17
| | | | | | | | | | | | | | | | | | | | status line (bound to "i" and displays the current window and time by default). The same substitutions are applied as for status-left/right. - Add support for including the window index (#I), pane index (#P) and window name (#W) in the message, and status-left or status-right. - Bump protocol version. From Tiago Cunha, thanks!
| * The man page says that kill-window removes the window entirely, unlinking itNicholas Marriott2009-07-15
| | | | | | | | | | | | | | from any sessions. In fact the implementation only affected the current session, making it the same as unlink-window but destroying the window if it was linked into only one session (unlinkw gives an error). Change the behaviour to match what it documented and was originally intended.
| * Don't accept input to a window if it not visible.Nicholas Marriott2009-07-14
| |
| * Get rid of the PANE_HIDDEN flag in favour of a function, and moving theNicholas Marriott2009-07-14
| | | | | | | | | | | | | | | | decision for whether or not a pane should be drawn out of the layout code and into the redraw code. This is needed for the new layout design, getting it in now to make that easier to work on.
| * Support "alternate screen" mode (terminfo smcup/rmcup) typically used by fullNicholas Marriott2009-07-13
| | | | | | | | | | | | | | screen interactive programs to preserve the screen contents. When activated, it saves a copy of the visible grid and disables scrolling into and resizing out of the history; when deactivated the visible data is restored and the history reenabled.
| * Just appending -l to $SHELL to create a login shell is wrong: -l is not POSIX,Nicholas Marriott2009-07-08
| | | | | | | | | | | | | | | | | | and some people may use shells which do not support it. Instead, make an empty default-command option mean a login shell, and fork it with a - in argv[0] which is the method used by login(1). Also fix the automatic-rename code to handle this correctly and to strip a leading - if present.
| * Rename the global options variables to be shorter and to make session optionsNicholas Marriott2009-07-07
| | | | | | | | | | clear. No functional change, getting this out of the way to make later options changes easier.
| * Miscellaneous unused functions, including one which was basically aNicholas Marriott2009-06-25
| | | | | | | | duplicate. Found by lint.
| * Change find-window and monitor-content to use fnmatch(3). For convenience andNicholas Marriott2009-06-24
| | | | | | | | | | | | | | | | | | compatibility, *s are implicitly added at the start and end of the pattern. Also display the line number and the entire line in the results, and lose the nasty section_string function and the now empty util.c file. Initially from Tiago Cunha.
| * Add a dedicated function to convert a line into a string and use it to ↵Nicholas Marriott2009-06-24
| | | | | | | | simplify the search window function.
| * If a pane is "zombified" (remain-on-exit flag), don't continue to queue key andNicholas Marriott2009-06-23
| | | | | | | | mouse input for it (otherwise they are processed after respawn).
| * strdup the input to putenv to avoid in one case passing a string that is laterNicholas Marriott2009-06-05
| | | | | | | | | | | | freed and in the other const strings. looks sane to millert, ok ray
| * Import tmux, a terminal multiplexor allowing (among other things) a singleNicholas Marriott2009-06-01
| | | | | | | terminal to be switched between several different windows and programs displayed on one terminal be detached from one terminal and moved to another. ok deraadt pirofti
* Sync OpenBSD patchset 1165:Tiago Cunha2012-08-31
| | | | | | | Fix up window reference counting and don't crash if the rename timer fires while the window is dead but still referenced. Fixes problem reported by Michael Scholz.
* Sync OpenBSD patchset 1156:Tiago Cunha2012-08-12
| | | | | | | Instead of numbering choose mode items 0-9a-z and then nothing, number them all and if there are more than 10 use a prompt when 0-9 is pressed. From Thomas Adam.
* Sync OpenBSD patchset 1150:Tiago Cunha2012-07-11
| | | | | xfree is not particularly helpful, remove it. From Thomas Adam.
* Sync OpenBSD patchset 1144:Tiago Cunha2012-07-11
| | | | | Clear flags across all sessions, from Thomas Adam.
* Sync OpenBSD patchset 1127:Tiago Cunha2012-05-30
| | | | | | Use default-shell not _PATH_BSHELL to spawn commands, pointed out by Dennis G?nnewig and Thomas Adam.
* Sync OpenBSD patchset 1091:Tiago Cunha2012-04-10
| | | | | | Do not fire name timer when automatic-rename is off, from Tim Ruehsen a while ago.
* Sync OpenBSD patchset 1087:Tiago Cunha2012-04-10
| | | | | Minor style nits - return ().
* Sync OpenBSD patchset 1084:Tiago Cunha2012-04-10
| | | | | | Add a layout history which can be stepped through with select-layout -u and -U commands (bound to 'u' and 'U' by default).
* Sync OpenBSD patchset 1074:Tiago Cunha2012-03-29
| | | | | Check changes_timer with event_initialized before event_del.