nicm
c225262e13
Add -F flag to send-keys to expand formats in search-backward and
...
forward copy mode commands, this makes it easier to use the cursor_word
and cursor_line formats. From Anindya Mukherjee in GitHub issue 1964.
2019-11-07 07:11:25 +00:00
nicm
f7fb5df543
Use the existing code in format.c to add foramts for word and line at
...
cursor position in copy mode, from Anindya Mukherjee.
2019-10-23 07:42:05 +00:00
nicm
56e5067c46
Add formats for cursor and selection position in copy mode, from Jason Felice.
2019-10-19 19:20:14 +00:00
nicm
4b7e97ba53
Set up format tree for %if, GitHub issue 1896.
2019-09-10 07:50:33 +00:00
nicm
b31515fec3
Add cursor-down-and-cancel, from Mark Kelly.
2019-09-09 08:01:21 +00:00
nicm
21fae50089
Default to previous search string for search-forward and
...
search-backward, from Leah Neukirchen.
2019-08-14 10:02:24 +00:00
nicm
c4744620af
Correctly wrap search in copy mode even if at the very top left, GitHub
...
issue 1845.
2019-08-01 14:31:39 +00:00
nicm
3d660b0023
Select the correct word for select-word when already at the start of a
...
word, GitHub issue 1820.
2019-08-01 14:30:31 +00:00
nicm
a4be028b76
Clear search marks before resize, GitHub issue 1823.
2019-07-08 20:29:11 +00:00
nicm
55c694a467
Do not use uninitialized buffer name.
2019-07-05 07:52:27 +00:00
nicm
26b9a8e49b
Set the cursor x at the same time as changing the y or the end of line
...
marker may not be redrawn.
2019-06-13 20:38:05 +00:00
nicm
09e90c1645
Need to increment the argument to skip the prefix earlier, fixes
...
repeated incremental search in copy mode, reported by Kaushal Modi in
GitHub issue 1780.
2019-06-05 19:00:36 +00:00
nicm
e90d4a6021
Add formats for word and line under the mouse and use them to add some
...
items to the pane menu.
2019-05-26 17:34:45 +00:00
nicm
cf4566b47b
Fix dragging when in view mode rather than copy mode, GitHub issue 1740
...
from Brad Town.
2019-05-15 19:25:53 +00:00
nicm
00f19b7f91
Fix some indentation and dead assignments.
2019-05-12 18:16:33 +00:00
nicm
d53d3bce59
Adjust the same bit to adjust the selection for history-top and
...
history-bottom as for cursor-up and cursor-down. GitHub issue 1723.
2019-05-07 19:46:17 +00:00
nicm
4097257bef
Do not store the mouse position we calculate as the start of a drag back
...
into the mouse event that later code uses, it has been adjusted and they
should use the original position. GitHub issue 1710.
2019-05-03 18:42:40 +00:00
nicm
c176361788
Remove unused variable from Thomas Adam.
2019-05-01 06:07:14 +00:00
nicm
ec81bd2399
Add support for keys to jump between matching brackets - C-M-f and C-M-b
...
in emacs, % in vi. Suggested by and help from Chris Barber in GitHub
issue 1666.
2019-04-29 06:55:21 +00:00
nicm
567d3e27ab
Automatically scroll if dragging to create a selection with the mouse
...
and the cursor reaches the top or bottom line.
2019-04-25 06:34:57 +00:00
nicm
564e44adc6
Add -no-clear variants of copy-selection and copy-pipe which do not
...
clear the selection after copying. Make copy-pipe clear the selection by
default to be consistent with copy-selection. From Avi Halachmi.
2019-04-23 09:39:07 +00:00
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