nicm
4289a1ebfa
Trying to do hooks generically is way too complicated and unreliable and
...
confusing, particularly trying to automatically figure out what target
hooks should be using. So simplify it:
- drop before hooks entirely, they don't seem to be very useful;
- commands with special requirements now fire their own after hook (for
example, if they change session or window, or if they have -t and -s
and need to choose which one the hook uses as current target);
- commands with no special requirements can have the CMD_AFTERHOOK flag
added and they will use the -t state.
At the moment new-session, new-window, split-window fire their own hook,
and display-message uses the flag. The remaining commands still need to
be looked at.
2016-10-13 22:48:51 +00:00
Thomas Adam
ad5a561adb
Merge branch 'obsd-master'
2016-10-13 22:01:12 +01:00
nicm
4179b42424
Add support for BCE (background colour erase). This makes various escape
...
sequences (notable EL and ED but also IL, DL, ICH, DCH) create blank
cells using the current background colour rather than the default
colour.
On modern systems BCE doesn't really have many benefits, but most other
terminals now support it, some (lazy) applications rely on it, and it is
not hard to include now that we have pane background colours anyway.
Mostly written by Sean Haugh.
2016-10-13 20:27:27 +00:00
Thomas Adam
6270392d04
Merge branch 'obsd-master'
2016-10-13 12:01:11 +01:00
nicm
4d9e6ea310
Some improvements and bug fixes for hooks:
...
- Prepare the state again before the "after" hooks are run, because the
command may have killed or moved windows.
- Use the hooks list from the newly prepared target, not the old hooks
list (only matters for new-session really).
- Correctly detect an invalid current state and ignore it in
cmd_find_target ("killw; swapw").
- Change neww, new, killp, killw, splitw, swapp, swapw to update the
current state (used if no explicit target is given) to something more
useful after they have finished. For example, neww changes it to the
newly created window.
Hooks are still relatively new and primitive so there are likely to be
more changes to come.
Parts based on bug reports from Uwe Werler and Iblis Lin.
2016-10-13 10:01:49 +00:00
Thomas Adam
6551f4bb3b
Merge branch 'obsd-master'
...
Conflicts:
paste.c
2016-10-13 08:09:47 +01:00
nicm
40253048ca
bind-key -c has gone, remove from man page, and unused table declarations.
2016-10-12 15:26:37 +00:00
nicm
c484c5a2a1
Drop the edit mode key tables and just use fixed key bindings for the
...
command prompt.
2016-10-12 14:50:14 +00:00
nicm
4160df4ca4
Redraw selection in tty_draw_line, so it appears when redrawing whole
...
pane. Reported by Theo Buehler.
2016-10-12 13:24:07 +00:00
nicm
68bebe1fb7
The repeat prompt in both emacs and vi (and the old one in tmux) doesn't
...
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.
2016-10-12 13:03:27 +00: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
e45401846f
Add static in window-*.c and move some internal functions out of tmux.h.
2016-10-11 13:21:59 +00:00
nicm
85d7afaefc
Support double and triple clicks (they are cumulative, so double is
...
fired then triple), and use for select-word and select-line in copy
mode. Inspired by a different solution from Omar Sandoval.
2016-10-11 09:30:36 +00:00
nicm
76d6d3641f
Fundamental change to how copy mode key bindings work:
...
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.
2016-10-11 07:23:34 +00:00
nicm
8b804fb589
Support UTF-8 entry into the command prompt.
2016-10-11 07:11:40 +00:00
Thomas Adam
27126f8797
Merge branch 'obsd-master'
2016-10-10 20:01:11 +01:00
nicm
66b5477cc1
Do not allow the opposite pane to resize when dragging with the mouse
...
because it is not possible to keep the mouse on the border when the
minimum size is reached.
2016-10-10 17:28:30 +00:00
Thomas Adam
226b6a2192
Merge branch 'obsd-master'
2016-10-10 16:01:12 +01:00
nicm
7d4b416fe6
Some more static.
2016-10-10 13:54:47 +00:00
Thomas Adam
215d3f8c0d
Merge branch 'obsd-master'
2016-10-09 18:01:10 +01:00
nicm
b8f2dd8237
Make the CLIENT_STATUS flag imply that pane status lines are redrawn if
...
they are enabled and break the actual screen generation code into a
separate function. Fixes problems reported by Romain Francoise.
2016-10-09 16:24:34 +00:00
Thomas Adam
5b8f033e06
Merge branch 'obsd-master'
2016-10-05 14:01:10 +01:00
nicm
4117a7ed19
Keep buffer creation time and add accessors for it and the order number.
2016-10-05 12:34:05 +00:00
Thomas Adam
27591570c4
Merge branch 'obsd-master'
2016-09-28 10:01:11 +01:00
nicm
acacb718e5
Rate limit TIOCSWINSZ on a timer to avoid programs getting hammered with
...
SIGWINCH when the size changes rapidly. To help a problem reported by
Rui Pinheiro.
2016-09-28 08:30:44 +00:00
Thomas Adam
895f1d93d5
Merge branch 'obsd-master'
2016-09-16 16:01:16 +01:00
nicm
eb50e7a2c8
Swap watermarks from high (4096) to low (128) when we get full buffers
...
into the read callback several times in succession; swap back when we
see empty buffers several times. This hopefully limits how much programs
that print a lot for a long period can monopolize tmux (like large, fast
compiling), without penalizing programs that print a lot briefly (like
most curses applications). Helps a lot for me, the actual numbers may
need tweaking later.
2016-09-16 13:43:41 +00:00
Thomas Adam
a5b29a1250
Merge branch 'obsd-master'
2016-09-12 18:01:12 +01:00
nicm
2e5584c2b4
Allow repeat count to be specified in mode key tables with bind-key -R,
...
and set the default repeat count to 5 for WheelUp and WheelDown in
copy-mode.
2016-09-12 15:40:58 +00:00
Thomas Adam
f68a908c8a
Merge branch 'obsd-master'
2016-09-04 20:01:16 +01:00
nicm
fed1e384ad
Add support for performing a full width split (with splitw -f), rather
...
than splitting the current cell. From Stephen Kent.
2016-09-04 17:37:06 +00:00
Thomas Adam
999c1c771b
Merge branch 'obsd-master'
2016-09-03 00:01:14 +01:00
nicm
2627ab322e
Remember the number of lines scrolled into the history (versus cleared
...
into the history) and when resizing only use scrolled lines and not
cleared lines (which are probably not intended to reappear). From
Chaoren Lin.
2016-09-02 20:57:20 +00:00
Thomas Adam
baf1550227
Merge branch 'obsd-master'
2016-08-03 12:01:11 +01:00
nicm
f8cc48a43f
Fix minimum size when pane status line is enabled, reported by Y Petremann.
2016-08-03 09:07:02 +00:00
Thomas Adam
a24260bb23
Merge branch 'obsd-master'
2016-07-15 12:01:10 +01:00
nicm
9436a31603
Tweak output of environment logging.
2016-07-15 09:52:34 +00:00
nicm
1718420c48
Log environment to new panes.
2016-07-15 09:28:32 +00:00
Thomas Adam
d4eeeb5498
Merge branch 'obsd-master'
2016-07-15 04:01:12 +01:00
nicm
0f73af876f
Don't update cells in each block of data read from a pane immediately,
...
instead track them as change (dirty) and update them once at the end,
saves much time if repeatedly writing the same cell. Also fix comparison
of cells being equal in a few places (memcmp is not enough).
2016-07-15 00:49:08 +00:00
Thomas Adam
93f42d360b
Merge branch 'obsd-master'
2016-06-16 14:01:11 +01:00
nicm
325cbe90d9
Allow a command to be specified to display-panes, similar to
...
command-prompt, rather than always just selecting the pane.
2016-06-16 10:55:47 +00:00
Thomas Adam
5c12230a08
Merge branch 'obsd-master'
2016-06-15 12:01:11 +01:00
nicm
bee3e3e28d
Copy mode needs to keep the original grid intact so it can copy from it
...
if needed, so it disables reading from the pane. This can be problem
with some programs. So make tmux automatically exit all modes after 180
seconds of inactivity and if there is pending output.
2016-06-15 09:13:46 +00:00
Thomas Adam
cc096ae929
Merge branch 'obsd-master'
2016-06-06 10:01:11 +01:00
nicm
aba4438013
Cache selected state so that cells going from selected to unselected are not
...
skipped, reported by Omar Sandoval.
2016-06-06 07:28:52 +00:00
nicm
00cf5fbde6
Insert new panes after the pane being split in the list rather than
...
always after the active pane. This is more sensible when doing it with
commands rather than keys.
2016-06-06 07:24:31 +00:00
Thomas Adam
c7a0f56c71
Merge branch 'obsd-master'
2016-05-30 12:01:13 +01:00
nicm
1921fac814
Cache the window styles and do not look up the window-style options
...
unless they have changed.
2016-05-30 09:50:20 +00:00
Thomas Adam
a2e0db67cc
Merge branch 'obsd-master'
2016-05-27 20:01:11 +01:00
nicm
fcb00a4161
Use getprogname() instead of __progname to make portability easier.
2016-05-27 17:05:42 +00:00
Thomas Adam
6cb74f4b7d
Merge branch 'obsd-master'
2016-05-12 18:01:10 +01:00
tim
fdd368a294
- Rework load_cfg() error handling a little.
...
- Add -q to source-file to suppress errors about nonexistent files.
Input and OK nicm@
2016-05-12 16:05:33 +00:00
Thomas Adam
96538b489b
Merge branch 'obsd-master'
2016-05-01 16:01:11 +01:00
nicm
4a6eca5bd7
Use the same code for half page scrolling as full, from Michal Mazurek.
2016-05-01 13:39:05 +00:00
Thomas Adam
fe4ef307b7
Merge branch 'obsd-master'
2016-05-01 14:01:12 +01:00
nicm
88bd5b15ff
tty_client_ready can not be internal to tty.c again.
2016-04-30 18:59:02 +00:00
Thomas Adam
55d472a9fe
Merge branch 'obsd-master'
2016-04-29 18:01:09 +01:00
Thomas Adam
ba9f32b464
Merge branch 'obsd-master'
2016-04-29 16:01:12 +01:00
nicm
0509be0740
Add option to include status text in the pane borders. If
...
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.
2016-04-29 15:00:48 +00:00
nicm
c5443da2d3
The backoff timer is causing no end of trouble with disconnected clients
...
stopping data in attached ones. So get rid of it and see how we get on
with just a high watermark on each pane.
2016-04-29 13:36:10 +00:00
nicm
5f2bfd9807
Make the grid_cell passed into screen_write_* const.
2016-04-29 13:21:33 +00:00
Thomas Adam
55fdaab365
Merge branch 'obsd-master'
2016-04-27 12:01:10 +01:00
nicm
1cedf78284
Add next/previous paragraph, from J Raynor.
2016-04-27 09:39:09 +00:00
Thomas Adam
ed598e9fe1
Merge branch 'obsd-master'
2016-03-18 08:01:18 +00:00
nicm
fa97b0a95b
Instead of reusing MouseUp at the finish of a drag, add a new key
...
MouseDragEnd. It can be useful to bind them separately in copy mode.
2016-03-18 07:28:27 +00:00
Thomas Adam
e304673c65
Merge branch 'obsd-master'
...
Conflicts:
utf8.c
2016-03-02 18:10:51 +00:00
nicm
b8a102d26f
Handle wcwidth() and mbtowc() failures in better style and drop
...
characters where we can't find the width (wcwidth() fails) on input, the
same as we drop invalid UTF-8. Suggested by schwarze@.
2016-03-02 15:36:02 +00:00
nicm
26945d7956
Use system wcwidth() instead of carrying around UTF-8 width tables.
2016-03-01 12:02:08 +00:00
Thomas Adam
5fce21728e
Merge branch 'obsd-master'
2016-01-31 12:01:09 +00:00
nicm
fa64b89ad7
Whoops, need this for the previous reverse trim commit too.
2016-01-31 09:57:41 +00:00
Thomas Adam
8cf1504ba6
Merge branch 'obsd-master'
2016-01-29 12:01:16 +00:00
nicm
427b820426
Support for RGB colour, using the extended cell mechanism to avoid
...
wasting unnecessary space. The 'Tc' flag must be set in the external
TERM entry (using terminal-overrides or a custom terminfo entry), if not
tmux will map to the closest of the 256 or 16 colour palettes.
Mostly from Suraj N Kurapati, based on a diff originally by someone else.
2016-01-29 11:13:56 +00:00
Thomas Adam
dc42c35f1f
Merge branch 'obsd-master'
2016-01-19 18:01:15 +00:00
nicm
b5b5221c13
Split out getting the current state from the target search so it can be
...
replaced if we already know the current.
2016-01-19 16:01:30 +00:00
nicm
995af0e2b7
I no longer use my SourceForge address so replace it.
2016-01-19 15:59:12 +00:00
Thomas Adam
5d21faa99c
Merge branch 'obsd-master'
2016-01-16 02:01:10 +00:00
nicm
c9815307eb
Add hooks for alerts (bell, silence, activity), from Thomas Adam.
2016-01-16 00:36:53 +00:00
Thomas Adam
506adf3764
Merge branch 'obsd-master'
2016-01-15 12:01:11 +00:00
nicm
68d797587e
A couple of missing printflike attributes, from Andrey Starodubtsev.
2016-01-15 11:31:47 +00:00
Thomas Adam
e0cae08c04
Merge branch 'obsd-master'
2015-12-17 00:01:08 +00:00
nicm
99e9a4c786
send-keys -R should reset the input parser to ground state (so it can be
...
used to escape from, for example, printf '\033]2;').
2015-12-16 22:05:35 +00:00
Thomas Adam
e5caf64815
Merge branch 'obsd-master'
2015-12-15 14:01:12 +00:00
nicm
ac9778395f
Some hooks API changes to fire a hook while waiting another cmdq and
...
infrastructure that will be needed soon.
2015-12-15 13:43:07 +00:00
Thomas Adam
1a33ea9671
Merge branch 'obsd-master'
2015-12-15 02:01:14 +00:00
Thomas Adam
6ab17e3e15
Merge branch 'obsd-master'
2015-12-15 00:01:08 +00:00
nicm
12da13c9d1
Make the marked pane a cmd_find_state.
2015-12-15 00:00:01 +00:00
nicm
d5999f8b5c
Use cmd_find_clear_state instead of an extra function doing the same.
2015-12-14 23:30:58 +00:00
Thomas Adam
bc6137f9e4
Merge branch 'obsd-master'
2015-12-14 01:30:15 +00:00
nicm
a3129fd4e8
Instead of combined flags for -c, -s, -t, split into different sets
...
using an enum and simplify the parsing code.
2015-12-14 00:31:54 +00:00
Thomas Adam
5caec3020d
Merge branch 'obsd-master'
2015-12-13 23:46:58 +00:00
nicm
ecfeee2e82
Use member names in cmd_entry definitions so I stop getting confused
...
about the order.
2015-12-13 21:53:57 +00:00
Thomas Adam
00da99f2c4
Merge branch 'obsd-master'
2015-12-13 20:01:09 +00:00
nicm
72948d9f1d
-c needs to be able for fail for display-message.
2015-12-13 18:31:47 +00:00
Thomas Adam
d37a580085
Merge branch 'obsd-master'
2015-12-13 18:01:11 +00:00
nicm
9f5aca62a9
Use struct cmd_find_state directly and remove cmd_state_flag, also
...
change so that winlink is set even if an index is too.
2015-12-13 17:55:14 +00:00
nicm
9b7697db62
Change cmd_find_target to use a state struct from the caller.
2015-12-13 16:44:35 +00:00
Thomas Adam
ae5ddfdc1a
Merge branch 'obsd-master'
2015-12-13 16:01:13 +00:00
nicm
ff599f4004
Remove the cmd_find_{session,window,pane,index} functions (which are
...
just wrappers around cmd_find_target) and just use cmd_find_target
directly.
2015-12-13 15:32:12 +00:00
nicm
4a4daf1303
Instead of every command resolving the target (-t or -s) itself, prepare
...
the state (client, session, winlink, pane) for it it before entering the
command. Each command provides some flags that tell the prepare step
what it is expecting.
This is a requirement for having hooks on commands (for example, if you
hook "select-window -t1:2", the hook command should to operate on window
1:2 not whatever it thinks is the current window), and should allow some
other target improvements.
The old cmd_find_* functions remain for the moment but that layer will
be dropped later.
Joint work with Thomas Adam.
2015-12-13 14:32:38 +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
nicm
39cf9c9d31
Allow prefix and prefix2 to be set to None to disable (useful if you
...
would rather bind the prefix in the root table).
2015-12-12 18:19:00 +00:00
Thomas Adam
2a6b215328
Merge branch 'obsd-master'
2015-12-11 18:01:11 +00:00
nicm
88bc8f3528
Style nits and line wrapping of function declarations.
2015-12-11 16:37:21 +00:00
Thomas Adam
2a3456cd3b
Merge branch 'obsd-master'
2015-12-11 16:01:16 +00:00
nicm
bd5918760e
We cannot do hooks_find and then hooks_remove because it might have come
...
from the parent (global) tree, instead make it remove by name like options.
While here, also tidy up a few bits of options and hooks handling (use
RB_FOREACH_SAFE, and a helper function for the free).
2015-12-11 15:46:57 +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
nicm
8f671d3eef
Spacing nits.
2015-12-08 08:14:04 +00:00
Thomas Adam
5862f59ed7
Conflicts:
...
Makefile
2015-12-08 07:11:09 +00:00
nicm
d2fb0efcd1
Add hooks infrastructure, basic commands (set-hook, show-hooks) and a
...
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.
2015-12-08 01:10:31 +00:00
Thomas Adam
bac8c72381
Merge branch 'obsd-master'
2015-12-07 10:01:09 +00:00
nicm
b9563340b7
Fix bell indicators across detach, reported by Torbjorn Lonnemark, diff
...
from Thomas Adam.
2015-12-07 09:47:41 +00:00
Thomas Adam
9fe8b28746
Merge branch 'obsd-master'
2015-11-27 15:41:28 +00:00
nicm
6a2ca34216
Do not set a limit on the length of commands when printing them.
2015-11-27 15:06:43 +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
62d3af17f9
Make environ_set va_args and use it to tidy up some calls. Also add a
...
missing word in manpage (from jmc).
2015-11-24 23:46:15 +00:00
nicm
3ff46b2e43
Shell command from -c doesn't have to be global, pass it as an argument.
2015-11-24 23:22:51 +00:00
nicm
c913fb99b6
Tidy the code that works out the socket path, and just use the full path
...
in the global socket_path rather than copying it.
2015-11-24 22:27:22 +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
nicm
9cccb8c115
Make the log stuff a bit tidier with some helper functions.
2015-11-24 21:19:46 +00:00
Thomas Adam
534f9e3ab1
Merge branch 'obsd-master'
2015-11-24 10:01:13 +00:00
nicm
b32ce34cf2
Don't allow options in table without scope set.
2015-11-24 09:34:55 +00:00
Thomas Adam
3f47ff6ecd
Merge branch 'obsd-master'
2015-11-24 00:01:16 +00:00
nicm
2adf3f42ee
Partly revert previous, it is harmless to keep support for UTF-8 mouse
...
mode inside tmux, just no longer support it for tmux itself.
2015-11-23 23:47:57 +00:00
Thomas Adam
b642b3c8e3
Merge branch 'obsd-master'
2015-11-23 21:21:12 +00:00
nicm
32e510bd70
Remove support for the UTF-8 mouse extension. This was a briefly used,
...
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.
2015-11-23 20:53:09 +00:00
Thomas Adam
78a00c845c
Merge branch 'obsd-master'
...
Conflicts:
tmux.h
2015-11-21 14:24:33 +00:00
nicm
fce56c56ef
Instead of separate tables for different types of options, give each
...
option a scope type (server, session, window) in one table.
2015-11-20 12:01:19 +00:00
nicm
374e273df5
Only assume pasting with at least two characters, reduces problems for
...
people who can type ^B c very fast, or who are using tmux inside
something else that buffers.
2015-11-19 22:46:46 +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
Thomas Adam
8fa822b521
Merge branch 'obsd-master'
2015-11-18 14:01:12 +00:00
nicm
64571368dc
Sync the entire xmalloc.[ch] with the other users, but with the addition
...
of xrealloc, xvasprintf, xvsnprintf.
2015-11-18 13:06:54 +00:00
Thomas Adam
1686a15fb6
Merge branch 'obsd-master'
2015-11-16 00:01:10 +00:00
nicm
661d0dfac9
Make key_code unsigned long long not uint64_t which is more portable for
...
printf formats, and move UTF8_SIZE define down to near the rest of the
UTF-8 bits.
2015-11-15 22:50:38 +00:00
Thomas Adam
f12d7f0d4b
Merge branch 'obsd-master'
2015-11-14 12:01:09 +00:00
nicm
205d15e82d
All these return values from utf8_* are confusing, use an enum.
2015-11-14 11:45:43 +00:00
Thomas Adam
7b4b78b419
Merge branch 'obsd-master'
2015-11-14 11:38:52 +00:00
Thomas Adam
7b749eff35
Merge branch 'obsd-master'
...
Conflicts:
server.c
tmux.c
2015-11-14 11:38:30 +00:00
nicm
64333e3ef8
Be more strict about invalid UTF-8.
2015-11-14 10:56:31 +00:00
nicm
c56b81a2ce
Push stdout and stderr to clients more aggressively, and add an event to
...
continue if the send fails.
2015-11-14 09:41:06 +00:00
Thomas Adam
3df4959f51
Merge branch 'obsd-master'
...
Conflicts:
Makefile
2015-11-13 10:42:45 +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
4f88344df3
Merge branch 'obsd-master'
2015-11-12 14:01:14 +00:00
nicm
a209ea3953
Add utf8_padcstr and use it to align columns in list-keys.
2015-11-12 12:43:36 +00:00
nicm
d6daf37df4
Tidy utf8.c a little: build table on first use, and make utf8_width take
...
a u_int rather than splitting and then combining again in utf8_split.
2015-11-12 12:19:57 +00:00
Thomas Adam
5f483499f3
Merge branch 'obsd-master'
2015-11-12 12:01:17 +00:00
nicm
c41673f3fa
If we know the terminal outside tmux is not UTF-8, replace UTF-8 in
...
error messages and whatnot with underscores the same as we do when we
draw UTF-8 characters as part of the screen.
2015-11-12 11:10:50 +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
69e0b8326a
Support UTF-8 key bindings by expanding the key type from int to
...
uint64_t and converting UTF-8 to Unicode on input and the reverse on
output. (This allows key bindings, there are still omissions - the
largest being that the various prompts do not accept UTF-8.)
2015-11-12 11:05:34 +00:00
Thomas Adam
c975de2e07
Merge branch 'obsd-master'
...
Conflicts:
server.c
2015-10-31 23:56:35 +00:00
nicm
abb4e9e2fa
The output log is only useful once and it means creating a file, so open
...
it once at startup instead of in every call to tty_open.
2015-10-31 13:12:03 +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
nicm
07b0ea03c3
Break the common process set up, event loop and imsg dispatch code
...
between server and client out into a separate internal API. This will
make it easier to add another process.
2015-10-27 13:23:24 +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
4acc8d0ff5
Merge branch 'obsd-master'
...
Conflicts:
cmd-find.c
2015-10-25 09:21:37 +00:00
nicm
14da999408
Format for scroll position, from Jorge Morante.
2015-10-23 16:02:21 +00:00
Thomas Adam
bbdc08780c
Merge branch 'obsd-master'
2015-10-18 22:01:08 +01:00
nicm
174a2ad731
Pass current directory as a string rather than a file descriptor because
...
pledge doesn't let us pass directory file descriptors.
2015-10-18 20:42:42 +00:00
Thomas Adam
20c3adca41
Merge branch 'obsd-master'
2015-09-25 18:01:09 +01:00
nicm
28f23f18e9
Free the history when it is cleared, based on a diff from Carlo Cannas.
2015-09-25 15:53:07 +00:00
Thomas Adam
a3bce7a322
Merge branch 'obsd-master'
2015-09-17 00:01:08 +01:00
nicm
a4b4b29987
Rename cmd_q dead flag to a general flags bitmask (will be more flags later).
2015-09-16 22:24:54 +00:00
Thomas Adam
4afe26fa82
Merge branch 'obsd-master'
2015-09-14 14:01:09 +01:00
nicm
8da6de3e66
Style nit, int for flags not u_int.
2015-09-14 11:57:22 +00:00
Thomas Adam
74b958ecbe
Merge branch 'obsd-master'
...
Conflicts:
Makefile
2015-09-14 12:42:19 +01:00
nicm
af16ce6ad9
When the active pane changes, redraw panes if the style has
...
changed. From Cam Hutchison.
2015-09-14 11:34:50 +00:00
nicm
16efa84838
Make refresh-client force update of jobs, from Sina Siadat.
2015-09-14 10:25:52 +00:00
nicm
901c2eb20a
Add copy-mode -e to exit copy mode when scrolling off the bottom, useful
...
for quick view of history, from Cam Hutchison.
2015-09-13 13:31:40 +00:00
nicm
a3de5dbab1
Merge delete-buffer into cmd-set-buffer.c and change the paste buffer
...
API so it has one paste_free() rather than free_top and free_name
(everywhere that uses it already has the right pointer).
2015-09-11 14:41:50 +00:00
Nicholas Marriott
66c4ed98d6
Fix bad merge.
2015-09-10 14:59:16 +01: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
38e3baab2a
A one line helper function is a little silly.
2015-09-02 17:43:25 +00:00
nicm
8121127606
We no longer need the terminal service class, so don't bother asking for it.
2015-09-02 17:37:54 +00:00
nicm
69a2d46ee5
Remove dead_clients which is no longer used.
2015-09-01 11:13:39 +00:00
nicm
952ba84611
Work out config file when needed not at startup.
2015-09-01 10:10:59 +00:00
nicm
83157c02d6
Move initial conf load into cfg.c.
2015-09-01 10:01:56 +00:00
nicm
2a836bc306
All the cmd_*_entry declarations do not need to be in tmux.h.
2015-09-01 09:48:34 +00:00
nicm
6a539c00df
Path from $TMUX does not need to be global anymore.
2015-08-30 22:56:36 +00:00
nicm
c6e9160c67
Login shell can be a client flag, and move the exec code into client.c.
2015-08-30 22:40:25 +00:00
nicm
dd92b6e83d
Event base does not need to be global.
2015-08-30 22:19:07 +00:00
Thomas Adam
cb89f2f2a1
Merge branch 'obsd-master'
...
Conflicts:
Makefile
format.c
2015-08-30 21:44:01 +01:00
nicm
5047670693
Remove some old prototypes and unused functions.
2015-08-29 23:55:55 +00:00
nicm
52bbac506c
struct args_entry can go into arguments.c.
2015-08-29 23:19:52 +00:00
nicm
373ef850e0
paste_send_pane can be merged into cmd-paste-buffer.c now.
2015-08-29 09:36:46 +00:00
nicm
b569585000
Move struct paste_buffer out of tmux.h.
2015-08-29 09:25:00 +00:00
nicm
b5aaefc727
Move alerts onto events rather than checking every loop.
2015-08-29 08:30:54 +00:00
nicm
b7861f34ba
Better take on reducing the name timer. Again check for name changes in
...
the main loop after events that may have changed the pane, but do so at
most once every 500 millis. If the pane changed too soon, use a timer to
ensure that a check happens later.
2015-08-29 00:29:15 +00:00
nicm
55b8d74561
Revert previous; we do need a timer, until I have a better idea. We
...
can't do the name check every loop, because that is too expensive, and
we can't make sure it only happens infrequently because we have no idea
when the next change will happen.
2015-08-28 16:10:46 +00:00
nicm
e2100c5f5f
We now only checking for name changes when the active pane has changed,
...
but that can only happen when we have already been woken up by a read
event, so there is no need for a timer, we can just check the changed
flag on the end of that read event (we already loop over the windows to
check for bells etc anyway).
2015-08-28 15:51:48 +00:00
Thomas Adam
486421ceff
Merge branch 'obsd-master'
2015-08-28 16:01:09 +01:00
nicm
f6a0f8730e
Per-session timers for locking, and remove the global one-second timer.
2015-08-28 13:12:20 +00:00
Thomas Adam
84eabb2658
Merge branch 'obsd-master'
2015-08-28 14:01:11 +01:00
nicm
57cc4d45d5
Make session_update_activity more useful and use it in more places.
2015-08-28 13:01:03 +00:00
nicm
6419f66523
Give clock mode its own timer.
2015-08-28 12:25:42 +00: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
031d7ce840
Merge branch 'obsd-master'
2015-08-28 10:01:08 +01:00
nicm
fc58e44f89
Only do the automatic-rename dance if the pane has changed (seen output,
...
or new active pane).
2015-08-28 07:49:24 +00:00
Thomas Adam
73b4d098ce
Merge branch 'obsd-master'
2015-07-29 14:01:09 +01:00
nicm
5ec3621101
status_out and associated data structures are no longer used.
2015-07-29 11:56:02 +00:00
Thomas Adam
a568aaa0c0
Merge branch 'obsd-master'
2015-07-28 18:01:08 +01:00
nicm
b254115acd
Tidy up the way terminals are described and move some structs out of tmux.h.
2015-07-28 15:18:10 +00:00
Thomas Adam
18a64ad52d
Merge branch 'obsd-master'
2015-07-20 18:01:10 +01:00
nicm
92af3766ec
Add an option (history-file) for a file to save/restore command prompt
...
history, from Olof-Joachim Frahm.
2015-07-20 15:50:04 +00:00
Thomas Adam
07aef38591
Merge branch 'obsd-master'
2015-07-13 18:01:09 +01:00
nicm
e45d624df2
Fix line endings.
2015-07-13 15:51:31 +00:00
nicm
c7374c31c4
Initialize cwd fd to -1 so that we don't close fd 0 if the client is
...
destroyed before it is changed. Also allow ttyname() to fail. Fixes
problems when running out of file descriptors reported by Bruno Sutic.
2015-07-13 15:49:31 +00:00
Thomas Adam
21a2ccc5f1
Merge branch 'obsd-master'
2015-06-17 20:01:12 +01:00
Thomas Adam
a584e11d6b
Merge branch 'obsd-master'
2015-06-17 18:01:07 +01:00
nicm
0ff335961e
Move the shuffle code from new-window -a into a function and add a -a
...
flag for move-window too. From Thomas Adam.
2015-06-17 16:50:28 +00:00
nicm
021cdbe1c0
Use an explicit job state instead of avoid closing our side of the
...
socketpair and setting it to -1 to mark when the other side is
closed. This avoids closing it while the libevent bufferevent still has
it (it could try to add it to the polled set which some mechanisms don't
like). Fixes part a problem reported by Bruno Sutic.
2015-06-17 16:44:49 +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
7acc4addb5
Merge branch 'obsd-master'
...
Conflicts:
client.c
tmux.1
tmux.c
2015-06-07 23:42:25 +01:00
nicm
c4e811e519
Add -E flag when attaching or switching client to bypass
...
update-environment, from Steven Lu.
2015-06-07 21:39:39 +00:00
nicm
55b96a5bd5
Handle the RGB colour escape sequence (\033[38;2;<r>;<g>;<b>m and 48;2)
...
like xterm(1) does, by mapping to the nearest in the 256 colour palette.
2015-06-05 22:33:39 +00:00
nicm
641a9cd3f5
Similarly, for sessions use a callback to free rather than checking
...
every loop.
2015-06-05 18:18:32 +00:00
nicm
10e90ae01f
Change deref to the more sensible unref, and add a couple I missed before.
2015-06-05 18:06:30 +00:00
nicm
8c93b768e4
Instead of putting dead clients on a list and checking it every loop,
...
use event_once to queue a callback to deal with them. Also dead clients
with references would never actually be freed because the wrap-up
functions (the callback for stdin, or status_prompt_clear) would never
be called. So call them in server_client_lost.
2015-06-05 18:01:12 +00:00
nicm
6b2129696f
Move the nested check from client to server and compare the client tty
...
name to all the pane pty names instead of comparing socket paths. This
means that "new -d" will work without unsetting $TMUX.
2015-06-04 23:27:51 +00:00
Thomas Adam
02e348c069
Merge branch 'obsd-master'
2015-06-04 12:59:41 +01:00
nicm
a863834574
Add support for a single "marked pane". There is one marked pane in the
...
server at a time; it may be toggled or cleared with select-pane -m and
-M (the border is highlighted). A new target '~' or '{marked}' specifies
the marked pane to commands and it is the default target for the
swap-pane and join-pane -s flag (this makes them much simpler to use -
mark the source pane and then change to the target pane to run swapp or
joinp).
2015-06-04 11:43:51 +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
00471dc783
Merge branch 'obsd-master'
2015-05-13 09:44:11 +01:00
nicm
3f4ee98162
To replace c0-*, add a high watermark to the pty event, and also backoff
...
when the any of the ttys the pane is going to write to has buffered
enough data.
2015-05-12 22:40:38 +00:00
nicm
e958db09a7
Add bell-action "other" to pass through bells in all windows except the
...
current, suggested by Jan ONDREJ.
2015-05-12 15:27:46 +00:00
nicm
44364d7112
Remove the c0-* options which never really worked satisfactorily. Going
...
to try something else...
2015-05-11 10:10:16 +00:00
Thomas Adam
504b97b6a4
Merge branch 'obsd-master'
...
Conflicts:
tmux.h
2015-05-09 12:52:38 +01:00
nicm
92faa2eaeb
Put the tty structs together, and tabify.
2015-05-08 16:48:12 +00:00
nicm
592cb73a69
grid_marker_cell is no longer used.
2015-05-08 16:44:03 +00:00
nicm
74b2c40b1b
mode_key_entry can go into mode-key.c; also a few spaces->tabs.
2015-05-08 16:33:29 +00:00
nicm
a538141a72
window_choose_mode_item can move into window-choose.c.
2015-05-08 16:23:34 +00: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
nicm
1282bb81fe
array.h can be local to window-choose.c now.
2015-05-07 08:08:54 +00:00
nicm
0b39e6427f
Remove ARRAY_* from history and expand completion to complete a) layout
...
names and b) targets beginning with -t or -s.
2015-05-06 23:56:46 +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
dc2adc6bc1
Merge branch 'obsd-master'
2015-04-28 14:57:15 +01:00
nicm
771744426e
Add select-layout -o to undo the last layout change (apply the previously
...
set layout).
2015-04-28 10:43:13 +00:00
Thomas Adam
94a8ef1cae
Merge branch 'obsd-master'
...
Conflicts:
Makefile
tmux.1
2015-04-27 21:21:55 +01:00
nicm
95195f5258
Rewrite of the target resolution internals to be simpler and more
...
consistent but with much less duplication, but keeping the same internal
API. Also adds more readable aliases for some of the special tokens used
in targets (eg "{start}" instead of "^"). Some behaviours may have
changed, for example prefix matches now happen before fnmatch.
2015-04-27 16:25:57 +00:00
Thomas Adam
72e9ebf2ec
Merge branch 'obsd-master'
2015-04-25 20:45:02 +00:00
nicm
07dfdb974d
Make message log a TAILQ.
2015-04-25 18:33:59 +00:00
nicm
6dbd63ba4f
Move the functions to convert ids from strings into session.c and window.c.
2015-04-25 18:09:28 +00:00
Thomas Adam
56e1132db4
Merge branch 'obsd-master'
2015-04-25 10:02:46 +00:00
nicm
aeedb464a6
Convert clients list into a TAILQ.
2015-04-24 23:17:11 +00:00
nicm
583b4ab72b
Set working directory for run-shell and if-shell.
2015-04-24 22:19:36 +00:00
nicm
9a453dd354
Make session_has return a flag, returning the first winlink found is a
...
recipe for errors.
2015-04-22 15:32:33 +00:00
nicm
8d66f4fba4
Change the windows array into an RB tree and fix some places where we
...
were only looking at the first winlink for a window in a session.
2015-04-22 15:30:11 +00:00
nicm
89e80cabd5
window_index is only used in one place (window_destroy) so inline it there.
2015-04-22 15:05:03 +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
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
b25dc423b0
Merge branch 'obsd-master'
2015-04-20 15:44:27 +01:00
nicm
bf635e7741
Rewrite of tmux mouse support which was a mess. Instead of having
...
options for "mouse-this" and "mouse-that", mouse events may be bound as
keys and there is one option "mouse" that turns on mouse support
entirely (set -g mouse on).
See the new MOUSE SUPPORT section of the man page for description of the
key names and new flags (-t= to specify the pane or window under mouse
as a target, and send-keys -M to pass through a mouse event).
The default builtin bindings for the mouse are:
bind -n MouseDown1Pane select-pane -t=; send-keys -M
bind -n MouseDown1Status select-window -t=
bind -n MouseDrag1Pane copy-mode -M
bind -n MouseDrag1Border resize-pane -M
To get the effect of turning mode-mouse off, do:
unbind -n MouseDrag1Pane
unbind -temacs-copy MouseDrag1Pane
The old mouse options are now gone, set-option -q may be used to
suppress warnings if mixing configuration files.
2015-04-19 21:34:21 +00:00
nicm
ee123c2489
Support setting the default window and pane background colours (window
...
and active pane via window-style and window-active-style options, an
individual pane by a new select-pane -P flag). From J Raynor.
2015-04-19 21:05:27 +00:00
Thomas Adam
833fe5bdee
Merge branch 'obsd-master'
...
Conflicts:
cmd-pipe-pane.c
2015-02-06 19:07:43 +00:00
nicm
313f2263f8
status_replace can now become local to status.c and it no longer needs
...
the jobsflag argument. While here there is no need to repeat work that
format_defaults already does.
2015-02-06 17:21:08 +00:00
nicm
03758a50dc
Add format_expand_time and use it instead of status_replace where
...
command execution is not needed.
2015-02-06 17:11:39 +00:00
nicm
4946f74253
Wrap all the individual format_* calls in a single format_defaults
...
functions.
2015-02-05 10:29:43 +00:00
nicm
e5d9ceff18
There is no need to save the guard state because the function checks it
...
again anyway.
2015-02-05 10:26:29 +00:00
nicm
c9642ee213
Remove two unused arguments from status_replace.
2015-02-01 23:43:23 +00:00
nicm
16bdd970dc
Support blinking cursor mode, both the xterm CSI ?12 h/l and (the
...
backwards) screen CSI 34 h/l. From Guanpeng Xu.
2015-01-20 08:18:04 +00:00
Thomas Adam
5f8138faf5
Merge branch 'obsd-master'
...
Conflicts:
format.c
2014-12-19 19:22:19 +00:00
nicm
7a0c94b28a
Add pane_dead_status for exit status of dead panes.
2014-12-09 19:23:35 +00:00
Thomas Adam
ccbe2545d9
Merge branch 'obsd-master'
2014-12-03 08:41:08 +00:00
nicm
575fd1e322
Permit option values to be used in formats.
2014-12-02 23:19:45 +00:00
nicm
c403bfc894
Remove dead code, from Thomas Adam.
2014-11-30 08:03:29 +00:00
Thomas Adam
3e8efcc555
Merge branch 'obsd-master'
2014-11-19 09:22:03 +00:00
nicm
e0929262db
Label windows which are smaller than expected with a reason.
2014-11-14 02:19:47 +00:00
Thomas Adam
fc05bf255a
Merge branch 'obsd-master'
2014-11-09 00:15:51 +00:00
Nicholas Marriott
747cab4281
No need for $Id$ now.
2014-11-08 12:27:43 +00:00
nicm
e4bf1e5128
Add V for select line with vi(1) keys. From Juho Pohjala.
2014-11-06 09:17:25 +00:00
Thomas Adam
35ffd093d7
Merge branch 'obsd-master'
...
Conflicts:
Makefile
cmd-link-window.c
cmd-unlink-window.c
2014-10-29 12:51:21 +00:00
nicm
b496b1fe11
Move cfg_causes local into cfg.c and remove struct causelist.
2014-10-27 22:23:47 +00:00
nicm
68cb1c0e6b
Merge unlink-window into kill-window.
2014-10-22 23:11:41 +00:00
nicm
a02c2e55c0
Only redraw pane when it has actually changed.
2014-10-21 22:22:04 +00:00
Thomas Adam
562af864bd
Merge branch 'obsd-master'
...
Conflicts:
Makefile
cmd-list-commands.c
cmd-suspend-client.c
job.c
tmux.h
xmalloc.c
2014-10-21 07:11:44 +01:00
nicm
0a1a88d63c
Better format for printf format attributes.
2014-10-20 23:57:13 +00:00
nicm
4c42381410
Move template defines back into .c files.
2014-10-20 23:35:28 +00:00
nicm
900f6fc17e
Tidy up some includes.
2014-10-20 23:27:14 +00:00
nicm
45dfc5a074
Instead of setting up the default keys by building the key struct
...
directly with a helper function in the cmd_entry, include a table of
bind-key commands and pass them through the command parser and a
temporary cmd_q.
As well as being smaller, this will allow default bindings to be command
sequences which will probably be needed soon.
2014-10-20 22:29:25 +00:00
nicm
a27ba6e380
Add xreallocarray and remove nmemb argument from xrealloc.
2014-10-08 17:35:58 +00:00
Thomas Adam
2874a431c0
Merge branch 'obsd-master'
2014-09-25 11:29:54 +01:00
nicm
733cea8847
Wake up any clients waiting with the wait-for command when the server
...
exits.
2014-09-01 21:58:41 +00:00
nicm
4e956d545a
Various minor style and spacing nits.
2014-09-01 21:50:18 +00:00
nicm
29d20a55b6
Fix two copy mode problems:
...
1. In vi mode the selection doesn't include the last character if you
moved the cursor up or left.
2. In emacs mode the selection includes the last character if you moved
the cursor to the left.
From Balazs Kezes.
2014-08-11 22:18:16 +00:00
nicm
f518a077b1
Add flags to selectp to enable and disable input to a pane, from Anish
...
Athalye.
2014-08-11 22:14:30 +00:00
Thomas Adam
a131b82e95
Merge branch 'obsd-master'
...
Conflicts:
client.c
2014-08-09 20:31:36 +01:00
nicm
1ac96200a7
Remove support for the continuous reporting "any" mouse mode which never
...
really worked properly and is rarely used.
2014-08-09 07:33:37 +00:00
nicm
2056a9ef9e
Drop explicit support for F13-F20 and change to match the xterm terminfo
...
entry:
F13-F24 are S-F1 to S-F12
F25-F36 are C-F1 to C-F12
F37-F48 are C-S-F1 to C-S-F12
F49-F60 are M-F1 to M-F12
and F61-F63 are M-S-F1 to M-S-F3
This should be no difference for applications inside tmux, but means
that any key binding for F13 will need to be replaced by S-F1 and so on.
2014-07-21 10:25:48 +00:00
Thomas Adam
814e40522c
Merge branch 'obsd-master'
2014-06-20 12:59:43 +01:00
nicm
21ade85f24
Properly track switching G0 and G1 modes between US-ASCII and VT100 line
...
drawing rather than just treating them as SO and SI.
2014-06-06 13:21:41 +00:00
nicm
53cbae544f
Now that cmdlists are reference counted, there is no need for two-step
...
deletion via the dead_key_bindings tree. From Keith Amling.
2014-05-14 06:21:19 +00:00
Thomas Adam
bae95844d7
Merge branch 'obsd-master'
...
Conflicts:
format.c
window.c
2014-05-13 21:58:48 +01:00
nicm
b3e8d440ed
If multiple arguments are given to new-session, new-window,
...
split-window, respawn-window or respawn-pane, pass them directly to
execvp() to help avoid quoting problems. One argument still goes to "sh
-c" like before. Requested by many over the years. Patch from J Raynor.
2014-05-13 08:08:32 +00:00
nicm
b1a06ef22e
Add a copy mode key binding to copy to a named buffer. From J Raynor.
2014-05-13 07:54:20 +00:00
nicm
3dbacbb62b
Add support for named buffers. If you don't name a buffer, things work
...
much as before - buffers are automatically named "buffer0000",
"buffer0001" and so on and ordered as a stack. Buffers can be named
explicitly when creating ("loadb -b foo" etc) or renamed ("setb -b
buffer0000 -n foo"). If buffers are named explicitly, they are not
deleted when buffer-limit is reached. Diff from J Raynor.
2014-05-13 07:34:35 +00:00
nicm
f4ffaf5a7f
Just use char ** for argv like normal people, not char *const *.
2014-05-09 09:11:24 +00:00
nicm
94ccc6aeaa
Instead of forcing mouse scroll to 1 in choose mode, scale it down
...
instead. Means modifier keys still increase the line count, just not as
much. Based on a diff from Marcel Partap.
2014-05-08 07:54:47 +00:00
nicm
540f0b3e45
Both the two previous ways of navigating panes by direction have
...
irritating flaws:
a) The old way of always using the top or left if the choice is
ambiguous is annoying when the layout is unbalanced.
b) The new way of remembering the last used pane is annoying if the
layout is balanced and the leftmost is obvious to the user (because
clearly if we go right from the top-left in a tiled set of four we want
to end up in top-right, even if we were last using the bottom-right).
So instead, use a combination of both: if there is only one possible
pane alongside the current pane, move to it, otherwise choose the most
recently used of the choice.
2014-05-08 06:03:30 +00:00
Thomas Adam
3f54c9292f
Merge branch 'obsd-master'
2014-04-24 12:59:00 +01:00
nicm
bec6c807cd
There is no longer a need for a paste_stack struct or for global_buffers
...
to be global. Move to paste.c.
2014-04-24 09:14:43 +00:00
Thomas Adam
953c3ef47a
Merge branch 'obsd-master'
...
Conflicts:
Makefile
tmux.1
window.c
2014-04-23 11:26:11 +01:00
nicm
806520f025
Add some UTF-8 utility functions and use them to prevent the width limit
...
on formats from splitting UTF-8 characters improperly.
2014-04-17 15:37:55 +00:00
nicm
3e27be353d
Set PATH explicitly, either from client or session
...
environment. Previously it came from the session environment. From J
Raynor.
2014-04-17 13:02:59 +00:00
nicm
ada75af199
Don't limit the DCS buffer to 256 bytes, expand it as needed. Requested
...
by Suraj Kurapati.
2014-04-17 12:43:38 +00:00
nicm
2e98c9057d
Correct the dance to fix the active pane in join-pane by pulling the
...
(right) code from break-pane and window_remove_pane into a helper
function.
2014-04-17 09:13:13 +00:00
nicm
2740490e27
Remove the "info" message mechanism, this was only used for about five
...
mostly useless and annoying messages. Change those commands to silence
on success like all the others. Still accept the -q command line flag
and "quiet" server option for now.
2014-04-17 07:55:43 +00:00
nicm
992ef70fb6
Remove the monitor-content option and associated bits and bobs. It's
...
never worked very well. If there is a big demand for it to return, will
consider better ways to do it.
2014-04-17 07:36:45 +00:00
nicm
871b83cbab
Remove a leftover prototype and fix some spacing.
2014-04-16 21:16:19 +00:00
nicm
14a96df9ee
Remove the choose-list command to prepare for some later choose-* work.
2014-04-16 21:02:41 +00:00
Thomas Adam
0c99c7dbff
Merge branch 'obsd-master'
...
Conflicts:
Makefile
tty-keys.c
2014-04-05 12:36:14 +01:00
nicm
acef311fe3
Work out mouse scroll wheel effect when the mouse is first detected and
...
store it in struct mouse_event, reduce the scroll size the 3 but allow
shift to reduce it to 1 and meta and ctrl to multiply by 3 if the
terminal supports them, also support wheel in choose mode. From Marcel
Partap.
2014-04-03 08:20:29 +00:00
nicm
252a7373d6
Support UTF-8 with choose-buffer, from Kosuke ASAMI. Also make
...
buffer_sample bigger to let it trim at window right edge.
2014-04-02 18:12:18 +00:00
deraadt
d9960b2d4d
missed commit matching log.c
2014-04-01 05:50:30 +00:00
nicm
7bdb675469
GRID_DEBUG is no longer needed.
2014-03-31 21:42:27 +00:00
nicm
f155316be7
Remove unused log functions.
2014-03-31 21:42:05 +00:00
nicm
46593e7aa2
Add names for mouse button bits rather than using magic numbers, from
...
Marcel Partap.
2014-03-31 21:40:21 +00:00
nicm
fcdae6925a
Use hex constants rather than shifts for mouse events and flags, pointed
...
out by Marcel Partap.
2014-03-31 21:39:59 +00:00
nicm
0e4d1d8493
Add setb -a to append and a copy mode append command, from J Raynor with
...
minor changes.
2014-03-31 21:39:31 +00:00
nicm
b11de5adc7
Make session_attached a count and add session_many_attached flag.
2014-03-31 21:37:55 +00:00
nicm
9368914ee7
Add start-of-list, end-of-list, top-line and bottom-line in choice mode,
...
from madmaverick9 at roxxmail dot eu, similar diff a few days later from
Marcel Partap.
2014-03-31 21:36:43 +00:00
nicm
175f215187
Having three *clock* files is ridiculous, remove clock.c.
2014-03-31 21:34:08 +00:00
Nicholas Marriott
b1a87b2ee4
Remove log_debug2 as well and simplify log.c.
2014-03-07 16:05:29 +00:00
Nicholas Marriott
c5a30513ed
GRID_DEBUG is no longer needed.
2014-03-07 15:51:27 +00:00
Nicholas Marriott
ebe7bd7c8b
Remove unused log functions.
2014-03-07 15:49:09 +00:00
Nicholas Marriott
23e944c91d
Add names for mouse button bits rather than using magic numbers, from Marcel
...
Partap.
2014-03-06 12:00:30 +00:00
Nicholas Marriott
f15fcb6a1d
Use hex constants rather than shifts for mouse events and flags, pointed out by
...
Marcel Partap.
2014-03-06 11:53:46 +00:00
Nicholas Marriott
8c0edcbfa3
Add setb -a to append and a copy mode append command, from J Raynor with minor
...
changes.
2014-03-06 11:50:07 +00:00
Nicholas Marriott
b7f6356053
Make session_attached a count and add session_many_attached flag.
2014-03-06 11:25:27 +00:00
Nicholas Marriott
9134e4de1e
Add start-of-list, end-of-list, top-line and bottom-line in choice mode, from
...
madmaverick9 at roxxmail dot eu, similar diff a few days earlier from Marcel
Partap.
2014-02-26 22:22:07 +00:00
Nicholas Marriott
582c2671dd
Having three *clock* files is ridiculous, remove clock.c.
2014-02-26 21:59:33 +00:00
Nicholas Marriott
4273c1b80e
Use utempter to update utmp if it's around for configure, from madmaverick9 at
...
roxxmail dot eu.
2014-02-24 23:07:22 +00:00
nicm
f1828921df
Change terminal-overrides to a server option (now that we have them), it
...
doesn't make much sense as a session option.
2014-02-23 00:53:06 +00:00
Thomas Adam
d50e47fc4a
Merge branch 'obsd-master'
...
Conflicts:
Makefile
cmd-server-info.c
cmd-start-server.c
2014-01-31 21:39:56 +00:00
nicm
9f02feb9d0
Break up and simplify screen_redraw_screen.
2014-01-31 14:19:24 +00:00
nicm
945339b443
Allow replacing each of the many sets of separate foo-{fg,bg,attr}
...
options with a single foo-style option. For example:
set -g status-fg yellow
set -g status-bg red
set -g status-attr blink
Becomes:
set -g status-style fg=yellow,bg=red,blink
The -a flag to set can be used to add to rather than replace a style. So:
set -g status-bg red
Becomes:
set -ag status-style bg=red
Currently this is fully backwards compatible (all *-{fg,bg,attr} options
remain) but the plan is to deprecate them over time.
From Tiago Cunha.
2014-01-28 23:07:09 +00:00
nicm
c930fd5ff6
Remember the last active pane in the top-bottom or left-right cell so
...
that it can be restored when moving back to that cell with selectp
-L/-R/etc. From Suraj N Kurapati.
2014-01-28 22:19:17 +00:00
nicm
1a0d3cd5d3
Allow attach-session -t to accept a window and pane to select them on
...
attach. Based on a diff from J Raynor.
2014-01-09 14:20:55 +00:00
Thomas Adam
3e498cdb49
Merge branch 'obsd-master'
2013-11-14 07:51:26 +00:00
nicm
7fa55b0419
Key to swap to other end of selection (bound to o with vi keys), from J
...
Raynor.
2013-10-23 11:31:03 +00:00
nicm
bf35441608
Do not run any command line command from the client which starts the
...
server until after the configuration file completes. This prevents it
racing against run-shell or if-shell in .tmux.conf that run in the
background.
2013-10-20 17:28:43 +00:00
nicm
d0566a474a
Remove the KERN_PROC_CWD the proc_current_path format (which is the only
...
thing that uses it now).
2013-10-10 12:39:24 +00:00
nicm
c1ccefc62d
We accidentally haven't been using $TMUX to work out the session for a
...
while and in fact it is less useful that using the client ttyname. So
don't bother and don't pass it from the client. If we need it in future
it is in c->environ.
2013-10-10 12:29:35 +00:00
nicm
282c5f9644
Alter how tmux handles the working directory to internally use file
...
descriptors rather than strings.
- Each session still has a current working directory.
- New sessions still get their working directory from the client that
created them or its attached session if any.
- New windows are created by default in the session working directory.
- The -c flag to new, neww, splitw allows the working directory to be
overridden.
- The -c flag to attach let's the session working directory be changed.
- The default-path option has been removed.
To get the equivalent to default-path '.', do:
bind c neww -c $PWD
To get the equivalent of default-path '~', do:
bind c neww -c ~
This also changes the client identify protocol to be a set of messages rather
than one as well as some other changes that should make it easier to make
backwards-compatible protocol changes in future.
2013-10-10 12:26:34 +00:00
nicm
10c38436aa
Similarly for MSG_COMMAND - allow full imsg limit not arbitrary 2048.
2013-10-10 12:13:56 +00:00
nicm
6c093010e0
Remove CMD_SENDENVIRON.
2013-10-10 12:09:34 +00:00
nicm
4c9f41f1ad
Pass flags into cmdq_guard as an argument since sometimes cmdq->cmd can
...
be NULL. Avoids crash when a command in a command client can't be
parsed.
2013-10-10 11:45:28 +00:00
Nicholas Marriott
e9b09faab2
We accidentally haven't been using $TMUX to work out the session for a while
...
and in fact it is less useful that using the client ttyname. So don't bother
and don't pass it from the client. If we need it in future it is in c->environ.
2013-10-06 22:38:33 +01:00
Nicholas Marriott
4538c269d0
Alter how tmux handles the working directory to internally use file descriptors
...
rather than strings.
- Each session still has a current working directory.
- New sessions still get their working directory from the client that created
them or its attached session if any.
- New windows are created by default in the session working directory.
- The -c flag to new, neww, splitw allows the working directory to be
overridden.
- The -c flag to attach let's the session working directory be changed.
- The default-path option has been removed.
To get the equivalent to default-path '.', do:
bind c neww -c $PWD
To get the equivalent of default-path '', do:
bind c neww -c '#{pane_current_path}'
The equivalent of default-path '~' is left as an exercise for the reader.
This also changes the client identify protocol to be a set of messages rather
than one as well as some other changes that should make it easier to make
backwards-compatible protocol changes in future.
2013-10-06 21:02:23 +01:00
Nicholas Marriott
fa1375c09f
Similarly for MSG_COMMAND - allow full imsg limit not arbitrary 2048.
2013-10-06 00:48:24 +01:00
Nicholas Marriott
f141e9b37a
Instead of fixed size buffers for some messages, send only the string length.
2013-10-06 00:28:35 +01:00
Nicholas Marriott
3fba377ddd
retcode -> retval for exit message.
2013-10-06 00:18:00 +01:00
Nicholas Marriott
01a4752503
Merge IDENTIFY_* flags with CLIENT_* flags.
2013-10-06 00:10:40 +01:00
Nicholas Marriott
d66cbf20f7
Bump protocol version and add new message types.
2013-10-06 00:06:01 +01:00
Nicholas Marriott
7e4314eccb
Remove CMD_SENDENVIRON.
2013-10-06 00:02:52 +01:00
Nicholas Marriott
9389cfbec9
Support -c for new-session, based on code from J Raynor.
2013-10-01 23:48:03 +01:00
Nicholas Marriott
06d101657f
No space in lsw -a targets.
2013-08-28 12:59:13 +01:00
Nicholas Marriott
b2fe9bff3f
Merge branch 'master' of ssh://git.code.sf.net/p/tmux/tmux-code
2013-08-21 18:03:07 +01:00
Nicholas Marriott
a36da3a878
Remove the barely-used and unnecessary command check() function.
2013-08-21 18:01:40 +01:00
Thomas
c103f2fbcb
Clear window->flags when clearing winlinks
...
When clearing WINLINK_ALERTFLAGS for all sessions, we must also, for that
window, clear the window->flags as well, otherwise sessions may well still
see flags for winlinks long since cleared.
This therfore introduces WINDOW_ALERTFLAGS to help with this.
2013-08-20 13:03:53 +01:00
Nicholas Marriott
23519fc0b4
Add automatic-rename-format option allowing automatic rename to use something
...
other than pane_current_command.
2013-08-19 22:16:11 +01:00
Nicholas Marriott
1c271852fc
Pass flags into cmdq_guard as an argument since sometimes cmdq->cmd can be
...
NULL. Avoids crash when a command in a command client can't be parsed.
2013-08-01 23:35:03 +01:00
Nicholas Marriott
e8567098a4
Add support for Cgywin, apparently it is enough just to open the tty again in
...
the server and fd passing is not necessary. Needs some ifdefs unfortunately but
no way around that and some of them can go next time we're willing to do a
protocol bump. Patch from J Raynor jxraynor at gmail dot com.
2013-07-12 22:21:42 +01:00
Thomas Adam
bdea2f9eda
Merge branch 'obsd-master'
2013-07-06 11:18:49 +01:00
Nicholas Marriott
f884fff869
Implement s, S, C mode switch commands in vi(1) mode, from Ben Boeckel.
2013-07-05 14:38:23 +00:00
Nicholas Marriott
c7a121cfc0
Focus events can cause trouble if left on and they can't be turned off
...
during idle periods (like the other states are) because we'd miss
events. So add a server option to control them. Defaults to off.
2013-06-28 20:55:16 +01:00
Nicholas Marriott
828145456c
Don't set TMUX_CONF in tmux.h.
2013-06-25 09:48:09 +01:00
Nicholas Marriott
3977dba761
Focus events can cause trouble if left on and they can't be turned off
...
during idle periods (like the other states are) because we'd miss
events. So add a server option to control them. Defaults to off.
2013-06-23 13:10:46 +00:00
Thomas Adam
06b5805479
Merge branch 'obsd-master'
2013-06-13 18:12:49 +01:00
Nicholas Marriott
13441e8cb8
The actual terminfo entries we ended up with for cursor changes are Cs,
...
Ce, Ss and Se (not Cc, Ce, Cs, Csr). So use and document these instead
of the ones we were using earlier.
2013-06-02 07:52:15 +00:00
Thomas Adam
399d7380a5
Merge branch 'obsd-master'
2013-05-31 21:44:42 +01:00
Nicholas Marriott
a0cf65db77
Instead of eating 1024 bytes or so for the arguments of each command,
...
save memory by using an RB tree. From Tiago Cunha.
2013-05-31 12:19:34 +00:00
Thomas Adam
76cb088d16
Merge branch 'obsd-master'
...
Conflicts:
tmux.h
2013-05-25 11:48:12 +01:00
Nicholas Marriott
e323101ede
Rename global configuration define.
2013-04-24 10:01:32 +00:00
Nicholas Marriott
ce52e45d44
Merge branch 'master' of ssh://git.code.sf.net/p/tmux/tmux-code
2013-04-24 11:00:32 +01:00
Nicholas Marriott
4f3c31a6b6
Use sysconfdir for the location of global tmux.conf (but default it to /etc),
...
based on changes from Dagobert Michelsen.
2013-04-24 10:57:03 +01:00
Thomas Adam
cd60e57b6a
Merge branch 'obsd-master'
...
Sync from OpenBSD.
2013-04-23 08:26:04 +01:00
Nicholas Marriott
3d2b7d5bce
When using choose-tree -u, start with the current window
...
highlighted. From Thomas Adam.
2013-04-22 22:17:29 +00:00
Thomas Adam
b58bca9a72
Merge branch 'obsd-master'
...
Conflicts:
tmux.c
2013-04-13 17:05:49 +01:00
Nicholas Marriott
982354765b
Remove tmux's (already minimal) 88 colour support. Such terminals are
...
few and unnecessary.
2013-03-27 11:17:12 +00:00
Nicholas Marriott
43fb9835fa
Add -P and -F to new-session.
2013-03-25 11:44:00 +00:00
Nicholas Marriott
6fee3e9e4b
Rename session idx to session id throughout and add $ prefix to targets
...
to use it, extended from a diff from George Nachman.
2013-03-25 10:11:45 +00:00
Nicholas Marriott
410a3abbef
Add a wait-for command which blocks a client on a named channel until it
...
is woken up again (with wait-for -S). From Thiago Padilha.
2013-03-25 10:09:05 +00:00
Nicholas Marriott
14fad6a5cc
Add -A flag to new-session to make it behave like attach-session if the
...
session exists. If -A is used, -D behaves like -d to attach-session.
2013-03-24 09:58:40 +00:00
Nicholas Marriott
20636d956d
Add a command queue to standardize and simplify commands that call other
...
commands and allow a command to block execution of subsequent
commands. This allows run-shell and if-shell to be synchronous which has
been much requested.
Each client has a default command queue and commands are consumed one at
a time from it. A command may suspend execution from the queue by
returning CMD_RETURN_WAIT and then resume it by calling cmd_continue() -
for example run-shell does this from the callback that is fired after
the job is freed.
When the command queue becomes empty, command clients are automatically
exited (unless attaching). A callback is also fired - this is used for
nested commands in, for example, if-shell which can block execution of
the client's cmdq until a new cmdq becomes empty.
Also merge all the old error/info/print functions together and lose the
old curclient/cmdclient distinction - a cmdq is bound to one client (or
none if in the configuration file), this is a command client if
c->session is NULL otherwise an attached client.
2013-03-24 09:54:10 +00:00
Nicholas Marriott
a60687f9ba
Handle focus events from the terminal, from Aaron Jensen.
2013-03-24 09:28:59 +00:00
Nicholas Marriott
7f191c7951
Add -P and -F to new-session.
2013-03-22 17:01:15 +00:00
Nicholas Marriott
eaaeb28cda
Add session_set_current helper function, extracted from a diff from
...
Aaron Jensen.
2013-03-22 16:00:26 +00:00
Nicholas Marriott
8478895eeb
Add -e flag to capture-pane to include embedded ANSI SGR escape
...
sequences, from George Nachman.
2013-03-22 15:51:54 +00:00
Nicholas Marriott
db66d85176
Fix double space in sessions template.
2013-03-22 10:38:13 +00:00
Nicholas Marriott
f0efa576e0
Add resize-pane -x and -y for absolute pane size (much requested).
2013-03-22 10:37:39 +00:00
Nicholas Marriott
67b4d5b609
Support the latest theory for mouse input, this is enabled/disabled with
...
SM/RM 1006 and is similar in style to SGR input: \033[<b;x;yM or
\033[b;x;ym. From Egmont Koblinger.
2013-03-22 10:33:50 +00:00
Nicholas Marriott
10682b9e7e
Instead of loads of little screen_write_*_on and off functions which
...
just change mode flags, just have screen_write_mode_set and
screen_write_mode_clear.
2013-03-21 18:47:56 +00:00
Nicholas Marriott
3665be7c44
Tidy by splitting default key tables into two.
2013-03-21 16:50:22 +00:00
Nicholas Marriott
c982279950
Fix constness of cmd_template_replace, window_choose_add_item and
...
window_choose_add_window.
2013-03-21 16:19:25 +00:00
Nicholas Marriott
180faf73af
Allow choose commands to be used outside tmux, so long as at least one
...
client is attached.
2013-03-21 16:09:59 +00:00
Nicholas Marriott
6ddb06d372
Extend jobs to support writing and use that for copy-pipe instead of popen,
...
from Chris Johnsen.
2013-03-21 14:24:33 +00:00
Nicholas Marriott
c5ad47ee7c
Only send end guard if begin was sent, from George Nachman.
2013-03-13 07:31:36 +00:00
Nicholas Marriott
c41d92d27a
Add time and a command count to control mode guards, based on code from George
...
Nachman.
2013-03-11 09:35:44 +00:00
Nicholas Marriott
f47a063841
Rename session idx to session id throughout and add $ prefix to targets to use
...
it, extended from a diff from George Nachman.
2013-03-07 10:07:22 +00:00
Nicholas Marriott
7fd4d49d56
Add a wait-for command which blocks a client on a named channel until it is
...
wokrn up again (with wait-for -S). From Thiago Padilha.
2013-03-06 09:57:26 +00:00
Nicholas Marriott
aaeee34c32
Preserve trailing spaces with capture-pane -J, from George Nachman.
2013-03-04 11:03:03 +00:00
Nicholas Marriott
f339cfd315
Add -A flag to new-session to make it behave like attach-session if the session
...
exists. If -A is used, -D behaves like -d to attach-session.
2013-02-24 00:43:28 +00:00
Nicholas Marriott
c5239c5984
Add resize-pane -Z to temporary zoom the active pane to occupy the full window
...
or unzoom (restored to the normal layout) if it already zoomed, bound to C-b z
by default. The pane is unzoomed on pretty much any excuse whatsoever.
We considered making this a new layout but the requirements are quite different
from layouts so decided it is better as a special case. Each current layout
cell is saved, a temporary one-cell layout generated and all except the active
pane set to NULL.
Prompted by suggestions and scripts from several. Thanks to Aaron Jensen and
Thiago Padilha for testing an earlier version.
2013-02-24 00:25:03 +00:00
Nicholas Marriott
3964309c67
Add a command queue to standardize and simplify commands that call other
...
commands and allow a command to block execution of subsequent commands. This
allows run-shell and if-shell to be synchronous which has been much requested.
Each client has a default command queue and commands are consumed one at a time
from it. A command may suspend execution from the queue by returning
CMD_RETURN_WAIT and then resume it by calling cmd_continue() - for example
run-shell does this from the callback that is fired after the job is freed.
When the command queue becomes empty, command clients are automatically exited
(unless attaching). A callback is also fired - this is used for nested commands
in, for example, if-shell which can block execution of the client's cmdq until
a new cmdq becomes empty.
Also merge all the old error/info/print functions together and lose the old
curclient/cmdclient distinction - a cmdq is bound to one client (or none if in
the configuration file), this is a command client if c->session is NULL
otherwise an attached client.
2013-02-23 22:25:58 +00:00
Nicholas Marriott
ee0f8adfac
Handle focus events from the terminal, from Aaron Jensen.
2013-02-23 10:01:34 +00:00
Nicholas Marriott
3a2e9d805a
Fix error reporting for client commands by adding a flag to cmd_find_client to
...
tell it whether or not to show errors, sometimes it's needed and sometimes not.
2013-02-22 23:04:53 +00:00
Nicholas Marriott
1994ae4640
Missing PANE_RESIZE define.
2013-02-22 21:47:34 +00:00
Nicholas Marriott
4c9f9438ff
Add support for focus notifications when tmux pane changes, based on work by
...
Aaron Jensen.
2013-02-22 07:23:11 +00:00
Nicholas Marriott
8c50f625b0
Add session_set_current helper function, extracted from a diff from Aaron
...
Jensen.
2013-02-21 16:54:13 +00:00
Nicholas Marriott
b8b5631d9d
Add -C and -J to capture pane to escape control sequences and to join wrapped
...
line, based on a diff from George Nachman.
2013-02-21 09:35:01 +00:00
Nicholas Marriott
afd5e978cf
Need to set clients in context before changing their reference count.
2013-02-20 10:25:15 +00:00
Nicholas Marriott
c3859d1df1
Add copy-pipe mode command to copy selection and also pipe to a command.
2013-02-19 17:49:53 +00:00
Nicholas Marriott
4d1d4d6e8e
Add -e flag to capture-pane to include embedded ANSI SGR escape sequences, from
...
George Nachman.
2013-02-19 09:55:02 +00:00
Nicholas Marriott
293e331d69
Add functions to allocate and free command contexts rather than doing it all on
...
the stack.
2013-02-18 23:20:21 +00:00
Nicholas Marriott
44452823b7
Fix double space in sessions template.
2013-02-18 17:12:58 +00:00
Nicholas Marriott
e4bb87032e
Add resize-pane -x and -y for absolute pane size.
2013-02-18 17:00:35 +00:00
Nicholas Marriott
e5eee7de0c
Support the latest theory for mouse input, this is enabled/disabled with SM/RM
...
1006 and is similar in style to SGR input: \033[<b;x;yM or \033[b;x;ym. From
Egmont Koblinger.
2013-02-18 14:52:27 +00:00
Nicholas Marriott
cf2c0237f4
Instead of loads of little screen_write_*_on and off functions which just
...
change mode flags, just have screen_write_mode_set and screen_write_mode_clear.
2013-02-17 10:43:35 +00:00
Nicholas Marriott
10db7ec51b
Include the \033 in the key tree and adjust key matching for this change.
2013-02-16 13:21:14 +00:00
Nicholas Marriott
82355d2f2d
Tidy by splitting default key tables into two.
2013-02-15 02:16:41 +00:00
Nicholas Marriott
68e370574a
Fix constness of window_choose_add_item and _window.
2013-02-13 10:25:37 +00:00
Nicholas Marriott
544c80d715
Fix constness of cmd_template_replace.
2013-02-13 10:19:43 +00:00
Nicholas Marriott
102cb77435
Add -v to set and setw to show only option value.
2013-02-12 20:12:10 +00:00
Nicholas Marriott
99cc0015f8
Rework reflow code so it does not do so much allocation which should be faster
...
with large histories.
2013-02-10 18:15:30 +00:00
Nicholas Marriott
f1ce95915c
Allow choose commands to be used outside tmux, so long as at least one client
...
is attached.
2013-02-10 17:52:51 +00:00
Nicholas Marriott
aadc87f5a7
Remove free callback for window_choose_data objects.
2013-02-10 17:36:58 +00:00
Nicholas Marriott
4d382ae8e6
Miscellaneous tidying of choose API, including:
...
- rename client and session to start_client and start_session in
window_choose_data struct. also add TREE_OTHER define and reorder the
struct
- rename window_choose_ctx to window_choose_data_run
- don't pass a cmd_ctx into window_choose_create (will let it use a
different client later). instead take type, session, client
- add window_choose_data_free and use it to dispose of wcd rather than
each cmd-*.c doing it individually
- change so ref counting is done by wcd_add and wcd_free rather than
callers. this means 1 ref for each item but what of it :-)
- also add a ref to tree_session - not sure if this is needed?
- all the callbacks except choose-client and find-window are the same so
remove them and add window_choose_default_callback
- reorder/rename some other bits and pieces for tidyness
2013-02-10 17:32:58 +00:00
Thomas Adam
64da762c15
Merge branch 'obsd-master'
2013-02-07 12:08:55 +00:00
Nicholas Marriott
8903c1f167
Automatically reflow wrapped lines when a pane is resized, requested by
...
many over the years and finally implemented by Richard Woodbury.
2013-02-05 11:08:59 +00:00
Thomas Adam
a3f4eb7b24
Merge branch 'obsd-master'
...
Conflicts:
Makefile
grid-utf8.c
2013-01-30 15:27:19 +00:00