| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
while already doing so.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
reasonable amount (currently width * height * 8 bytes), discard all
output to the terminal and start trying to redraw periodically
instead. Continue with this until the amount of data we are trying to
write falls to a low level again.
This helps to prevent tmux sitting on a huge buffer of data when there
are processes with fast output running inside tmux but the outside
terminal is slow.
A new client_discarded format holds the amount of data that has been
discarded due to this mechanism.
The three variables (when to start this, when to stop, and how often to
redraw) are basically "works for me" at the moment, this is going in to
see how it goes and if it causes problems for anyone else.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
with of the terminal scrolls, tmux needs to redraw the entire pane. This
results in a large amount of output data which can cause slow terminals
to struggle, particularly when many lines are scrolled together quickly.
This can be reduced by only redrawing when tmux doesn't hold any
buffered data for the terminal. If a redraw is required and data is
buffered, the redraw is deferred until all that data is consumed (it is
checked after every event loop, a timer is used to ensure this happens
at some point). While a redraw is pending, no additional data will be
written to the terminal.
The redraw still happens, now it is just pushed back if it is possible
it would just add more data on top of a terminal that is already
behind. This both gives the terminal a chance to catch up, and allows
tmux to process more scrolling (that would require additional redraws)
in the meantime.
Helps with a problem reported by Greg Hurrell.
|
| |
|
|
|
|
|
|
|
| |
falls back to an alternative if the tty name is not available. This is
clearer than overloading the client ttyname member and allows us to
remove the path stored in the tty struct, it should always be the same
as the client.
|
| |
|
| |
|
|
|
|
|
| |
(like load-buffer and save-buffer), from Chris Pickel. Also break the
where-is-this-file code out into its own function for loadb and saveb.
|
|
|
|
| |
debugging.
|
| |
|
|
|
|
|
|
| |
jobs, this means that if the same job is used for different windows or
panes (for example in pane-border-format), it will be run separately for
each pane.
|
|
|
|
|
|
|
|
|
|
|
| |
main issue is that if we have two panes, A with 1002 and B with 1003, we
need to set 1003 outside tmux in order to get all the mouse events, but
then we need to suppress the ones that pane A doesn't want. This is easy
in SGR mouse mode, because buttons == 3 is only used for movement events
(for other events the trailing m/M marks a release instead), but in
normal mouse mode we can't tell so easily. So for that, look at the
previous event instead - if it is drag+release as well, then the current
event is a movement event.
|
| |
|
|
|
|
| |
of exiting it, useful if tmux wasn't exec'd itself. From Jenna Magius.
|
|
|
|
| |
check in server_client_handle_key, and tweak a comment.
|
|
|
|
|
|
| |
to avoid this can set prefix to "none" and bind send-prefix
themselves. Allows C-b t be bound in the copy mode tables again, pointed
out by millert@.
|
|
|
|
|
| |
callback, so move the callback outside of server_client_check_mouse and
use a new special key code to indicate it.
|
|
|
|
| |
KEYC_MOUSE as a placeholder. Reported by Artem Fokin.
|
|
|
|
|
|
|
|
|
|
| |
so too early, before the mouse event was necessarily valid, so could end
up using the pane from the previous mouse event, or the active pane.
It is important that we use the right pane now that different panes can
have different key tables (for copy mode).
Fixes problem reported by Greg Hurrell.
|
| |
|
| |
|
|
|
|
| |
feeds, and do not move cursor to end for full width panes).
|
|
|
|
|
|
|
| |
supports them (that is, if it advertises itself as a VT420 - probably
just xterm). These are the vertical equivalent of the scroll region and
allow much faster scrolling of panes that do not take up the full width
of the terminal.
|
|
|
|
|
|
| |
add a link of winlinks to each window and a pointer to the session to
each winlink. Also rewrite the alerts processing to return to the old
behaviour (alert in any window sets the flag on any winlink).
|
|
|
|
| |
existing hooks to use notifys instead.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
but there is also now a global command queue. Instead of command queues
being dispatched on demand from wherever the command happens to be
added, they are now all dispatched from the top level server
loop. Command queues may now also include callbacks as well as commands,
and items may be inserted after the current command as well as at the end.
This all makes command queues significantly more predictable and easier
to use, and avoids the complex multiple nested command queues used by
source-file, if-shell and friends.
A mass rename of struct cmdq to a better name (cmdq_item probably) is
coming.
|
|
|
|
|
|
| |
support line editing and instead executes a command as soon as a
non-number key is pressed. Add a -N flag to command-prompt for the same
in copy mode. Reported by Theo Buehler.
|
|
|
|
|
| |
fired then triple), and use for select-word and select-line in copy
mode. Inspired by a different solution from Omar Sandoval.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The vi-copy and emacs-copy mode key tables are gone, and instead copy
mode commands are bound in one of two normal key tables ("copy-mode" or
"copy-mode-vi"). Keys are bound to "send-keys -X copy-mode-command". So:
bind -temacs-copy C-Up scroll-up
bind -temacs-copy -R5 WheelUpPane scroll-up
Becomes:
bind -Tcopy-mode C-Up send -X scroll-up
bind -Tcopy-mode WheelUpPane send -N5 -X scroll-up
This allows the full command parser and command set to be used - for
example, we can use the normal command prompt for searching, jumping,
and so on instead of a custom one:
bind -Tcopy-mode C-r command-prompt -p'search up' "send -X search-backward '%%'"
command-prompt also gets a -1 option to only require on key press, which
is needed for jumping.
The plan is to get rid of mode keys entirely, so more to come eventually.
|
| |
|
|
|
|
|
| |
they are enabled and break the actual screen generation code into a
separate function. Fixes problems reported by Romain Francoise.
|
|
|
|
|
| |
SIGWINCH when the size changes rapidly. To help a problem reported by
Rui Pinheiro.
|
|
|
|
| |
command-prompt, rather than always just selecting the pane.
|
| |
|
|
|
|
|
|
|
|
|
| |
pane-border-status is set to "top" or "bottom" (rather than "off"),
every pane has a permanent top or bottom border containing the text from
pane-border-format.
Based on a diff sent long ago by Jonathan Slenders, mostly rewritten and
simplified by me.
|
|
|
|
| |
session attached flag is correct.
|
|
|
|
| |
MouseDragEnd. It can be useful to bind them separately in copy mode.
|
|
|
|
| |
doing the drag end in code. From Stephen Coakley.
|
| |
|
|
|
|
| |
alone and use it to add pane_died and pane_exited hooks.
|
|
|
|
| |
infrastructure that will be needed soon.
|
|
|
|
| |
different key bindings for different sessions and a few other things.
|
|
|
|
| |
would rather bind the prefix in the root table).
|
|
|
|
| |
command name (will also be used for more later).
|
| |
|
|
|
|
|
|
| |
couple of not very useful client hooks. This will eventually let
commands be run at various points and on notifications. Joint work with
Thomas Adam.
|
|
|
|
| |
very large terminals, from Michael Graczyk.
|
|
|
|
|
|
|
|
| |
poor idea that was fairly quickly replaced by SGR mouse input (which is
now widespread). It is impossible to tell the difference between UTF-8
and non-UTF-8 mouse input; since the mouse-utf8 option was removed tmux
has not handled it correctly in any case; and it is ridiculous to have
three different forms of mouse input.
|
|
|
|
|
| |
people who can type ^B c very fast, or who are using tmux inside
something else that buffers.
|