nicm
7bcc0d16f2
Add an argument to copy commands to set the prefix for the buffer name,
...
allows buffers for different sessions to be named separately.
2019-04-02 09:03:39 +00:00
nicm
c1f0918f8a
Fix stop-selection, from Avi Halachmi.
2019-03-27 13:25:11 +00:00
nicm
9f8d193b11
Break copy mode commands into individual functions instead of a big load
...
of if statements.
2019-03-26 21:01:19 +00:00
nicm
938156d73b
DECRC and DECSC apparently need to preserve origin mode as well, based
...
on a fix from Marc Reisner.
2019-03-12 20:02:47 +00:00
nicm
3f6bfbaf2b
Allow multiple modes to be open in a pane. A stack of open modes is kept
...
and the previous restored when the top is exited. If a mode that is
already on the stack is entered, the existing instance is moved to the
top as the active mode rather than being opened new.
2019-03-12 11:16:49 +00:00
nicm
de730f68a4
Make the mode used to view command output (a variant of copy mode) use
...
its own mode definition struct with a different init function rather
than calling special setup functions.
2019-03-08 10:34:20 +00:00
nicm
9cc04a0f9a
Do not use window mode entry after free.
2019-03-08 10:29:25 +00:00
nicm
f98c66ece8
Add a separate mode struct for the active window mode if any.
2019-03-07 20:24:21 +00:00
nicm
3c24bc5617
Tidy changing the mode into window_copy_init_for_output.
2019-03-07 19:34:22 +00:00
nicm
7f093fcddc
Make adding mode formats a function pointer as well.
2019-03-07 19:01:21 +00:00
nicm
bde0224deb
Pass window into mode functions.
2018-12-18 13:20:44 +00:00
nicm
40d246b29c
Handle UTF-8 in word-separators option, GitHub issue 1551.
2018-11-28 11:20:13 +00:00
nicm
09aee53763
It isn't possible to specify buffer name to copy mode commands now, so
...
remove the function argument.
2018-11-08 18:49:19 +00:00
nicm
f7c85f3ed8
Do not move the cursor when the mouse wheel is used, GitHub issue 1493.
2018-10-03 15:27:55 +00:00
nicm
7d59f82cf9
Allow panes to be 1 line or column by redrawing instead of using the
...
scroll region, from Soeren Tempel in GitHub issue 1487.
2018-09-25 14:27:20 +00:00
nicm
1b92afa799
Do not clear selection when searching.
2018-09-10 06:48:01 +00:00
nicm
8f9491ddfe
Allow a large line number to go to the end with goto-line, from Mark
...
Kelly in GitHub issue 1460.
2018-09-03 08:51:43 +00:00
nicm
9bab73f489
Fix selection test, from Takeshi Banse.
2018-09-03 08:47:27 +00:00
nicm
95e3e363ff
Reset line flag when clearing selection, GitHub issue 1454.
2018-08-29 18:54:23 +00:00
nicm
bceccc6b63
Move job struct into job.c.
2018-08-23 15:45:05 +00:00
nicm
9f2db6a0af
Fix problems with page scrolling in copy mode, GitHub issue 1440 from
...
Amos Bird.
2018-08-20 13:51:09 +00:00
nicm
f5d7a80272
calloc the mode data instead of malloc and initialize everything.
2018-08-05 08:59:30 +00:00
nicm
fe7486d43b
Initialize new lineflag member.
2018-08-01 15:22:40 +00:00
nicm
82776c456e
Move struct screen_sel into screen.c and tidy up members that are only
...
used by copy mode.
2018-07-31 11:49:26 +00:00
nicm
28a5bc8fae
Add a rectangle_toggle format, from Hirokazu Hata.
2018-07-06 07:11:23 +00:00
nicm
2fae6a5761
Add accessors for grid linedata member, for some future work. From Dan
...
Aloni.
2018-07-04 09:44:07 +00:00
nicm
8fb6666f17
Do not take address of a member of a NULL pointer. GitHub issue 1382
...
from Kamil Rytarowski.
2018-06-26 11:14:05 +00:00
nicm
4bf6f2706e
Check whether cursor is at start or end when copying rectangular
...
selections, from tb@.
2018-04-23 13:46:34 +00:00
nicm
19f3a5c612
Add a missing client-detached hook when the server shuts down, and do
...
not exit until jobs started from run-shell/if-shell have finished (add a
job flags member and a flag to indicate other jobs). GitHub issue 1245.
2018-03-08 08:09:10 +00:00
nicm
e5ae9dd53d
Add -and-cancel variants for scrolling commands to exit copy mode when
...
the bottom is reached, from Stephen Hicks.
2017-11-16 11:16:15 +00:00
nicm
d81fa579c3
When searching in copy mode, do not scroll if the result is already on
...
screen. GitHub issue 1150.
2017-11-13 11:49:11 +00:00
nicm
c86d83f835
Remove unused (always 1) arguments from some functions, from Daniel
...
Mueller in GitHub issue 1073.
2017-09-13 07:31:07 +00:00
nicm
eadd79acec
Move to current mouse position not last when clcking in copy mode; fixes
...
GitHub issue 1055. Also a man page fix from jmc.
2017-09-04 09:18:51 +00:00
nicm
a7d1ee5433
Redraw rectangle selections properly when cursor at end, GitHub issue 992.
2017-08-29 20:26:25 +00:00
nicm
1d60dd5872
Fix searching when match is at end of line, from Brad Town.
2017-08-23 09:18:22 +00:00
nicm
6f9b9655d7
Add selection_present format so commands in copy mode can use it, GitHub
...
issue 1028.
2017-08-02 11:10:48 +00:00
nicm
74b2deae1c
Add a hook when the clipboard is set.
2017-06-09 09:21:24 +00:00
nicm
3442066054
Make set-clipboard a three-state option so tmux itself can ignore the
...
sequencess.
2017-06-03 17:43:01 +00:00
nicm
aad4e4ddb1
Rewrite of choose mode, both to simplify and tidy the code and to add
...
some modern features.
Now the common code is in mode-tree.c, which provides an API used by the
three modes now separated into window-{buffer,client,tree}.c. Buffer
mode shows buffers, client mode clients and tree mode a tree of
sessions, windows and panes.
Each mode has a common set of key bindings plus a few that are specific
to the mode. Other changes are:
- each mode has a preview pane: for buffers this is the buffer content
(very useful), for others it is a preview of the pane;
- items may be sorted in different ways ('O' key);
- multiple items may be tagged and an operation applied to all of them
(for example, to delete multiple buffers at once);
- in tree mode a command may be run on the selected item (session,
window, pane) or on tagged items (key ':');
- displayed items may be filtered in tree mode by using a format (this
is used to implement find-window) (key 'f');
- the custom format (-F) for the display is no longer available;
- shortcut keys change from 0-9, a-z, A-Z which was always a bit weird
with keys used for other uses to 0-9, M-a to M-z.
Now that the code is simpler, other improvements will come later.
Primary key bindings for each mode are documented under the commands in
the man page (choose-buffer, choose-client, choose-tree).
Parts written by Thomas Adam.
2017-05-30 21:44:59 +00:00
nicm
1883d299bf
Do not factor in screen_hsize() for the visible copy mode screen when
...
adjusting the selection, it should never have any useful history (and
when it does, after resize, we shouldn't use it). From Michal Mazurek.
2017-05-29 07:58:33 +00:00
nicm
18bab30792
Scrolling needs to use background colour.
2017-05-12 13:00:56 +00: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
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
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
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
nicm
591b26e46f
Show count of search results in copy mode.
2017-03-24 07:14:27 +00:00
nicm
cdaa758340
Fix movement after select-line, from Omar Sandoval.
2017-03-21 09:51:00 +00:00
nicm
e8f2609ca4
Skip over padding cells when moving the cursor left or right.
2017-03-08 20:05:25 +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
nicm
05802a6fe3
window_copy_pagedown shouldn't reset the mode anymore, instead let the
...
caller do it so it can free the marks. Problem reported by attila at
stalphonsos dot com.
2017-02-08 17:33:51 +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
nicm
314e933914
Add support for the OSC 4 and OSC 104 palette setting escape sequences,
...
from S Gilles.
2017-01-07 15:28:13 +00:00
nicm
461217d0f0
Incremental search in copy mode (on for emacs keys by default) - much
...
the same as normal searching but updates the cursor position and marked
search terms as you type. C-r and C-s in the prompt repeat the search,
once finished searching (with Enter), N and n work as before.
2017-01-06 11:57:03 +00:00
nicm
9a56671a75
Highlight all occurrences of search string after searching in copy mode.
2017-01-05 09:07:15 +00:00
nicm
7e6c2cb238
Make the selection able to exist independent of the cursor position, so
...
that it is not affected by scrolling. If MouseDragEnd1Pane is bound to
the new "stop-selection" command:
bind -Tcopy-mode MouseDragEnd1Pane stop-selection
A selection made with the mouse will stay as it is after button 1 is
released. (It also works bound to a key.)
From Artem Fokin.
2016-11-24 13:38:44 +00:00
nicm
9fe43d6acb
Add copy-pipe-and-cancel, from Artem Fokin.
2016-11-15 09:53:23 +00: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
nicm
22a8afee9e
Unused variable and missing time.h.
2016-10-12 09:07:58 +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
44449b305b
Use xsnprintf not snprintf for the prompt in window_copy_write_line
...
because we don't care if it is truncated to the screen width, we don't
want it to be fatal.
2016-10-09 07:30:28 +00:00
nicm
1b31d148c9
Remove some dead code in cmd-move-window.c and make a load of local
...
functions static.
2016-10-03 22:52:11 +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
e81a92449e
Remove unused variable, from Ben Boeckel.
2016-05-23 20:03:14 +00:00
nicm
28e0658fa9
Some tidying of copy mode search functions, based on a diff from Lukasz
...
Piatkowski (initial changes to help some more to come).
2016-05-03 13:40:50 +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
1cedf78284
Add next/previous paragraph, from J Raynor.
2016-04-27 09:39:09 +00:00
nicm
312a7a1e62
Make scrolling behaviour more sensible and maintain cursor position, as
...
if the same had been done line-by-line. From Michal Mazurek.
2016-03-18 14:27:24 +00:00
nicm
54ea8f74ae
When a mouse drag is finished, fire a MouseUp key press, instead of
...
doing the drag end in code. From Stephen Coakley.
2016-03-01 12:04:43 +00:00
nicm
bc0c9c7920
Do not wrap cursor at start or end of history, from Michal Mazurek.
2016-02-05 10:20:06 +00:00
nicm
995af0e2b7
I no longer use my SourceForge address so replace it.
2016-01-19 15:59:12 +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
577c0e3e5a
Use __unused rather than rolling our own.
2015-11-18 14:27:44 +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
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
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
44657bf932
Move struct options into options.c.
2015-10-27 15:58:42 +00:00
nicm
14da999408
Format for scroll position, from Jorge Morante.
2015-10-23 16:02:21 +00:00
nicm
8da6de3e66
Style nit, int for flags not u_int.
2015-09-14 11:57:22 +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
b569585000
Move struct paste_buffer out of tmux.h.
2015-08-29 09:25:00 +00:00
nicm
6419f66523
Give clock mode its own timer.
2015-08-28 12:25:42 +00:00
nicm
583b4ab72b
Set working directory for run-shell and if-shell.
2015-04-24 22:19:36 +00:00
nicm
0610f44380
cmd_mouse_pane can return NULL, check for that.
2015-04-21 15:16:06 +00:00
nicm
07d93db427
Remove unused-but-set variables, from Thomas Adam.
2015-04-20 15:41:32 +00:00
nicm
0fd9a97202
Make jump-to-backward/jump-to-forward repeatable with
...
jump-reverse/jump-again, from Jacob Niehus.
2015-04-20 09:39:21 +00: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
0cd55eb1e7
Add a -x flag to copy-selection, append-selection and start-named-buffer
...
to prevent it exiting copy mode after copying. From J Raynor with a few
tweaks by me.
2015-04-10 16:00:08 +00:00
nicm
02df86079b
Fix some format specifier nits, from Ben Boeckel.
2015-03-31 17:45:10 +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
86207ee676
Shorten some long lines.
2015-01-15 13:35:13 +00:00
nicm
d88c381ce9
Only redraw affected lines when selection changes with mouse. From
...
Michael Graczyk.
2014-12-15 10:02:55 +00:00
nicm
4429941668
Expand formats in copy-pipe command, suggested by Suraj N Kurapati.
2014-11-09 15:13:01 +00:00
nicm
7445d303e0
Wrap when copy mode is used for output, from Balazs Kezes.
2014-11-06 10:56:44 +00:00
nicm
e4bf1e5128
Add V for select line with vi(1) keys. From Juho Pohjala.
2014-11-06 09:17:25 +00:00
nicm
abfb9656ef
Fix some spacing nits.
2014-10-22 23:18:53 +00:00
nicm
a27ba6e380
Add xreallocarray and remove nmemb argument from xrealloc.
2014-10-08 17:35:58 +00:00
nicm
2f19df09b1
Copy ACS characters as UTF-8, from Balazs Kezes.
2014-10-02 08:36:26 +00:00
nicm
4e956d545a
Various minor style and spacing nits.
2014-09-01 21:50:18 +00:00
nicm
2b79d36652
No need to repeat other-end more than once, from Juho Pohjala. Also add
...
it to the commands list while here.
2014-08-11 22:39:57 +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
00ac1af43f
Copy newline when at EOL in vi(1) mode, from Balazs Kezes.
2014-06-19 07:37:59 +00:00
nicm
58c97695c9
Simplify copy lines, from Keith Amling.
2014-05-14 06:39:58 +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
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
nicm
a5d4b7f3d9
Some more long lines.
2014-04-17 14:45:49 +00:00
nicm
b8bda67f30
Don't blindly increase offsets by the return value of snprintf, if there
...
wasn't enough space this will go off the end. Instead clamp to the
available space. Fixes crash reported by Julien Rebetez.
2014-04-11 19:35:54 +00: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
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
6daf06b1ad
Fix memory leaks with paste_replace, based on changes from J Raynor.
2014-02-17 23:07:03 +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
7d3d996383
Support paste key in copy mode input (for search etc). Also clamp length
...
to screen width.
2014-01-22 22:32:15 +00:00
nicm
df680d7257
Only exit copy mode at the bottom if no selection in progress, from
...
Benoit Pierre.
2014-01-22 13:57:49 +00:00
deraadt
72a4602b88
missing unsigned char casts areound tolower()
...
ok nicm
2013-11-20 17:01:23 +00:00
nicm
f0ed61f53c
Support case insensitive searching in the same manner as emacs - all
...
lowercase means case insensitive, any uppercase means case
sensitive. From J Raynor.
2013-11-09 00:48:57 +00:00
nicm
a6cd84869e
Correctly redraw the top two lines in copy mode when they are selected -
...
the selection was being updated before the redraw so the markings were
lost. Based on a fix from J Raynor.
2013-11-08 12:39:20 +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
Nicholas Marriott
a9ebb62d54
Make next-word-end work properly with vi(1) keys, reported by patrick
...
keshishian.
2013-07-12 09:52:36 +00:00
Nicholas Marriott
7af5fec038
Whitespace nits, from Ben Boeckel.
2013-07-05 14:44:06 +00:00
Nicholas Marriott
599dd2a560
Create a new context when copying instead of using the input
...
context. The input context may not exist yet. Fixes crash when copying
from config file errors.
2013-03-25 11:43:33 +00:00
Nicholas Marriott
58932295fc
Add copy-pipe mode command to copy selection and also pipe to a command.
2013-03-22 15:52:40 +00:00
Nicholas Marriott
8d59b189cc
No more lint means no more ARGSUSED.
2013-03-22 10:31:22 +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
Nicholas Marriott
fdbfc7e349
Rather than having two grids for each pane, one for ASCII and one for
...
UTF-8, collapse the two together. Simplifies the code at the expense of
more memory (which can probably be reduced again later).
2013-01-18 02:16:21 +00:00
Nicholas Marriott
1fcc7f50ac
When scrolling in copy mode with the mouse, scroll screen rather than
...
moving cursor. This change from Ailin Nemui, alternative to a change
from Stephen Hicks.
2012-11-27 14:42:56 +00:00
Nicholas Marriott
d210d99cce
Make mouse event structure clearer by defining events (up, click, drag)
...
and simplifying how buttons and wheels are represented, from Ailin
Nemui. Should be no functional changes.
2012-10-26 14:35:42 +00:00
Nicholas Marriott
0d0b3cf9a4
Fix search forward so it can match strings on the last line, SF bug
...
3571114 from "LiJunLe".
2012-09-25 07:39:28 +00:00
Nicholas Marriott
a3dec6bece
Instead of numbering choose mode items 0-9a-z and then nothing, number
...
them all and if there are more than 10 use a prompt when 0-9 is
pressed. From Thomas Adam.
2012-08-11 06:45:33 +00:00
Nicholas Marriott
df912e3540
xfree is not particularly helpful, remove it. From Thomas Adam.
2012-07-10 11:53:01 +00:00
Nicholas Marriott
c829bdf537
Minor style nits - return ().
2012-04-01 20:53:47 +00:00
Nicholas Marriott
c11da7ca88
Only exit mouse mode on scroll wheel when actually reaching the end of
...
the history, from James Nylen.
2012-04-01 09:23:31 +00:00
Nicholas Marriott
95f48a219a
Add a wrap-search option to turn off wrapping of searches in copy
...
mode. From Jacobo de Vera.
2012-03-17 21:40:53 +00:00
Nicholas Marriott
1bbb793263
Always remember last cursor position when moving up or down, not just
...
for if crossing zero length lines. From Itay Perl.
2012-03-11 23:01:19 +00:00
Nicholas Marriott
e04d13f6a6
Support "jump to" like vi in copy mode using t and T keys. Also add x
...
and X for delete in edit mode.
From Ben Boeckel, thanks.
2011-12-04 16:18:01 +00:00
Nicholas Marriott
fd25d35868
Move word-separators to be a session rather than window option, from Ben
...
Boeckel.
2011-11-15 23:24:04 +00:00
Nicholas Marriott
f5a73c5433
When copying, make repeat count indicate buffer to replace if used.
2011-10-23 23:38:16 +00:00
Nicholas Marriott
1202284f37
PANE_FREEZE doesn't do anything anymore, so remove it.
2011-06-27 00:04:49 +00:00
Nicholas Marriott
96e7f33da3
Support setting the xterm clipboard when copying from copy mode using
...
the xterm escape sequence for the purpose (if xterm is configured to
allow it).
Written by and much discussed Ailin Nemui, guidance on
xterm/termcap/terminfo from Thomas Dickey.
2011-05-18 20:24:29 +00:00
Nicholas Marriott
58908fd8c5
Add three new copy-mode commands - select-line, copy-line,
...
copy-end-of-line. From Dave Disser and Randy Stauner a while back.
2011-05-18 18:06:36 +00:00
Nicholas Marriott
fb527c1bad
Use button mouse mode not any for copy mode, fixes issues with
...
putty. From Ailin Nemui.
2011-05-18 08:04:47 +00:00
Nicholas Marriott
dc8fb9fb23
Tweak copy behaviour slightly in vi mode to be closer to real vi. From
...
Tiago Resende.
2011-04-24 21:06:12 +00:00
Nicholas Marriott
8738141913
When mode-mouse is on (it is off by default), automatically enter copy
...
mode when the mouse is dragged or the mouse wheel is used. Also exit
copy mode when the mouse wheel is scrolled off the bottom. Discussed
with and written by hsim at gmx dot li.
2011-04-19 21:31:33 +00:00
Nicholas Marriott
fa6abac98d
Style: uint -> u_int and a missing else.
2011-03-28 19:44:31 +00:00
Nicholas Marriott
cc42614fa9
Change from a per-session stack of buffers to one global stack which is
...
much more convenient and also simplifies lot of code. This renders
copy-buffer useless and makes buffer-limit now a server option.
By Tiago Cunha.
2010-12-30 23:16:18 +00:00
Nicholas Marriott
f7c42c21ba
Support all four of the xterm mouse modes. Based on a diff from hsim at
...
gmx.li.
2010-12-29 21:49:06 +00:00
Nicholas Marriott
20ed20ea1e
Fix rectangle copy to behave like emacs - the cursor is not part of the
...
selection on the right edge but on the left it is.
2010-12-11 17:56:01 +00:00
Nicholas Marriott
c1c5f43a01
When resizing the copy mode screen, don't allow it to end up with the
...
viewable position beyond the size of the history.
2010-09-11 15:39:55 +00:00
Nicholas Marriott
bbf743769b
Do not crash if the screen size is too small for the indicator in copy mode.
2010-09-08 20:36:42 +00:00
Nicholas Marriott
a97b7ad11c
Fix a crash: if remain-on-exit is set and the pane has exited, the
...
buffers may not be valid, so do not try to disable/enable them when
switching to copy mode.
2010-07-22 21:10:51 +00:00
Ted Unangst
b4b9b831ee
replace some magic mouse constants with defines for clarity. ok nicm
2010-06-29 05:24:49 +00:00
Nicholas Marriott
dcc100f165
Use a macro-based mask for obtaining a key or modifier-set from the
...
combination. Display C-@, etc, as C-Space, in list-keys. By Micah Cowan.
2010-06-06 19:00:13 +00:00
Nicholas Marriott
cc724f327a
Make start-of-line work the same as end-of-line on wrapped lines (jump
...
to real start if at edge of screen). By Micah Cowan.
2010-06-05 15:49:48 +00:00
Nicholas Marriott
43fa9a9ba6
When the mode-mouse option is on, support dragging to make a selection
...
in copy mode.
Also support the scroll wheel, although xterm strangely does not ignore
it in application mouse mode, causing redraw artifacts when scrolling up
(other terminals appear to be better behaved).
2010-05-31 19:51:29 +00:00
Nicholas Marriott
4f5c5b37b8
Pass in the session, rather than the client, to window modes' key()
...
function. We were only ever using the client to find the session anyway.
This allows send-key to work properly for manipulating copy mode from
outside tmux.
From Micah Cowan.
2010-05-23 19:42:19 +00:00
Nicholas Marriott
2240199dbf
Fix crash when resizing in copy mode, when cursor can end up outside screen.
...
Reported by Romain Francois, fixed by Micah Cowan.
2010-04-28 18:19:16 +00:00
Nicholas Marriott
ac9daf92d7
Merge copy mode and output mode, dropping the latter. Idea and code from
...
Micah Cowan.
2010-04-06 21:35:44 +00:00
Nicholas Marriott
9abbe349af
paste-buffer should be per pane, from C. Coutinho.
2010-03-22 19:13:28 +00:00
Nicholas Marriott
0ac6efa6d5
Add vi-style "jump" commands for copy mode, from Micah Cowan.
2010-03-22 19:10:42 +00:00
Nicholas Marriott
48dd72005e
Fix a use-after-free when cancelling copy mode, or trying to repeat cancel.
...
ok kettenis
2010-03-14 23:31:23 +00:00
Nicholas Marriott
7bc3f5dd8a
Permit keys in copy mode to be prefixed by a repeat count, entered with
...
[1-9] in vi mode, or M-[1-9] in emacs mode.
From Micah Cowan, tweaked a little by me.
2010-03-02 00:32:41 +00:00
Nicholas Marriott
56a33b157b
Extend the end-of-line key so that in normal mode a second press moves
...
the cursor to the end of a wrapped line (if present) and in rectangle
mode it toggles between the end of the text and the last cell on the
line.
From Micah Cowan.
2010-03-01 23:53:27 +00:00
Nicholas Marriott
6767072c9d
Option to set the characters considered word separators in copy mode, from
...
Micah Cowan.
2010-02-22 20:41:16 +00:00
Nicholas Marriott
73b8c3ebf3
Another copy mode fix from Micah Cowan: in rectangle copy mode, the cursor
...
should not wrap at the end of the text on the line but should be allowed to
move freely.
2010-02-22 20:28:21 +00:00
Nicholas Marriott
3a89d1ef7f
copy mode uses the real screen as backing and if it is updated while copying,
...
strange things can happen. So, freeze reading from the pty while in copy mode.
2010-02-19 00:03:21 +00:00
Nicholas Marriott
a61b8a2033
Make next-word stop at beginning of word even if it is at the start of the
...
line, from Micah Cowan.
2010-02-17 21:27:18 +00:00
Nicholas Marriott
d285f7fd4d
Don't strip add newline if only copying part of wrapped line. Problem spotted
...
by and fix from Micah Cowan.
2010-02-17 20:58:24 +00:00
Nicholas Marriott
44ded35d5d
Add "N" key to search the opposite way from the last search (reverse of "n"),
...
from Micah Cowan.
2010-02-11 20:39:40 +00:00
Nicholas Marriott
3ef3802629
Rectangle copy support, from Robin Lee Powell.
2010-02-06 17:35:01 +00:00
Nicholas Marriott
5e6a7c85cc
vi-style B, W and E keys in copy mode to navigate between words treating only
...
spaces as word separators. Also add . to the list of word separators for
standard word navigation.
From Micah Cowan, tweaked slightly by me.
2010-02-04 20:00:26 +00:00
Nicholas Marriott
3e2cc2d2c4
Alter next-word to have vi-like movement behaviour, and add next-word-end with
...
the existing emacs behaviour. From Micah Cowan.
2010-01-27 20:18:52 +00:00
Nicholas Marriott
f26312ffbf
Hugely simplify window_copy_cursor_next_word, which was way overcomplicated.
2010-01-25 22:34:11 +00:00
Nicholas Marriott
e31480cf44
Update the selection properly after goto line or searching.
2010-01-25 21:37:40 +00:00
Nicholas Marriott
1e5a94fdb5
Top/bottom of history mode keys, diff from Micah Cowan, tweaked by me.
2010-01-25 21:33:39 +00:00
Nicholas Marriott
75e13c8977
Redraw properly when scrolling backward and the cursor is on the last
...
line. Based on a fix from Micah Cowan.
2010-01-24 21:05:12 +00:00
Nicholas Marriott
15a64b805e
Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last
...
time now I've configured emacs to make them displayed in really annoying
colours...
2009-12-03 22:50:09 +00:00
Nicholas Marriott
4ca857e0e9
Remove a couple of unused arguments where possible, and add /* ARGSUSED */ to
...
the rest to reduce lint output.
2009-11-26 21:37:13 +00:00
Nicholas Marriott
8d4eae5662
Missed an unused variable :-/.
2009-11-18 17:03:16 +00:00
Nicholas Marriott
a78cc98c8b
Cleanup by moving various (mostly horrible) little bits handling UTF-8 grid
...
data into functions in a new file, grid-utf8.c, and use sizeof intead of
UTF8_DATA.
Also nuke trailing whitespace from tmux.1, reminded by jmc.
2009-11-18 17:02:17 +00:00
Nicholas Marriott
480f5d3184
Correctly nuke the EOL $ marker when scrolling, reported by martynas@, thanks.
2009-10-20 21:35:25 +00:00
Nicholas Marriott
38df960e68
Add mode keys to move the cursor to the top, middle and bottom of the screen.
...
H/M/L in vi mode and M-R/M-r in emacs (bottom of screen not bound in emacs).
2009-10-13 13:45:56 +00:00
Nicholas Marriott
4bc0f6e7e9
Clean up by introducing a wrapper struct for mouse clicks rather than passing
...
three u_chars around.
As a side-effect this fixes incorrectly rejecting high cursor positions
(because it was comparing them as signed char), reported by Tom Doherty.
2009-10-11 07:01:10 +00:00
Nicholas Marriott
9400fdac77
Make C-Up and C-Down in copy mode scroll the screen up and down one line
...
without moving the cursor, like Up and Down in scroll mode (which will shortly
disappear).
2009-10-06 07:09:00 +00:00
Nicholas Marriott
372a8cb1d9
Permit options such as status-bg to be configured using the entire 256 colour
...
palette by setting "colour0" to "colour255".
2009-09-10 17:16:24 +00:00
Nicholas Marriott
ccba613e5b
Give each paste buffer a size member instead of requiring them to be
...
zero-terminated.
2009-09-07 18:50:45 +00:00
Nicholas Marriott
f817a338d0
When moving up or down in copy mode, save the cursor position and size of the
...
last line with content (width != 0) and use it to determine if the cursor
should be at the end of the line. Fixes problem of the cursor always jumping to
the end of the line when scrolling past a blank line.
2009-08-21 07:33:58 +00:00
Nicholas Marriott
55336657d4
Don't read beyond the edge of the screen when searching (dies with debug
...
enabled).
2009-08-19 14:46:56 +00:00
Nicholas Marriott
406fc209ac
Nuke unnecessary assignment.
2009-08-18 09:51:51 +00:00
Nicholas Marriott
feaf91ab93
Add a "delete line" key when editing in the status line or the search up/down
...
prompt. C-u with emacs keys, d with vi.
2009-08-18 07:23:43 +00:00
Nicholas Marriott
c828c2f366
Add (naive) searching and goto line in copy mode. Searching is C-r and C-s with
...
emacs keys, / and ? with vi; n repeats the search again with either key
set. All searching wraps the top/bottom. Goto line is g for both emacs and vi.
The search prompts don't have full line editing, just simple append and delete
characters.
Also sort the mode keys list in tmux.1.
2009-08-18 07:08:26 +00:00
Nicholas Marriott
7a359c00ac
vi(1)-style half page scroll in copy and scroll modes. Move the vi full page
...
scroll key to C-b instead of C-u and use C-u/C-d for half page scrolling with
vi keys. In emacs mode, half page scrolling is bound to M-Up and M-Down.
Suggested by merdely (about a year ago :-)).
2009-08-13 22:32:18 +00:00
Nicholas Marriott
39154402e5
Scroll by two less than the number of lines in the screen, like emacs, rather
...
than by the entire screen, to make it easier to pull things out from under the
line indicator. Suggested by claudio.
2009-08-13 22:11:43 +00:00
Nicholas Marriott
3026118c70
Allowing copy mode to scroll left and right is annoying, so limit it to the
...
real screen width. To indicate the cursor is at the end of the line rather than
the cell before, put a '$' in the last cell.
Also clear the selection when the terminal is resized to avoid tmux getting
confused.
2009-08-13 19:35:20 +00:00
Nicholas Marriott
2e3bb5a511
Redraw the screen after resizing.
2009-08-13 16:48:43 +00:00
Nicholas Marriott
06ddd3dcf8
Add a flags member to the grid_line struct and use it to differentiate lines
...
wrapped at the screen edge from those terminated by a newline. Then use this
when copying to combine wrapped lines together into one.
2009-08-08 15:57:49 +00:00
Nicholas Marriott
5e01b6d663
Change the way the grid is stored, previously it was:
...
- a two-dimensional array of cells;
- a two-dimensional array of utf8 data;
- an array of line lengths.
Now it is a single array of a new struct grid_line each of which represents a
line and containts the length and an array of cells and an array of utf8 data.
This will make it easier to add additional per-line members, such as flags.
2009-08-08 13:29:27 +00:00
Nicholas Marriott
bcddddf98d
If colours are not supported by the terminal, try to emulate a coloured
...
background by setting or clearing the reverse attribute.
This makes a few applications which don't use the reverse attribute themselves
a little happier, and allows the status, message and mode options to have
default attributes and fg/bg options that work as expected when set as reverse.
2009-08-05 16:26:38 +00:00