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
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
nicm
7d4b416fe6
Some more static.
2016-10-10 13:54:47 +00: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
nicm
4117a7ed19
Keep buffer creation time and add accessors for it and the order number.
2016-10-05 12:34:05 +00: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
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
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
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
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
nicm
f8cc48a43f
Fix minimum size when pane status line is enabled, reported by Y Petremann.
2016-08-03 09:07:02 +00: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
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
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
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
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
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
nicm
fcb00a4161
Use getprogname() instead of __progname to make portability easier.
2016-05-27 17:05:42 +00: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
nicm
4a6eca5bd7
Use the same code for half page scrolling as full, from Michal Mazurek.
2016-05-01 13:39:05 +00:00
nicm
88bd5b15ff
tty_client_ready can not be internal to tty.c again.
2016-04-30 18:59:02 +00: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
nicm
1cedf78284
Add next/previous paragraph, from J Raynor.
2016-04-27 09:39:09 +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
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
nicm
fa64b89ad7
Whoops, need this for the previous reverse trim commit too.
2016-01-31 09:57:41 +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
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
nicm
c9815307eb
Add hooks for alerts (bell, silence, activity), from Thomas Adam.
2016-01-16 00:36:53 +00:00
nicm
68d797587e
A couple of missing printflike attributes, from Andrey Starodubtsev.
2016-01-15 11:31:47 +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
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
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
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
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
nicm
72948d9f1d
-c needs to be able for fail for display-message.
2015-12-13 18:31:47 +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
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
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
nicm
88bc8f3528
Style nits and line wrapping of function declarations.
2015-12-11 16:37:21 +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
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
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
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
nicm
b9563340b7
Fix bell indicators across detach, reported by Torbjorn Lonnemark, diff
...
from Thomas Adam.
2015-12-07 09:47:41 +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
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
nicm
b32ce34cf2
Don't allow options in table without scope set.
2015-11-24 09:34:55 +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
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
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
nicm
577c0e3e5a
Use __unused rather than rolling our own.
2015-11-18 14:27:44 +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
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
nicm
205d15e82d
All these return values from utf8_* are confusing, use an enum.
2015-11-14 11:45:43 +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
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
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
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
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
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
nicm
bf9c933cae
Like options, move the environ struct into environ.c.
2015-10-28 09:51:55 +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
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
nicm
14da999408
Format for scroll position, from Jorge Morante.
2015-10-23 16:02:21 +00: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
nicm
28f23f18e9
Free the history when it is cleared, based on a diff from Carlo Cannas.
2015-09-25 15:53:07 +00: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
nicm
8da6de3e66
Style nit, int for flags not u_int.
2015-09-14 11:57:22 +00: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
nicm
cfabe30bec
Add session_last_attached time and format, from Sina Siadat.
2015-09-10 08:58:14 +00: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