aboutsummaryrefslogtreecommitdiff
path: root/window.c
Commit message (Collapse)AuthorAge
* allow-rename and alternate-screen can be pane options.nicm2019-06-20
|
* Add a per-pane option set. Pane options inherit from window options (sonicm2019-06-20
| | | | | | | | | | | | there should be no change to existing behaviour) and are set and shown with set-option -p and show-options -p. Change remain-on-exit and window-style/window-active-style to be pane options (some others will be changed later). This makes select-pane -P and -g unnecessary so no longer document them (they still work) and no longer document set-window-option and show-window-options in favour of set-option -w and show-options -w.
* Add a cmdq_continue function rather than twiddling the flag directly.nicm2019-06-18
|
* Add regular expression support for the format search, match andnicm2019-06-13
| | | | substitute modifiers.
* Exiting alternate screen mode should restore cursor position andnicm2019-06-09
| | | | | attributes even if already outside alternate screen mode. GitHub issue 1789.
* Remove a leftover abort and some fixes from cppcheck.nicm2019-05-30
|
* Do not use evbuffer_add_buffer because it is destructive and doesn'tnicm2019-05-07
| | | | work in newer libevent.
* Allow panes to be empty (no command), output can be piped to them withnicm2019-05-03
| | | | split-window or display-message -I.
* Destroy panes before options to avoid crash when forced into a mode by anicm2019-04-26
| | | | hook.
* Break new window and pane creation common code from various commands andnicm2019-04-17
| | | | window.c into a separate file spawn.c.
* Free temporary screens when writing format.nicm2019-03-18
|
* Extend the #[] style syntax and use that together with previous formatnicm2019-03-18
| | | | | | | | | | | | | | | | | | | | changes to allow the status line to be entirely configured with a single option. Now that it is possible to configure their content, enable the existing code that lets the status line be multiple lines in height. The status option can now take a value of 2, 3, 4 or 5 (as well as the previous on or off) to configure more than one line. The new status-format array option configures the format of each line, the default just references the existing status-* options, although some of the more obscure status options may be eliminated in time. Additions to the #[] syntax are: "align" to specify alignment (left, centre, right), "list" for the window list and "range" to configure ranges of text for the mouse bindings. The "align" keyword can also be used to specify alignment of entries in tree mode and the pane status lines.
* Mode init needs to be fired with the mode on the list or it will not benicm2019-03-18
| | | | resized correctly.
* Add format variables for the default formats for the various modesnicm2019-03-18
| | | | | (tree_mode_format and so on) and add a -a flag to display-message to list variables with values.
* Add a wrapper (struct style) around styles rather than using thenicm2019-03-14
| | | | grid_cell directly. There will be some non-cell members soon.
* Fix resizing of control clients, should be ignored until SIZECHANGED flag set.nicm2019-03-12
|
* Allow multiple modes to be open in a pane. A stack of open modes is keptnicm2019-03-12
| | | | | | and the previous restored when the top is exited. If a mode that is already on the stack is entered, the existing instance is moved to the top as the active mode rather than being opened new.
* Add a separate mode struct for the active window mode if any.nicm2019-03-07
|
* Pass window into mode functions.nicm2018-12-18
|
* Clear PANE_EXITED flag when starting new child process in case the panenicm2018-11-30
| | | | has been respawned.
* evbuffer_new and bufferevent_new can both fail (when malloc fails) andnicm2018-11-19
| | | | return NULL. GitHub issue 1547.
* Support for windows larger than visible on the attached client. This hasnicm2018-10-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | been a limitation for a long time. There are two new options, window-size and default-size, and a new command, resize-window. The force-width and force-height options and the session_width and session_height formats have been removed. The new window-size option tells tmux how to work out the size of windows: largest means it picks the size of the largest session, smallest the smallest session (similar to the old behaviour) and manual means that it does not automatically resize windows. The default is currently largest but this may change. aggressive-resize modifies the choice of session for largest and smallest as it did before. If a window is in a session attached to a client that is too small, only part of the window is shown. tmux attempts to keep the cursor visible, so the part of the window displayed is changed as the cursor moves (with a small delay, to try and avoid excess redrawing when applications redraw status lines or similar that are not currently visible). The offset of the visible portion of the window is shown in status-right. Drawing windows which are larger than the client is not as efficient as those which fit, particularly when the cursor moves, so it is recommended to avoid using this on slow machines or networks (set window-size to smallest or manual). The resize-window command can be used to resize a window manually. If it is used, the window-size option is automatically set to manual for the window (undo this with "setw -u window-size"). resize-window works in a similar way to resize-pane (-U -D -L -R -x -y flags) but also has -a and -A flags. -a sets the window to the size of the smallest client (what it would be if window-size was smallest) and -A the largest. For the same behaviour as force-width or force-height, use resize-window -x or -y, and "setw -u window-size" to revert to automatic sizing.. If the global window-size option is set to manual, the default-size option is used for new windows. If -x or -y is used with new-session, that sets the default-size option for the new session. The maximum size of a window is 10000x10000. But expect applications to complain and much higher memory use if making a window excessively big. The minimum size is the size required for the current layout including borders. The refresh-client command can be used to pan around a window, -U -D -L -R moves up, down, left or right and -c returns to automatic cursor tracking. The position is reset when the current window is changed.
* calloc the mode data instead of malloc and initialize everything.nicm2018-08-05
|
* Log command arguments.nicm2018-08-02
|
* Make server_client_get_cwd used (almost) everywhere we need to work outnicm2018-05-24
| | | | | the cwd, and do not fall back to "." as it is pretty useless. GitHub issue 1331.
* Improve logging of the environment etc for new panes.nicm2018-05-24
|
* Insert full size panes at the right position, from KOIE Hidetaka innicm2018-03-16
| | | | GitHub issue 1284.
* If we successfully change the directory, set PWD too to give the shell anicm2017-11-09
| | | | hint in case of symlinks.
* Show exit status and time in the remain-on-exit pane text, mostly fromnicm2017-10-12
| | | | Timo Boettcher in GitHub issue 1103.
* Do not forbid targets to specify non-visible panes - the checks fornicm2017-08-28
| | | | visibility are better where the target is used. GitHub issue 1049.
* Because ignore SIGCHLD early, letting signal_del restore it doesn't worknicm2017-07-14
| | | | | correctly, so set it explicitly back to default (and the others for good measure).
* Block signals between forking and clearing signal handlers (or callingnicm2017-07-12
| | | | | | event_reinit) - if the child gets a signal and fires the libevent signal handler during this period it could write a signal into the parent's signal pipe. GitHub issue 1001 from Aaron van Geffen.
* Move signal code into proc.c.nicm2017-07-12
|
* Change previous to not wait for both process exit and pty close -nicm2017-07-03
| | | | | | instead if there is a pipe-pane active, do not exit until all data is read (including any libevent hasn't seen yet). Fixes problem reported by Theo Buehler and still seems to solve the original issue.
* Do not close panes until process has exited and any outstanding datanicm2017-07-03
| | | | has been written to the pipe-pane event if there is one. GitHub issue 991.
* Apply the xterm key flag when needed for send-keys, fixes problemnicm2017-06-28
| | | | reported by Franky Spamschleuder.
* Be more strict about escape sequences that rename windows or set titles:nicm2017-06-04
| | | | | ignore any that not valid UTF-8 outright, and for good measure pass the result through our UTF-8-aware vis(3).
* Because we defer actually resizing applications (calling TIOCSWINSZ)nicm2017-05-31
| | | | | | | | | | | | | | | | | until the end of the server loop, tmux may have gone through several internal resizes in between. This can be a problem if the final size is the same as the initial size (what the application things it currently is), because the application may choose not to redraw, assuming the screen state is unchanged, when in fact tmux has thrown away parts of the screen, assuming the application will redraw them. To avoid this, do an extra resize if the new size is the same size as the initial size. This should force the application to redraw when tmux needs it to, while retaining the benefits of deferring (so we now resize at most two times instead of at most one - and only two very rarely). Fixes a problem with break-pane and zoomed panes reported by Michal Mazurek.
* Rewrite of choose mode, both to simplify and tidy the code and to addnicm2017-05-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | some modern features. Now the common code is in mode-tree.c, which provides an API used by the three modes now separated into window-{buffer,client,tree}.c. Buffer mode shows buffers, client mode clients and tree mode a tree of sessions, windows and panes. Each mode has a common set of key bindings plus a few that are specific to the mode. Other changes are: - each mode has a preview pane: for buffers this is the buffer content (very useful), for others it is a preview of the pane; - items may be sorted in different ways ('O' key); - multiple items may be tagged and an operation applied to all of them (for example, to delete multiple buffers at once); - in tree mode a command may be run on the selected item (session, window, pane) or on tagged items (key ':'); - displayed items may be filtered in tree mode by using a format (this is used to implement find-window) (key 'f'); - the custom format (-F) for the display is no longer available; - shortcut keys change from 0-9, a-z, A-Z which was always a bit weird with keys used for other uses to 0-9, M-a to M-z. Now that the code is simpler, other improvements will come later. Primary key bindings for each mode are documented under the commands in the man page (choose-buffer, choose-client, choose-tree). Parts written by Thomas Adam.
* Add ||, && format operators and C: to search pane content.nicm2017-05-29
|
* Store copy mode search string in pane so search-again command works evennicm2017-05-12
| | | | | if you exit and reenter copy mode (it doesn't remember the position, just the search string), suggested by espie@.
* Some new notifications, mainly for active pane and current window andnicm2017-05-04
| | | | | | | | | | | session: pane-mode-changed window-pane-changed client-session-changed session-window-changed From Joshua Brot.
* Log what is happening with window and session reference counts much morenicm2017-04-28
| | | | obviously.
* Remove a reference from the right window when removing from a winlink'snicm2017-04-28
| | | | list.
* Use fdforkpty() instead of our own unwrapped versions.nicm2017-04-20
|
* Now that struct winlink has a session pointer, can remove some arguments.nicm2017-04-20
|
* There is no real need for window_printable_flags to allocate, make itnicm2017-04-20
| | | | return a buffer from the stack.
* Fix pane movement by direction (up, down, left, right) whennicm2017-03-21
| | | | pane-border-status is set, from KOIE Hidetaka.
* Log where panes are created.nicm2017-03-13
|
* If splitw -b is used, insert the new pane before the current one in thenicm2017-02-27
| | | | | | pane list. This means the numbering is in order (for example for display-panes) and fixes a problem with redrawing the active pane borders.