summaryrefslogtreecommitdiffstats
path: root/window.c
AgeCommit message (Collapse)Author
2021-06-10Change resize timers and flags into one timer and a queue which isnicm
simpler and fixes problems with vim when resized multiple times. GitHub issue 2677.
2021-06-10Include current client in size calculation for new sessions, GitHubnicm
issue 2662.
2021-03-11Add split-window -Z to start the pane zoomed, GitHub issue 2591.nicm
2021-02-22There are many format variables now so allocating all the default onesnicm
each time a tree is created is too expensive. Instead, convert them all into callbacks and put them in a static table so they only allocate on demand. The tree remains for the moment for extra (non-default) variables added by for example copy mode or popups. Also reduce expensive calls to localtime_r/strftime. GitHub issue 2253.
2021-01-20Change so that window_flags escapes # automatically which means configsnicm
will not have to change. A new format window_raw_flags contains the old unescaped version.
2020-12-15Make synchronize-panes a pane option and add -U flag to set-option tonicm
unset an option on all panes. GitHub issue 2491 from Rostislav Nesin.
2020-06-13Add -b flags to insert a window before (like the existing -a for after)nicm
to break-pane, move-window, new-window. GitHub issue 2261.
2020-06-05Change how panes are resized so that the code is clearer and if the panenicm
is resized multiple times during one event loop, it is forced to resize at the end. Also don't zoom/unzoom in switch-client if the pane hasn't changed. GitHub issue 2260.
2020-06-01Instead of sending all data to control mode clients as fast as possible,nicm
add a limit of how much data will be sent to the client and try to use it for panes with some degree of fairness. GitHub issue 2217, with George Nachman.
2020-05-21Support code for control mode flow control: allow clients to havenicm
separate offsets (used and acknowleged) into the pane buffers; turn off reading from panes when no clients can accept the data; and add a -A flag to refresh-client to let clients turn receiving a pane on and off.
2020-05-16Move lazy resize from the pane to the window, there is no point innicm
resizing the window unless it is the current window, and if we do and don't resize the pane until later there are problems if the size changes from A to B then back to A.
2020-05-16Do not hoke into struct window_pane from the tty code and instead setnicm
everything up in tty_ctx. Provide a way to initialize the tty_ctx from a callback and use it to let popups draw directly through input_parse in the same way as panes do, rather than forcing a full redraw on every change.
2020-05-16Drop having a separate type for style options and make them all strings,nicm
which allows formats to be expanded. Any styles without a '#{' are still validated when they are set but any with a '#{' are not. Formats are not expanded usefully in many cases yet, that will be changed later. To make this work, a few other changes: - set-option -a with a style option automatically appends a ",". - OSC 10 and 11 don't set the window-style option anymore, instead the fg and bg are stored in the pane struct and act as the defaults that can be overridden by window-style. - status-fg and -bg now override status-style instead of trying to keep them in sync.
2020-05-16Use a grid cell not a style for the pane style.nicm
2020-04-13Make client -c and -t handling common in cmd-queue.c and try to benicm
clearer about whether the client is the target client (must have a session) or not.
2020-04-13Also move cmdq_item and cmdq_list into cmd-queue.c (this is to make itsnicm
use more clearly defined and preparation for some future work).
2020-04-10Now that copy mode copies the pane content rather than keeping anicm
reference to it, it isn't necessary that the pane in copy mode is the same as the one copying from. Add a -s flag to copy-mode to specify a different pane for the source content. This means it is possible to view two places in a pane's history at the same time in different panes, or copy from a pane's history into an editor or shell in the same pane. From Anindya Mukherjee.
2020-04-09Pass correct flags to fnmatch.nicm
2020-04-06Change copy mode to make copy of the pane history so it does not need tonicm
freeze updates (which does not play nicely with some applications, a longstanding problem) and will allow some other changes later. From Anindya Mukherjee.
2020-03-31Move alternate screen into the screen rather than the pane.nicm
2020-03-19Change input path so it doesn't require a pane.nicm
2020-03-16FIx type for %u, from Thomas Adam.nicm
2020-02-14Fix top/bottom pane calculation with pane border status enabled,nicm
reported by Stanislav Spassov.
2020-01-13Treat plausible but invalid keys (like C-BSpace) as literal like anynicm
other unrecognised string passed to send-keys. Reported by Anthony Sottile in GitHub issue 2049.
2019-12-12Rewrite the code for reading and writing files. Now, if the client isnicm
not attached, the server process asks it to open the file, similar to how works for stdin, stdout, stderr. This makes special files like /dev/fd/X work (used by some shells). stdin, stdout and stderr and control mode are now just special cases of the same mechanism. This will also make it easier to use for other commands that read files such as source-file.
2019-11-28Make a best effort to set xpixel and ypixel for each pane and addnicm
formats for them.
2019-10-28Start with empty rather than NULL window name to avoid NULL printf ifnicm
window_name is evaluated early. Reported by Mikolaj Kucharski.
2019-09-10Make client exit if pane where input is going is closed.nicm
2019-08-28The resize event was never deciding to actually resize the pane if therenicm
was output in the pane faster than the timer would fire, so change how it works to only defer the timer again if the pane was actually resized within the last timer period. Reported by James Tai in GitHub issue 1880.
2019-08-14Add -Z flag to rotate-window, select-pane, swap-pane, switch-client tonicm
preserve zoomed state. GitHub issue 1839.
2019-06-30Do not double free window if pane fails to start.nicm
2019-06-26Fix a typo in window_pane_find_down (w not wp) and a missing PANE_STATUS_TOP.nicm
2019-06-26Log window and pane resizes.nicm
2019-06-26Add #define for the pane status line option position numbers.nicm
2019-06-24Trim trailing spaces when matching.nicm
2019-06-20allow-rename and alternate-screen can be pane options.nicm
2019-06-20Add a per-pane option set. Pane options inherit from window options (sonicm
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.
2019-06-18Add a cmdq_continue function rather than twiddling the flag directly.nicm
2019-06-13Add regular expression support for the format search, match andnicm
substitute modifiers.
2019-06-09Exiting alternate screen mode should restore cursor position andnicm
attributes even if already outside alternate screen mode. GitHub issue 1789.
2019-05-30Remove a leftover abort and some fixes from cppcheck.nicm
2019-05-07Do not use evbuffer_add_buffer because it is destructive and doesn'tnicm
work in newer libevent.
2019-05-03Allow panes to be empty (no command), output can be piped to them withnicm
split-window or display-message -I.
2019-04-26Destroy panes before options to avoid crash when forced into a mode by anicm
hook.
2019-04-17Break new window and pane creation common code from various commands andnicm
window.c into a separate file spawn.c.
2019-03-18Free temporary screens when writing format.nicm
2019-03-18Extend the #[] style syntax and use that together with previous formatnicm
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.
2019-03-18Mode init needs to be fired with the mode on the list or it will not benicm
resized correctly.
2019-03-18Add format variables for the default formats for the various modesnicm
(tree_mode_format and so on) and add a -a flag to display-message to list variables with values.
2019-03-14Add a wrapper (struct style) around styles rather than using thenicm
grid_cell directly. There will be some non-cell members soon.