| Commit message (Collapse) | Author | Age |
|
|
|
|
|
| |
Reset attributes as well as scroll region before poll(2) and add a big comment
explaining why.
|
|
|
|
|
|
|
| |
Send SGR0 when initialising the screen. Fixes problems on terminals with BCE
(like putty) if the background colours is non-default when tmux starts. May
also fix problems when resuming a suspended tmux.
|
|
|
|
|
|
|
|
|
| |
Switch the prompt code to return an empty string when the user enters no
response and reserve NULL for an explicit cancel. Change all callbacks to treat
them the same so no functional change.
Also add cancel key bindings to emacs mode which were missing.
|
|
|
|
|
|
|
|
|
| |
vi(1)-style half page scroll in copy and scroll modes. Move the vi full page
scroll key to C-b instead of C-u and use C-u/C-d for half page scrolling with
vi keys. In emacs mode, half page scrolling is bound to M-Up and M-Down.
Suggested by merdely (about a year ago :-)).
|
|
|
|
|
|
|
| |
Scroll by two less than the number of lines in the screen, like emacs, rather
than by the entire screen, to make it easier to pull things out from under the
line indicator. Suggested by claudio.
|
|
|
|
|
|
| |
Disable mode-mouse (mouse in copy/choice mode) by default as it isn't very
useful at the moment and causes confusion.
|
| |
|
|
|
|
|
|
| |
Add a base-index session option to specify the first index checked when looking
for an index for a new window.
|
|
|
|
|
|
|
|
|
|
| |
Allowing copy mode to scroll left and right is annoying, so limit it to the
real screen width. To indicate the cursor is at the end of the line rather than
the cell before, put a '$' in the last cell.
Also clear the selection when the terminal is resized to avoid tmux getting
confused.
|
|
|
|
|
|
| |
Rather than telling the client to exit in the function when creating a new
session detached, let the caller do it. Allows "tmux new -d \; attach" to work.
|
|
|
|
|
| |
_POSIX_VDISABLE is defined.
|
|
|
|
|
|
|
| |
When creating a new session from the command-line where there is an external
terminal, copy the termios(4) special characters and use them for new windows
created in the new session. Suggested by Theo.
|
| |
|
|
|
|
|
| |
Redraw the screen after resizing.
|
|
|
|
|
|
|
|
|
| |
It was originally intended that scroll mode would show content that was
currently off-screen due to resize, but somewhere along the way this got
lost. Restore this behaviour to scroll mode by fixing screen_write_copy to read
up to the saved line length rather than the current screen width. Copy mode
remains unaltered for now.
|
|
|
|
|
|
|
| |
If the client passes zero for the window size in the identify message (which it
can, for example on serial terminals), reset it to 80x25, same as for resize
messages. Problem reported by kettenis@.
|
|
|
|
|
|
|
|
|
| |
A tty context must not be modified as it may be reused to update multiple
clients, so make it const.
Also fix an actual modification which caused a hang when a session was
connected to multiple terminals at least one of which was missing ich/ich1.
|
|
|
|
|
|
| |
When started as the shell, __progname contains a leading -, so hardcode "tmux"
for socket path and log files, and strip it when working out the shell.
|
|
|
|
|
|
|
|
| |
imsg closes the fd after sending, so dup() STDIN_FILENO before passing it to
the parent, otherwise TIOCGWINSZ will fail when the window is resized (that
could actually be moved into the server but this is more future-proof and
avoids breaking the protocol).
|
|
|
|
|
|
|
|
| |
Initialise log_fd to -1, prevents spurious disconnection of the client when it
ends up as fd 0 (likely if the server is started with "tmux start").
Also add some extra debugging messages to server.c.
|
|
|
|
|
|
|
|
|
|
|
| |
Have the client pass its stdin fd to the server when identifying itself and
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.
|
|
|
|
|
| |
Add a TTY_OPENED flag and tidy a little.
|
|
|
|
|
|
| |
Drop the no_stop argument to tty_close and tty_free in favour of a flag in the
tty struct.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Switch tmux to use imsg. This is the last major change to make the
client-server protocol more resilient and make the protocol versioning work
properly. In future, the only things requiring a protocol version bump will be
changes in the message structs, and (when both client and server have this
change) mixing different versions should nicely report an error message.
As a side effect this also makes the code tidier, fixes a problem with the way
errors reported during server startup were handled, and supports fd passing
(which will be used in future).
Looked over by eric@, thanks.
Please note that mixing a client with this change with an older server or vice
versa may cause tmux to crash or hang - tmux should be completely exited before
upgrading.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Add flags for 1+2 and 2 arguments to the generic target code, use it for
cmd-set-environment/option/window-option and remove the generic options
parsing.
|
| |
|
| |
|
|
|
|
|
|
| |
No arguments are the same as new-session and this requires the environment to
be sent, so set that flag too when argc == 0.
|
|
|
|
|
|
|
|
| |
Reset the attributes after drawing all or part of the screen, and reset the
region before poll(2). This reduces (but does not eliminate) the chance of the
attributes not being normal if tmux is disconnected without warning (ssh ~.,
reboot from inside, etc).
|
|
|
|
|
| |
Use the right source and destination lines in grid_duplicate_lines.
|
|
|
|
|
| |
some minor tweaks; ok nicm
|
| |
|
|
|
|
|
| |
zap trailing whitespace;
|
|
|
|
|
| |
Minor language tweaks, change which key bindings are summarised.
|
| |
|
|
|
|
|
| |
Nuke a dead variable found with clang and an unused declaration with lint.
|
|
|
|
|
|
| |
Move the key bindings section to near the start, mention attach/detach in the
first section, and another couple of tweaks. Based on a diff from Theo.
|
|
|
|
|
|
| |
Don't leak in the (rare) case of an invalid command at the end of a file not
terminated by a \n.
|
|
|
|
|
| |
Use a temporary variable for strdup of const char *.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Infrastructure and commands to manage the environment for processes started
within tmux.
There is a global environment, copied from the external environment when the
server is started and each session 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.
|
|
|
|
|
| |
Tidy function a little by using a temporary variable.
|
| |
|
|
|
|
|
|
| |
Options to set the colours and attributes for status-left/-right. From Thomas
Adam, thanks.
|
|
|
|
|
|
|
| |
Add a flags member to the grid_line struct and use it to differentiate lines
wrapped at the screen edge from those terminated by a newline. Then use this
when copying to combine wrapped lines together into one.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change the way the grid is stored, previously it was:
- a two-dimensional array of cells;
- a two-dimensional array of utf8 data;
- an array of line lengths.
Now it is a single array of a new struct grid_line each of which represents a
line and contains the length and an array of cells and an array of utf8 data.
This will make it easier to add additional per-line members, such as flags.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If there is an error in the configuration file, don't just exit(1) as this can
cause the client to hang. Instead, send the error message, then mark the client
as bad and start a normal shutdown so the server exits once the error is
written.
This also allows some code duplicating daemon(3) to be trimmed and logging to
begin earlier.
Prompted by Theo noticing the behaviour on error wasn't documented.
|