Commit Graph

643 Commits (master)

Author SHA1 Message Date
Thomas Adam 92c8cc17c3 Merge branch 'obsd-master' 2020-06-05 14:01:19 +01:00
nicm d919fa1ed0 Change how panes are resized so that the code is clearer and if the pane
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-05 11:20:51 +00:00
Thomas Adam 91e40de2da Merge branch 'obsd-master' 2020-06-01 12:01:20 +01:00
nicm a54a88edd6 Instead of sending all data to control mode clients as fast as possible,
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-06-01 09:43:00 +00:00
Thomas Adam 40126ee96c Merge branch 'obsd-master' 2020-05-21 08:55:31 +01:00
nicm 31e3f2d530 Support code for control mode flow control: allow clients to have
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-21 07:24:13 +00:00
nicm 574a9e4b6c Move lazy resize from the pane to the window, there is no point in
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-16 16:50:55 +00:00
nicm 9605b080f6 Do not hoke into struct window_pane from the tty code and instead set
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-16 15:34:08 +00:00
nicm f03b61131b Drop having a separate type for style options and make them all strings,
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-16 15:01:30 +00:00
nicm 5bf96c2f2c Use a grid cell not a style for the pane style. 2020-05-16 14:53:23 +00:00
Nicholas Marriott 57fe03dc5a Move lazy resize from the pane to the window, there is no point in 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-16 14:57:36 +01:00
Nicholas Marriott 340fd691cb Separate key flags and modifiers, log key flags, make the "xterm" flag more
explicit and fix M- keys with a leading escape.
2020-05-15 12:16:41 +01:00
Nicholas Marriott 8110c7a25f Do not hoke into struct window_pane from the tty code and instead set
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-01 17:01:36 +01:00
Nicholas Marriott 3d76748161 Need to redraw borders now when some things change. Also change default so that
the active border colour is different in a mode or with synchronize-panes on.
2020-04-29 08:55:21 +01:00
Nicholas Marriott 1f8256fc50 Drop having a separate type for style options and make them all strings, 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-04-28 13:50:07 +01:00
Nicholas Marriott 79b4d83952 Use a grid cell not a style for the pane style. 2020-04-27 15:15:12 +01:00
Thomas Adam 653a159225 Merge branch 'obsd-master' 2020-04-14 00:01:41 +01:00
nicm 3f7f9a0e20 Make client -c and -t handling common in cmd-queue.c and try to be
clearer about whether the client is the target client (must have a
session) or not.
2020-04-13 20:51:57 +00:00
Thomas Adam 8f2b5d714a Merge branch 'obsd-master' 2020-04-13 14:01:45 +01:00
nicm 04cdd03525 Also move cmdq_item and cmdq_list into cmd-queue.c (this is to make its
use more clearly defined and preparation for some future work).
2020-04-13 10:59:58 +00:00
Thomas Adam b117c3b812 Merge branch 'obsd-master' 2020-04-13 10:30:00 +01:00
nicm c0602f357d Now that copy mode copies the pane content rather than keeping a
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-10 07:44:26 +00:00
Thomas Adam 52e3d960e7 Merge branch 'obsd-master' 2020-04-09 16:01:45 +01:00
nicm c4d0089edb Pass correct flags to fnmatch. 2020-04-09 13:49:21 +00:00
Thomas Adam 8fa0b0cd26 Merge branch 'obsd-master' 2020-04-06 20:01:33 +01:00
nicm 77b827f879 Change copy mode to make copy of the pane history so it does not need to
freeze updates (which does not play nicely with some applications, a
longstanding problem) and will allow some other changes later. From
Anindya Mukherjee.
2020-04-06 17:51:34 +00:00
Thomas Adam c9cd8f9b5d Merge branch 'obsd-master' 2020-03-31 10:01:29 +01:00
nicm 3bbd66c013 Move alternate screen into the screen rather than the pane. 2020-03-31 07:00:34 +00:00
Thomas Adam 35c4897d8f Merge branch 'obsd-master' 2020-03-19 16:01:29 +00:00
nicm de34436d4c Change input path so it doesn't require a pane. 2020-03-19 14:03:48 +00:00
Thomas Adam 45be93f604 Merge branch 'obsd-master' 2020-03-16 10:01:27 +00:00
nicm 9abeff7f0b FIx type for %u, from Thomas Adam. 2020-03-16 08:23:24 +00:00
Thomas Adam c391d50cbb Merge branch 'obsd-master' 2020-02-14 16:01:26 +00:00
nicm 58b47bf01b Fix top/bottom pane calculation with pane border status enabled,
reported by Stanislav Spassov.
2020-02-14 13:57:58 +00:00
Thomas Adam 8457f54edc Merge branch 'obsd-master' 2020-01-13 10:01:27 +00:00
nicm 04eee2410d Treat plausible but invalid keys (like C-BSpace) as literal like any
other unrecognised string passed to send-keys. Reported by Anthony
Sottile in GitHub issue 2049.
2020-01-13 07:51:54 +00:00
Thomas Adam 7922f4ee7b Merge branch 'obsd-master' 2019-12-12 14:33:47 +00:00
nicm c284ebe0ad Rewrite the code for reading and writing files. Now, if the client is
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-12-12 11:39:56 +00:00
Nicholas Marriott e00730d149 Fix bad merge. 2019-11-28 12:30:43 +00:00
Thomas Adam 5f5f029e3b Merge branch 'obsd-master' 2019-11-28 12:18:41 +00:00
nicm 2349b1dbef Make a best effort to set xpixel and ypixel for each pane and add
formats for them.
2019-11-28 09:45:15 +00:00
Thomas Adam 57948a0dfc Merge branch 'obsd-master' 2019-10-28 10:01:25 +00:00
nicm ccdebead79 Start with empty rather than NULL window name to avoid NULL printf if
window_name is evaluated early. Reported by Mikolaj Kucharski.
2019-10-28 09:07:59 +00:00
Thomas Adam 658ecb0777 Merge branch 'obsd-master' 2019-09-11 16:48:58 +01:00
nicm 0feae4d8ae Make client exit if pane where input is going is closed. 2019-09-10 19:35:34 +00:00
Thomas Adam 4fa1f961f3 Merge branch 'obsd-master' 2019-08-28 20:02:24 +01:00
nicm df0334d3b3 The resize event was never deciding to actually resize the pane if there
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-28 07:34:32 +00:00
Thomas Adam ed0f2831b4 Merge branch 'obsd-master' 2019-08-15 11:02:48 +01:00
nicm 0f243f0388 Add -Z flag to rotate-window, select-pane, swap-pane, switch-client to
preserve zoomed state. GitHub issue 1839.
2019-08-14 09:58:31 +00:00
Thomas Adam abcd4bd246 Merge branch 'obsd-master' 2019-06-30 21:02:26 +01:00
nicm cf30e0f935 Do not double free window if pane fails to start. 2019-06-30 19:21:53 +00:00
Thomas Adam c4a9299956 Merge branch 'obsd-master' 2019-06-26 21:02:26 +01:00
nicm 3a6d90adad Fix a typo in window_pane_find_down (w not wp) and a missing PANE_STATUS_TOP. 2019-06-26 18:44:22 +00:00
Thomas Adam f797ac9ff6 Merge branch 'obsd-master' 2019-06-26 15:02:26 +01:00
nicm c599ad63f8 Log window and pane resizes. 2019-06-26 13:05:24 +00:00
nicm d83f356218 Add #define for the pane status line option position numbers. 2019-06-26 13:03:47 +00:00
Thomas Adam c14b0d7c00 Merge branch 'obsd-master' 2019-06-24 11:02:26 +01:00
nicm bdab595095 Trim trailing spaces when matching. 2019-06-24 08:20:02 +00:00
Thomas Adam 4a44ae06bf Merge branch 'obsd-master' 2019-06-20 17:02:26 +01:00
Thomas Adam f8ad72b2ee Merge branch 'obsd-master' 2019-06-20 15:02:26 +01:00
nicm fc1df91e03 allow-rename and alternate-screen can be pane options. 2019-06-20 13:40:22 +00:00
nicm 5f92f92908 Add a per-pane option set. Pane options inherit from window options (so
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-20 11:59:59 +00:00
Thomas Adam ee9bc355f5 Merge branch 'obsd-master' 2019-06-18 13:02:28 +01:00
nicm 9272fe36e2 Add a cmdq_continue function rather than twiddling the flag directly. 2019-06-18 11:08:42 +00:00
Thomas Adam 5e9757b30b Merge branch 'obsd-master' 2019-06-14 15:51:09 +01:00
nicm 3e72e98e3b Add regular expression support for the format search, match and
substitute modifiers.
2019-06-13 19:46:00 +00:00
Thomas Adam d9ad461b5e Merge branch 'obsd-master' 2019-06-09 09:02:26 +01:00
nicm 915097d312 Exiting alternate screen mode should restore cursor position and
attributes even if already outside alternate screen mode. GitHub issue
1789.
2019-06-09 06:50:24 +00:00
Thomas Adam 41b8bb4eef Merge branch 'obsd-master' 2019-05-30 23:02:27 +01:00
nicm b26523c26d Remove a leftover abort and some fixes from cppcheck. 2019-05-30 20:54:03 +00:00
Thomas Adam d9767b8112 Merge branch 'obsd-master' 2019-05-07 13:02:27 +01:00
nicm 69440d19b7 Do not use evbuffer_add_buffer because it is destructive and doesn't
work in newer libevent.
2019-05-07 10:25:15 +00:00
Thomas Adam d4177e954c Merge branch 'obsd-master' 2019-05-03 23:02:28 +01:00
nicm 9f75635596 Allow panes to be empty (no command), output can be piped to them with
split-window or display-message -I.
2019-05-03 20:44:24 +00:00
Thomas Adam 85f09f9a4c Merge branch 'obsd-master' 2019-04-26 13:02:37 +01:00
nicm f1e14f86c4 Destroy panes before options to avoid crash when forced into a mode by a
hook.
2019-04-26 10:24:26 +00:00
nicm 78287e27c8 Break new window and pane creation common code from various commands and
window.c into a separate file spawn.c.
2019-04-17 14:37:48 +00:00
Nicholas Marriott 5ece386cdf Break new window and pane creation common code from various commands and
window.c into a separate file spawn.c.
2019-04-07 13:01:03 +01:00
Thomas Adam 073d439965 Merge branch 'obsd-master' 2019-03-19 00:02:39 +00:00
nicm 0406ec0ec2 Free temporary screens when writing format. 2019-03-18 21:55:04 +00:00
Thomas Adam 962f255ee8 Merge branch 'obsd-master' 2019-03-18 21:24:49 +00:00
nicm 979313832c Extend the #[] style syntax and use that together with previous format
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-18 20:53:33 +00:00
Thomas Adam 1d6fe43c7b Merge branch 'obsd-master' 2019-03-18 18:02:38 +00:00
Thomas Adam 4cbf596dc5 Merge branch 'obsd-master' 2019-03-18 15:30:55 +00:00
nicm d738d51688 Mode init needs to be fired with the mode on the list or it will not be
resized correctly.
2019-03-18 15:25:36 +00:00
nicm 2628af573d Add format variables for the default formats for the various modes
(tree_mode_format and so on) and add a -a flag to display-message to
list variables with values.
2019-03-18 14:10:25 +00:00
Thomas Adam 0b32fa81b6 Merge branch 'obsd-master' 2019-03-14 12:02:41 +00:00
nicm 13f9a061ac Add a wrapper (struct style) around styles rather than using the
grid_cell directly. There will be some non-cell members soon.
2019-03-14 09:53:52 +00:00
Thomas Adam 162d3cb1f4 Merge branch 'obsd-master' 2019-03-12 16:02:37 +00:00
nicm 028f9d1d87 Fix resizing of control clients, should be ignored until SIZECHANGED flag set. 2019-03-12 13:56:30 +00:00
Thomas Adam 3ec05e9405 Merge branch 'obsd-master' 2019-03-12 12:02:42 +00:00
nicm 3f6bfbaf2b Allow multiple modes to be open in a pane. A stack of open modes is kept
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.
2019-03-12 11:16:49 +00:00
Thomas Adam 349aeb806a Merge branch 'obsd-master' 2019-03-07 22:02:42 +00:00
nicm f98c66ece8 Add a separate mode struct for the active window mode if any. 2019-03-07 20:24:21 +00:00
Thomas Adam c9d482ab48 Merge branch 'obsd-master' 2018-12-18 14:02:40 +00:00
nicm bde0224deb Pass window into mode functions. 2018-12-18 13:20:44 +00:00
Thomas Adam 1c5093c1c4 Merge branch 'obsd-master' 2018-11-30 10:02:37 +00:00
nicm 67254ed8df Clear PANE_EXITED flag when starting new child process in case the pane
has been respawned.
2018-11-30 08:44:40 +00:00
Thomas Adam efd01f3bfd Merge branch 'obsd-master' 2018-11-19 14:02:41 +00:00
nicm 749f67b7d8 evbuffer_new and bufferevent_new can both fail (when malloc fails) and
return NULL. GitHub issue 1547.
2018-11-19 13:35:40 +00:00