nicm
a2ace9da24
Add ||, && format operators and C: to search pane content.
2017-05-29 18:06:34 +00:00
Thomas Adam
d3959a2118
Merge branch 'obsd-master'
2017-05-29 18:01:14 +01:00
nicm
1257501499
Add m: for fnmatch(3) format matching.
2017-05-29 15:43:48 +00:00
Nicholas Marriott
b74b6dc77f
Missed during merge.
2017-05-16 14:15:35 +01:00
Thomas Adam
9f9f8c8e76
Merge branch 'obsd-master'
2017-05-13 02:01:13 +01:00
nicm
f688653710
Remove an unused variable.
2017-05-12 22:43:15 +00:00
Thomas Adam
20e30593a5
Merge branch 'obsd-master'
2017-05-12 16:01:14 +01:00
nicm
5d3cf2ff15
Only redraw single client, and tweak some logging.
2017-05-12 13:27:57 +00:00
Thomas Adam
7f813dcb6a
Merge branch 'obsd-master'
2017-05-12 14:01:17 +01:00
nicm
7d3e2c83d4
Store copy mode search string in pane so search-again command works even
...
if you exit and reenter copy mode (it doesn't remember the position,
just the search string), suggested by espie@.
2017-05-12 10:45:38 +00:00
Thomas Adam
a651b08a2f
Merge branch 'obsd-master'
...
Conflicts:
format.c
2017-05-09 15:44:13 +01:00
nicm
5fee4638e0
Add a format for the name of the pane's mode, lets it be used as a
...
conditional for key bindings.
2017-05-07 22:27:57 +00:00
nicm
2fef10b9ac
Add some formats to look at the session window stack, suggested by Scott
...
ROCHFORD.
2017-05-05 11:59:47 +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
4612419c14
Merge branch 'obsd-master'
2017-04-21 16:01:18 +01: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
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
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
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
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
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
02e04477de
Merge branch 'obsd-master'
...
Conflicts:
server.c
2017-02-14 13:55:16 +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
5aaf640629
Merge branch 'obsd-master'
2017-02-07 20:01:14 +00:00
nicm
20f5e377fb
Remove a debugging leftover.
2017-02-07 18:06:42 +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
7e110b9d99
Merge branch 'obsd-master'
2017-01-16 15:36:02 +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
c9fcb76651
Merge branch 'obsd-master'
2017-01-15 22:01:11 +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
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
Thomas Adam
2c862b04af
Merge branch 'obsd-master'
2017-01-09 22:01:12 +00:00
Nicholas Marriott
36619607ba
Add a format for the version.
2017-01-09 21:44:19 +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
442e49f51c
Merge branch 'obsd-master'
2016-11-17 12:01:10 +00:00
nicm
3cf19d6dd0
Key running commands for #() by the unexpanded command, and run them
...
again if the expanded form changes (otherwise at most once per second as
usual). Fixes issues reported by Gregory Pakosz.
2016-11-17 10:06:08 +00:00
Thomas Adam
1a6e696b08
Merge branch 'obsd-master'
2016-10-16 22:01:14 +01:00
nicm
3f35b5299f
Provide a way for hooks to tag formats onto the commands they fire so
...
that the user can get at additional information - now used for the
"hook" format, more to come.
2016-10-16 19:36:37 +00:00
nicm
b342bd0b46
Mass rename struct cmd_q to struct cmdq_item and related.
2016-10-16 19:04:05 +00:00
Thomas Adam
c67b702588
Merge branch 'obsd-master'
2016-10-16 20:01:10 +01:00
nicm
ddc4512d2e
Rewrite command queue handling. Each client still has a command queue,
...
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.
2016-10-16 17:55:14 +00:00
Thomas Adam
0f7d39c410
Add missing function protype
2016-10-12 09:49:16 +01:00
Thomas Adam
b9dc855016
Merge branch 'obsd-master'
...
Conflicts:
format.c
osdep-openbsd.c
2016-10-12 09:45:49 +01:00
nicm
5c49e1d0c1
Some other stuff that can be local to one file.
2016-10-11 13:45:47 +00:00
nicm
c426e485e5
Loads more static, except for cmd-*.c and window-*.c.
2016-10-10 21:29:23 +00:00
Thomas Adam
05ec232f3e
Merge branch 'obsd-master'
2016-05-24 00:01:09 +01:00
nicm
95a4cc3bce
Use a fixed buffer for strftime() because there is no portable way to
...
tell if the buffer is too small, and an expanding buffer is overkill
anyway.
2016-05-23 20:39:26 +00:00
Thomas Adam
ba9f32b464
Merge branch 'obsd-master'
2016-04-29 16:01:12 +01:00
nicm
0d84fdd953
Final parts of command hooks, add before- and after- hooks to each command.
2016-04-29 14:05:24 +00:00
Thomas Adam
5fce21728e
Merge branch 'obsd-master'
2016-01-31 12:01:09 +00:00
nicm
8028560f82
Support negative trim values (#{=-10:pane_title}) to trim from the end,
...
suggested by Kevin Brubeck Unhammer.
2016-01-31 09:54:46 +00:00
Thomas Adam
dc42c35f1f
Merge branch 'obsd-master'
2016-01-19 18:01:15 +00:00
nicm
995af0e2b7
I no longer use my SourceForge address so replace it.
2016-01-19 15:59:12 +00:00
Thomas Adam
845a664bb2
Merge branch 'obsd-master'
2015-12-12 20:01:15 +00:00
nicm
5ed17e84fa
Add key-table option to set the default key table for a session, allows
...
different key bindings for different sessions and a few other things.
2015-12-12 18:32:24 +00:00
Thomas Adam
4909a70174
Merge branch 'obsd-master'
2015-12-11 13:24:45 +00:00
nicm
01831da5f5
Add cmdq as an argument to format_create and add a format for the
...
command name (will also be used for more later).
2015-12-11 12:27:36 +00:00
Thomas Adam
af8134a6ff
Merge branch 'obsd-master'
2015-12-08 10:01:16 +00:00
nicm
e0f26dcda3
Remove format_create_flags and just pass flags to format_create.
2015-12-08 08:34:18 +00:00
Thomas Adam
890d8da2e3
Merge branch 'obsd-master'
...
Conflicts:
log.c
proc.c
tmux.c
2015-11-25 16:37:30 +00:00
nicm
1e2df2d464
Remove the -I part of show-messages which isn't really that useful; the
...
server start time can now be accessed with a new start_time format (use:
tmux display -p '#{t:start_time}')
2015-11-24 21:52:06 +00:00
Thomas Adam
7fe8edc396
Merge branch 'obsd-master'
2015-11-18 16:01:23 +00:00
nicm
577c0e3e5a
Use __unused rather than rolling our own.
2015-11-18 14:27:44 +00:00
nicm
5a5b950e8b
Add s/foo/bar/: prefix for formats to substitute bar for foo.
2015-11-18 14:13:55 +00:00
Thomas Adam
45a10dde95
Merge branch 'obsd-master'
2015-11-13 14:01:10 +00:00
nicm
88aa1c8dc3
Two spacing and spelling nits.
2015-11-13 12:18:52 +00:00
Thomas Adam
e2917b2627
Merge branch 'obsd-master'
2015-11-13 10:43:07 +00:00
Thomas Adam
3df4959f51
Merge branch 'obsd-master'
...
Conflicts:
Makefile
2015-11-13 10:42:45 +00:00
nicm
531869bd92
Add window_visible_layout which ignores zoomed panes and use it for
...
control mode (which needs to know all panes), from George Nachman.
2015-11-13 10:00:26 +00:00
nicm
c5689a5a40
Long overdue change to the way we store cells in the grid: now, instead
...
of storing a full grid_cell with UTF-8 data and everything, store a new
type grid_cell_entry. This can either be the cell itself (for ASCII
cells), or an offset into an extended array (per line) for UTF-8
data.
This avoid a large (8 byte) overhead on non-UTF-8 cells (by far the
majority for most users) without the complexity of the shadow array we
had before. Grid memory without any UTF-8 is about half.
The disadvantage that cells can no longer be modified in place and need
to be copied out of the grid and back but it turned out to be lot less
complicated than I expected.
2015-11-13 08:09:28 +00:00
Thomas Adam
5f483499f3
Merge branch 'obsd-master'
2015-11-12 12:01:17 +00:00
nicm
1b86f520ea
Nuke the utf8 and status-utf8 options and make tmux only a UTF-8
...
terminal. We still support non-UTF-8 terminals outside tmux, but inside
it is always UTF-8 (as when the utf8 and status-utf8 options were on).
2015-11-12 11:09:11 +00:00
nicm
a0f3999ce7
Remove the mouse_utf8_flag format as well.
2015-11-12 11:07:10 +00:00
Thomas Adam
17f6c3be8e
Merge branch 'obsd-master'
2015-10-31 10:01:12 +00:00
nicm
01defc9f49
Because pledge(2) does not allow us to pass directory file descriptors
...
around, we can't use file descriptors for the working directory because
we will be unable to pass it to a privileged process to tell it where to
read or write files or spawn children. So move tmux back to using
strings for the current working directory. We try to check it exists
with access() when it is set but ultimately fall back to ~ if it fails
at time of use (or / if that fails too).
2015-10-31 08:13:58 +00:00
Thomas Adam
a5e4d3a2d8
Merge branch 'obsd-master'
2015-10-28 12:01:11 +00:00
nicm
bf9c933cae
Like options, move the environ struct into environ.c.
2015-10-28 09:51:55 +00:00
Thomas Adam
da1f6fc2c8
Merge branch 'obsd-master'
...
Conflicts:
Makefile
client.c
server-client.c
server.c
tmux.c
tmux.h
2015-10-27 23:27:26 +00:00
nicm
44657bf932
Move struct options into options.c.
2015-10-27 15:58:42 +00:00
Thomas Adam
147b5ae514
Merge branch 'obsd-master'
2015-10-27 10:01:13 +00:00
nicm
9952201ca7
Count brackets in #{?...} so that nested conditional formats work, from
...
Daniel De Graaf.
2015-10-27 09:28:31 +00:00
nicm
17c2c4219d
The format callback may not always succeed, so we need to check for
...
NULL. From Patrick Palka.
2015-10-27 09:18:06 +00:00
Thomas Adam
ca29903c82
Merge branch 'obsd-master'
2015-10-26 00:01:10 +00:00
nicm
e65306d8e7
Extend the modifiers allowed before formats: as well as the existing
...
#{=10:...} length limit, add #{t:...} to convert a time_t format to a
string, #{b:...} for basename and #{d:...} for dirname. Remove all the
foo_string time formats as they can now be replaced by "t:", for example
#{window_activity_string} becomes #{t:window_activity}.
2015-10-25 22:29:17 +00:00
Thomas Adam
3e0d31c4e9
Merge branch 'obsd-master'
2015-10-25 09:22:20 +00:00
Thomas Adam
4acc8d0ff5
Merge branch 'obsd-master'
...
Conflicts:
cmd-find.c
2015-10-25 09:21:37 +00:00
nicm
3faa51a0ca
Pass output from jobs through format_expand() so they are expanded again
...
(this was the previous behaviour).
2015-10-25 08:59:26 +00:00
nicm
14da999408
Format for scroll position, from Jorge Morante.
2015-10-23 16:02:21 +00:00
Thomas Adam
74b958ecbe
Merge branch 'obsd-master'
...
Conflicts:
Makefile
2015-09-14 12:42:19 +01:00
nicm
16efa84838
Make refresh-client force update of jobs, from Sina Siadat.
2015-09-14 10:25:52 +00:00
Thomas Adam
1fd756066c
Merge branch 'obsd-master'
2015-09-10 12:01:08 +01:00
nicm
cfabe30bec
Add session_last_attached time and format, from Sina Siadat.
2015-09-10 08:58:14 +00:00
Thomas Adam
76688d2040
Merge branch 'obsd-master'
...
Conflicts:
cfg.c
tmux.c
2015-09-06 20:47:50 +01:00
nicm
82326dcbe2
A couple of style nits.
2015-09-03 14:30:23 +00:00
Nicholas Marriott
2c6ea705fd
Bring back pane_current_path.
2015-08-31 19:57:37 +01:00
Thomas Adam
29f2120e5b
Linux: get_proc_name() -> osdep_get_name()
2015-08-30 21:47:50 +01:00
Thomas Adam
cb89f2f2a1
Merge branch 'obsd-master'
...
Conflicts:
Makefile
format.c
2015-08-30 21:44:01 +01:00
nicm
b569585000
Move struct paste_buffer out of tmux.h.
2015-08-29 09:25:00 +00:00
nicm
5f122af556
Make a few more expensive (ish) formats functions instead of inline.
2015-08-28 17:01:42 +00:00
nicm
983ebb2689
Allow formats to be specified as functions (in the code) so they are
...
only evaluated on demand rather than each time a format tree is
constructed. Use this for expensive formats like pane_current_command.
2015-08-28 16:46:40 +00:00
Thomas Adam
84eabb2658
Merge branch 'obsd-master'
2015-08-28 14:01:11 +01:00
nicm
75d10058a4
Run status update on a per-client timer at status-interval.
2015-08-28 12:16:28 +00:00
nicm
b6618b631b
Move format job cleanup onto its own timer.
2015-08-28 11:38:27 +00:00
Thomas Adam
31c027a37a
Merge branch 'obsd-master'
2015-08-28 12:01:07 +01:00
nicm
ee9f708500
Allow environment variables in #{}.
2015-08-28 10:06:52 +00:00
Thomas Adam
07aef38591
Merge branch 'obsd-master'
2015-07-13 18:01:09 +01:00
nicm
81069f66f9
Add a format to show if client is a control client. From Bruno Sutic.
2015-07-13 15:37:26 +00:00
Thomas Adam
0ef3e28609
Merge branch 'obsd-master'
2015-06-19 02:01:10 +01:00
nicm
b43b13faf9
Use xsnprintf.
2015-06-18 23:55:24 +00:00
Thomas Adam
9fdc3a069a
Merge branch 'obsd-master'
2015-06-15 14:01:09 +01:00
nicm
d96ab34019
Add window_activity format, from Thomas Adam based on a diff originally
...
from propos6 at gmail dot com.
2015-06-15 10:58:01 +00:00
Thomas Adam
37005d04a9
Merge branch 'obsd-master'
2015-06-14 12:01:10 +01:00
nicm
29c29e7717
Add a format for client PID (client_pid) and server PID (pid). Diff for
...
client_pid from Thomas Adam.
2015-06-14 10:07:44 +00:00
Thomas Adam
48a46e066e
Merge branch 'obsd-master'
2015-06-10 16:01:08 +01:00
nicm
bbc0898060
wp->tty is a char [] not a char * so it can't be NULL. From Thomas Adam.
2015-06-10 12:56:04 +00:00
Thomas Adam
c39dfb17ae
Merge branch 'obsd-master'
2015-05-30 02:01:18 +01:00
nicm
2a8c2648f0
Don't use special strings if #() commands fail, just remove the format
...
(as if the command produced nothing). Makes constructions that can fail
like '#(test whatever && echo foo)' work as they did before.
2015-05-29 23:26:52 +00:00
nicm
74c755f2ab
Expand formats again inside #(), and free the temporaries.
2015-05-29 23:12:38 +00:00
Thomas Adam
beffdf6575
Merge branch 'obsd-master'
2015-05-27 16:01:22 +01:00
nicm
379400cfa6
Move the jobs output cache into the formats code so that #() work more
...
generally (for example, again working in set-titles-string).
2015-05-27 13:28:04 +00:00
Thomas Adam
f538f2ae9b
Merge branch 'obsd-master'
2015-05-20 10:01:19 +01:00
nicm
7140cce7f3
Return empty string if format is empty rather than attempting to
...
allocate zero bytes.
2015-05-20 06:39:02 +00:00
Thomas Adam
00471dc783
Merge branch 'obsd-master'
2015-05-13 09:44:11 +01:00
nicm
ec34439f9c
Add a session_alerts format which is a list of all the alerts in the
...
current session in symbolic form (something like "0!,4~,5!"). Use this
in the default set-titles-string. Prompted by a request from Jan ONDREJ.
2015-05-12 15:29:29 +00:00
Thomas Adam
504b97b6a4
Merge branch 'obsd-master'
...
Conflicts:
tmux.h
2015-05-09 12:52:38 +01:00
nicm
c4a4bd6ac5
Move input parser structs into input.c (removing fairly useless
...
saved_cursor_[xy] formats as a side-effect).
2015-05-08 16:18:04 +00:00
Thomas Adam
f10d3675f8
Merge branch 'obsd-master'
2015-05-06 10:03:52 +01:00
nicm
31b1ab4852
Add a format window_linked which is 1 if a window has been linked
...
multiple times, also remove the default space in window_flags and use a
conditional to add it in window-status-format (this means additional
flags can be added in the option without extra spaces). From Thomas Adam
with tweaks by me.
2015-05-06 08:35:39 +00:00
Thomas Adam
0a88377086
Merge branch 'obsd-master'
2015-04-22 10:05:54 +01:00
nicm
69f292a90e
Always format real layout even when zoomed.
2015-04-21 22:38:49 +00:00
nicm
1f404f6a23
Put mouse_any_flag back, don't know where it went to (still in man page).
2015-04-21 15:18:38 +00:00
nicm
bded743706
Support for multiple key tables to commands to be bound to sequences of
...
keys. The default key bindings become the "prefix" table and -n the
"root" table. Keys may be bound in new tables with bind -T and
switch-client -T used to specify the table in which the next key should
be looked up. Based on a diff from Keith Amling.
2015-04-20 15:34:56 +00:00
Thomas Adam
370cf75458
Merge branch 'obsd-master'
2015-04-19 14:44:56 +01:00
nicm
3aa72b42b2
Add a helper function to convert time, and add session_activity formats
...
(the latter from Takatoshi Matsumoto).
2015-03-31 17:58:36 +00:00