nicm
d98d316903
Some new notifications, mainly for active pane and current window and
...
session:
pane-mode-changed
window-pane-changed
client-session-changed
session-window-changed
From Joshua Brot.
2017-05-04 07:16:43 +00:00
Thomas Adam
97ecb4f9d8
Merge branch 'obsd-master'
2017-05-03 08:01:14 +01:00
nicm
ca6a121e63
Add a format for the last search string in copy mode and fix the prompt
...
so it can work when in -I, suggested by Suraj N Kurapati.
2017-05-03 05:53:34 +00:00
Thomas Adam
e354b0e40f
Merge branch 'obsd-master'
2017-05-01 14:01:14 +01:00
nicm
0ccfb61bb0
In order that people can use formats like #D in #() in the status line
...
and not have to wait for an update when they change pane, we allow
commands to run more than once a second if the expanded form
changes. Unfortunately this can mean them being run far too often
(pretty much continually) when multiple clients exist, because some
formats (including #D) will always differ between clients.
To avoid this, give each client its own tree of jobs which means that
the same command will be different instances for each client - similar
to how we have the tag to separate commands for different panes.
GitHub issue 889; test case reported by Paul Johnson.
2017-05-01 12:20:55 +00:00
Thomas Adam
3a8e56b282
Merge branch 'obsd-master'
2017-04-28 22:01:18 +01:00
nicm
0f2f783584
Log what is happening with window and session reference counts much more
...
obviously.
2017-04-28 19:13:55 +00:00
Thomas Adam
0daeefefdb
Merge branch 'obsd-master'
2017-04-25 20:01:11 +01:00
nicm
d520dae6ac
Make full width panes try to play more nicely with terminal copy and
...
paste by avoiding explicit line wraps if we think the terminal will wrap
anyway.
2017-04-25 18:30:29 +00:00
nicm
03d01eabb5
When we write out the grid including escape sequences, an SGR 0 needs to
...
cause the colours to be written again. Also treat colours separately
from attributes so that RGB colours will work.
2017-04-25 18:20:51 +00:00
Thomas Adam
65d6278f88
Merge branch 'obsd-master'
2017-04-25 18:01:11 +01:00
nicm
c48d09ec88
Do not update TERM into config file parsing has finished.
2017-04-25 15:35:10 +00:00
Thomas Adam
e802b683ea
Merge branch 'obsd-master'
2017-04-22 12:01:19 +01:00
nicm
ee45a8a149
Get rid of the extra layer of flags and cmd_prepare() and just store the
...
CMD_FIND_* flags in the cmd_entry and call it for the command. Commands
with special requirements call it themselves and update the target for
hooks to use.
2017-04-22 10:22:39 +00:00
Thomas Adam
fd13731049
Merge branch 'obsd-master'
2017-04-21 22:01:14 +01:00
nicm
efaf4c16cf
Make the cmd_find_* functions more obvious when looking for a client,
...
rather than having it inside other functions. Should be no change to the
way targets are resolved just yet.
2017-04-21 20:26:34 +00:00
Thomas Adam
1f209ed030
Merge branch 'obsd-master'
2017-04-21 20:01:18 +01:00
nicm
3c876235cc
Style nits and an unused struct.
2017-04-21 18:18:17 +00:00
nicm
afa4e3ed9c
Add cmd_find_from_winlink_pane and use it in a couple of places, and
...
make functions that can't fail void.
2017-04-21 17:22:20 +00:00
Thomas Adam
c376c5a817
Merge branch 'obsd-master'
2017-04-21 18:01:11 +01:00
nicm
92a77e7654
It is annoying that the copy mode key table (or any other key table)
...
will suppress root key table bindings. So change to always check the
root table if no binding is found in the current table (whether it be
the prefix table from pressing the prefix or the copy mode table from a
pane).
A root key binding can be blocked by binding the key to a command that
does nothing (like send-keys with no arguments).
Problem reported by Thomas Sattler.
2017-04-21 16:04:18 +00:00
Thomas Adam
4612419c14
Merge branch 'obsd-master'
2017-04-21 16:01:18 +01:00
nicm
c799425069
More unnecessary arguments now winlink points back to session.
2017-04-21 14:09:44 +00:00
nicm
bba588752f
Store state shared between multiple commands in the queue in a shared
...
structure.
2017-04-21 14:01:19 +00:00
Thomas Adam
22e594fcea
Merge branch 'obsd-master'
...
Conflicts:
Makefile.am
pty.c
2017-04-21 09:25:07 +01:00
nicm
87997efe8d
Use fdforkpty() instead of our own unwrapped versions.
2017-04-20 17:49:26 +00:00
Thomas Adam
48371216df
Merge branch 'obsd-master'
2017-04-20 12:01:14 +01:00
nicm
21993105e5
Now that struct winlink has a session pointer, can remove some arguments.
2017-04-20 09:43:45 +00:00
nicm
0f25ad3ca3
There is no real need for window_printable_flags to allocate, make it
...
return a buffer from the stack.
2017-04-20 09:39:07 +00:00
nicm
0b44ad99b5
If a #() command doesn't exit, use its most recent line of output (it
...
must be a full line). Don't let it redraw the status line more than once
a second.
Requested by someone about 10 years ago...
2017-04-20 09:20:22 +00:00
Thomas Adam
5a551ac57f
Merge branch 'obsd-master'
2017-04-19 16:01:14 +01:00
nicm
53fde21bb8
Add a suspend helper function, and do not allow detaching or suspending
...
while already doing so.
2017-04-19 14:00:28 +00:00
Thomas Adam
85af9c9c9d
Merge branch 'obsd-master'
2017-04-19 10:01:12 +01:00
nicm
fa6deb5866
When the data we have buffered to write to a terminal grows beyond a
...
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.
2017-04-19 06:52:27 +00:00
Thomas Adam
a71c262d5f
Merge branch 'obsd-master'
2017-04-19 00:01:15 +01:00
nicm
f731ae4a2d
Revert use of DECSLRM on iTerm2, it doesn't help as much as we throught,
...
and there are some question marks about it's support.
2017-04-18 21:41:42 +00:00
Thomas Adam
de4f817bd6
Merge branch 'obsd-master'
2017-04-18 20:01:12 +01:00
nicm
623e35f594
Detect iTerm2 and use DECSLRM for it as well.
2017-04-18 18:21:37 +00:00
Thomas Adam
a54309147d
Merge branch 'obsd-master'
2017-04-18 18:01:17 +01:00
nicm
fb3c5efa50
Add a format for number of bytes writtent to client, useful for debugging.
2017-04-18 15:44:17 +00:00
Thomas Adam
28833efb48
Merge branch 'obsd-master'
2017-04-17 10:01:13 +01:00
nicm
7461c165b5
Remove a couple of redraw flags that no longer have any effect.
2017-04-17 06:40:32 +00:00
Thomas Adam
5f662d91db
Merge branch 'obsd-master'
...
Conflicts:
server-client.c
tmux.1
2017-04-06 11:10:17 +01:00
nicm
9b28200578
Give each client a name. This defaults to the tty name as before but
...
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.
2017-04-05 10:49:46 +00:00
Thomas Adam
843e605b89
Merge branch 'obsd-master'
2017-03-22 08:01:17 +00:00
nicm
df3ab87964
Add support for the strikethrough attribute (SGR 9), using the new smxx
...
terminfo capability. This means there are now nine attribute bits, so
anything above 0xff uses an extended cell.
2017-03-22 07:16:54 +00:00
Thomas Adam
c5bdae466e
Merge branch 'obsd-master'
2017-03-09 18:01:16 +00:00
nicm
bce1dee034
Move the client identify (display-panes) code into server-client.c.
2017-03-09 17:06:35 +00:00
nicm
dbfee6a468
Move server_fill_environ into environ.c and move some other common code
...
into it.
2017-03-09 17:02:38 +00:00
Nicholas Marriott
180ebf0208
Merge branch 'master' of github.com:tmux/tmux
2017-03-09 15:39:36 +00:00
Nicholas Marriott
514a723f74
Solaris fixes, mostly from Dagobert Michelsen.
2017-03-09 15:39:13 +00:00
Thomas Adam
3ea36830f3
Merge branch 'obsd-master'
2017-03-08 14:01:23 +00:00
nicm
6b2009ad72
Add a helper function for the most common format_create/defaults/expand
...
pattern.
2017-03-08 13:36:12 +00:00
Thomas Adam
48a3dba6b9
Merge branch 'obsd-master'
2017-02-27 14:01:20 +00:00
nicm
e741a0bcd7
If splitw -b is used, insert the new pane before the current one in the
...
pane list. This means the numbering is in order (for example for
display-panes) and fixes a problem with redrawing the active pane
borders.
2017-02-27 13:07:57 +00:00
Thomas Adam
6b45464120
Merge branch 'obsd-master'
2017-02-21 16:01:15 +00:00
nicm
27ee34e7fa
Don't need is1,is2,is3 so remove them.
2017-02-21 14:18:12 +00:00
Thomas Adam
ba3c1534e0
Merge branch 'obsd-master'
2017-02-14 20:01:12 +00:00
nicm
e340df2034
Make source-file look for files relative to the client working directory
...
(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.
2017-02-14 18:13:05 +00:00
Thomas Adam
02e04477de
Merge branch 'obsd-master'
...
Conflicts:
server.c
2017-02-14 13:55:16 +00:00
nicm
d22c15107b
Don't use a bufferevent for the tty, so we can keep better track of what
...
is being written and when.
Also a manpage typo fix from jmc@.
2017-02-10 12:59:18 +00:00
nicm
c6a3446398
Instead of numbering session groups, give them a name which may be given
...
to -t instead of a target session. Also allow them to contain only one
session.
2017-02-09 15:04:53 +00:00
Thomas Adam
96ad1d7779
Merge branch 'obsd-master'
2017-02-09 14:01:18 +00:00
nicm
b1fa3e25e4
Break the message storage function into its own function, useful for
...
debugging.
2017-02-09 12:09:33 +00:00
Thomas Adam
743f772bef
Merge branch 'obsd-master'
2017-02-09 02:01:17 +00:00
nicm
1811dc5271
Another helper function to write to terminal and log.
2017-02-08 23:53:03 +00:00
Thomas Adam
130b77edc7
Merge branch 'obsd-master'
2017-02-08 18:01:17 +00:00
nicm
e100d465da
Add support for scroll up escape sequence (CSI S) and use it when
...
possible instead of sending individual line feeds.
2017-02-08 17:31:09 +00:00
nicm
13a0b6bb3f
Collect sequences of printable ASCII characters and process them
...
together instead of handling them one by one. This is significantly
faster. Sequences are terminated when we reach the end of the line, fill
the internal buffer, or a different character is seen by the input
parser (an escape sequence, or UTF-8).
Rather than writing collected sequences out immediately, hold them until
it is necessary (another screen modification, or we consume all
available data). This means we can discard changes that would have no
effect (for example, lines that would just be scrolled off the screen or
cleared). This reduces the total amount of data we write out to the
terminal - not important for fast terminals, but a big help with slow
(like xterm).
2017-02-08 16:45:18 +00:00
Thomas Adam
a9a0039be4
Merge branch 'obsd-master'
2017-02-08 10:01:22 +00:00
nicm
9cc02d1498
Trying to avoid the occasional newline by saving the last cell on screen
...
is not actually helping us much and just adds complexity, so don't
bother.
2017-02-08 08:50:10 +00:00
nicm
35a0606de1
Remove event watermarks, don't work well enough to be worth it.
2017-02-08 08:25:12 +00:00
Thomas Adam
9f66fb4fd7
Merge branch 'obsd-master'
2017-02-07 00:01:13 +00:00
nicm
d60e585d9e
Use DECFRA on VT420 compatible terminals (so, xterm) and ED on all
...
others for clearing panes.
2017-02-06 22:05:11 +00:00
Thomas Adam
dfdc23d86c
Merge branch 'obsd-master'
2017-02-06 22:01:16 +00:00
Thomas Adam
7417e391d5
Merge branch 'obsd-master'
2017-02-06 20:01:15 +00:00
nicm
68e04907de
Do not go through the whole attributes setting process if the new cell
...
is the same as the previous one.
2017-02-06 19:45:23 +00:00
nicm
10e14ae504
Add BCE for clear to start of screen, which was somehow missed.
2017-02-06 19:26:49 +00:00
Thomas Adam
1199f8fc59
Merge branch 'obsd-master'
2017-02-06 16:01:20 +00:00
nicm
e67548dc36
Cancel key table when switching session, unless the key is going to
...
repeat. Reported by Amos Bird.
2017-02-06 15:00:41 +00:00
Thomas Adam
446177a832
Merge branch 'obsd-master'
2017-02-06 14:01:16 +00:00
nicm
3fd34e70e5
Only redraw the modified character when adding combining characters, not
...
the whole line.
2017-02-06 13:23:00 +00:00
Thomas Adam
e1c283325e
Merge branch 'obsd-master'
2017-02-03 22:01:18 +00:00
nicm
5e6a8177e5
Cache status line position to reduce option lookups during output.
2017-02-03 21:01:02 +00:00
Thomas Adam
6c333cc486
Merge branch 'obsd-master'
2017-02-03 14:01:13 +00:00
nicm
7d23d019c0
Add a window or pane id "tag" to each format tree and use it to separate
...
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.
2017-02-03 11:57:27 +00:00
Thomas Adam
9b1f620aa0
Merge branch 'obsd-master'
2017-02-01 12:01:18 +00:00
nicm
dd0c814779
Implement "all event" (1003) mouse mode but in a way that works. The
...
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.
2017-02-01 09:55:07 +00:00
Thomas Adam
d8da761d54
Merge branch 'obsd-master'
2017-01-31 00:01:12 +00:00
nicm
3408595f77
When a flag option is used in a format, it should use the number form
...
not string.
2017-01-30 21:41:17 +00:00
Thomas Adam
21d8f77a0d
Merge branch 'obsd-master'
2017-01-25 16:01:13 +00:00
nicm
163732e89f
Revert previous for now, it will break TERM=screen.
2017-01-25 14:36:08 +00:00
nicm
0a63ab4f0f
If xterm-keys is on, use xterm(1) style keys for Home and End as well as
...
modified keys.
2017-01-25 14:24:54 +00:00
Thomas Adam
418ab1a553
Merge branch 'obsd-master'
2017-01-24 22:01:13 +00:00
nicm
4b2821ff98
Make update-environment an array as well.
2017-01-24 20:15:32 +00:00
Thomas Adam
f38a6bbd81
Merge branch 'obsd-master'
2017-01-24 20:01:12 +00:00
nicm
85338bb75f
Add support for custom command aliases, this is an array option which
...
contains items of the form "alias=command". This is consulted when an
unknown command is parsed.
2017-01-24 19:53:37 +00:00
nicm
61fce272ea
If given an array option without an index either show or set all items,
...
and support -a for array options. Allow the separator for set to be
specified in the options table (will be used for backwards compatibility
later).
2017-01-24 19:11:46 +00:00
Thomas Adam
b3a724f30c
Merge branch 'obsd-master'
...
Conflicts:
Makefile
tmux.c
2017-01-23 12:20:43 +00:00
nicm
98e7fbb2ac
Open /dev/ptm before pledge() and save it to be used for PTMGET later
...
(this means inlining forkpty()).
ok deraadt
2017-01-23 10:09:43 +00:00
Thomas Adam
044999ce6d
Merge branch 'obsd-master'
2017-01-18 12:01:11 +00:00
nicm
faa0570309
Plain stravis() because it will mangle UTF-8 characters, so add
...
utf8_stravis() which calls our existing utf8_strvis() and use it instead
2017-01-18 10:08:05 +00:00
Thomas Adam
7e110b9d99
Merge branch 'obsd-master'
2017-01-16 15:36:02 +00:00
nicm
ef15b4195f
Revert WIP parts of previous I didn't mean to commit yet.
2017-01-16 14:52:25 +00:00
nicm
68db958477
getopt() has a struct option so just return to using options_entry.
2017-01-16 14:49:14 +00:00
Thomas Adam
7b60645732
Merge branch 'obsd-master'
2017-01-16 00:01:10 +00:00
Thomas Adam
c9fcb76651
Merge branch 'obsd-master'
2017-01-15 22:01:11 +00:00
nicm
52847a9518
It is silly for cmd_list_parse to return an integer error when it could
...
just return NULL.
2017-01-15 22:00:56 +00:00
nicm
2b0bc9f1c5
Major tidy up and rework of options tree and set-option/show-options
...
commands this pushes more of the code into options.c and ties it more
closely to the options table rather than having an unnecessary
split. Also add support for array options (will be used later). Only
(intentional) user visible change is that show-options output is now
passed through vis(3) with VIS_DQ so quotes are escaped.
2017-01-15 20:48:41 +00:00
Thomas Adam
780dd7ac82
Merge branch 'obsd-master'
2017-01-13 14:01:13 +00:00
Thomas Adam
2311bbd28a
Merge branch 'obsd-master'
2017-01-13 12:01:12 +00:00
nicm
08d21936e4
options_get_style return const too.
2017-01-13 11:58:49 +00:00
nicm
95950bf668
Add -E to detach-client to exec a command to replace the client instead
...
of exiting it, useful if tmux wasn't exec'd itself. From Jenna Magius.
2017-01-13 10:12:12 +00:00
Thomas Adam
d4cb178249
Merge branch 'obsd-master'
2017-01-12 16:01:13 +00:00
nicm
24cba5907b
Simplify appending to string options.
2017-01-12 15:36:35 +00:00
Thomas Adam
1eb9500644
Merge branch 'obsd-master'
2017-01-12 12:01:10 +00:00
nicm
dad3090d32
Put all palette functions together in the file.
2017-01-12 10:15:55 +00:00
Thomas Adam
4a76861925
Merge branch 'obsd-master'
2017-01-12 02:01:11 +00:00
nicm
9e786030df
Fix setting the palette of aixterm colours (90-97).
2017-01-12 00:19:32 +00:00
Thomas Adam
d87ab0cadf
Merge branch 'obsd-master'
2017-01-11 18:01:13 +00:00
nicm
bf6a5c056d
Add a format for terminal type.
2017-01-11 16:09:57 +00:00
nicm
7497ecd979
Use a macro for looking up tty types.
2017-01-11 16:05:46 +00:00
Thomas Adam
0d19d78fff
Merge branch 'obsd-master'
2017-01-11 16:01:16 +00:00
nicm
458b6eb600
Some tidying and tweaks to options code.
2017-01-11 14:56:44 +00:00
Thomas Adam
2c862b04af
Merge branch 'obsd-master'
2017-01-09 22:01:12 +00:00
nicm
844f2eacf4
Add simple comparisons in formats: #{==:a,b} and #{!=:a,b} ("a" and "b"
...
are expanded so can compare formats). And expand the condition to
#{?a,b,c} (the "a" part) if it doesn't work as a simple lookup.
Also add FORMAT_NOJOBS flag to disable jobs in a format.
2017-01-09 21:03:25 +00:00
Thomas Adam
95f5d406e5
Merge branch 'obsd-master'
2017-01-09 20:01:12 +00:00
nicm
5330a2a85d
Run the source-file pattern through glob(3).
2017-01-09 19:27:00 +00:00
Thomas Adam
29e64a8c64
Merge branch 'obsd-master'
2017-01-07 16:01:17 +00:00
nicm
314e933914
Add support for the OSC 4 and OSC 104 palette setting escape sequences,
...
from S Gilles.
2017-01-07 15:28:13 +00:00
Thomas Adam
a3428487a7
Merge branch 'obsd-master'
2017-01-06 14:01:15 +00:00
nicm
461217d0f0
Incremental search in copy mode (on for emacs keys by default) - much
...
the same as normal searching but updates the cursor position and marked
search terms as you type. C-r and C-s in the prompt repeat the search,
once finished searching (with Enter), N and n work as before.
2017-01-06 11:57:03 +00:00
Thomas Adam
58642011df
Merge branch 'obsd-master'
2017-01-05 10:01:11 +00:00
nicm
9a56671a75
Highlight all occurrences of search string after searching in copy mode.
2017-01-05 09:07:15 +00:00
Thomas Adam
d3328a3b1e
Merge branch 'obsd-master'
2016-12-28 12:01:14 +00:00
nicm
70ba3c147f
Fix the prefer unattached session behaviour of
...
attach-session/switch-client, reported by Thomas Sattle.
2016-12-28 10:34:34 +00:00
Thomas Adam
2864a31311
Merge branch 'obsd-master'
2016-11-24 20:01:10 +00:00
nicm
6f8cedb1bc
The mouse valid flag needs to be correct before we fire the dragging
...
callback, so move the callback outside of server_client_check_mouse and
use a new special key code to indicate it.
2016-11-24 18:45:45 +00:00
Thomas Adam
a02d95a313
Merge branch 'obsd-master'
2016-11-24 16:01:11 +00:00
nicm
7e6c2cb238
Make the selection able to exist independent of the cursor position, so
...
that it is not affected by scrolling. If MouseDragEnd1Pane is bound to
the new "stop-selection" command:
bind -Tcopy-mode MouseDragEnd1Pane stop-selection
A selection made with the mouse will stay as it is after button 1 is
released. (It also works bound to a key.)
From Artem Fokin.
2016-11-24 13:38:44 +00:00
Thomas Adam
8a8001350d
Merge branch 'obsd-master'
2016-11-23 18:01:19 +00:00
nicm
6de466cf8b
For mouse keys, use the mouse pane as the default current pane.
2016-11-23 17:01:24 +00:00
Thomas Adam
12c49fa3bd
Merge branch 'obsd-master'
2016-11-16 02:01:11 +00:00
nicm
e88b74350f
The target validity check used window_pane_visible but that may be false
...
if the pane is zoomed, so instead add a new function to just check if
the pane is actually on screen (most commands still want to accept panes
invisible by zoom). Also reject panes outside the window for various
special targets. Problem reported by Sean Haugh.
2016-11-16 00:24:03 +00:00
Thomas Adam
1afe9e98de
Merge branch 'obsd-master'
2016-11-15 16:01:10 +00:00
nicm
c34a79b152
Turn on margins, with a couple of fixes (only limit to the pane for line
...
feeds, and do not move cursor to end for full width panes).
2016-11-15 15:17:28 +00:00
nicm
0ace779cde
Initial attempt to make use of left and right margins if the terminal
...
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.
2016-11-15 14:02:32 +00:00
Thomas Adam
1de107c405
Merge branch 'obsd-master'
2016-11-04 16:01:11 +00:00
nicm
353439acee
enum values need to fit in 32 bits; we only use enum for numbering and
...
Unicode characters fit in 24 bits, so we can leave key_code as 64 bits
and change KEYC_BASE down to 0x10000000.
2016-11-04 14:47:38 +00:00
Thomas Adam
28a31201d3
Merge branch 'obsd-master'
2016-10-19 12:01:11 +01:00