nicm
88b66e9e28
Free buffer earlier to avoid confusing some compilers, GitHub issue
...
2382.
2020-09-18 11:23:29 +00:00
nicm
869c0e860f
Fix some warnings, GitHub issue 2382.
2020-09-16 18:37:55 +00:00
nicm
df7fbcd7a5
Change searching to behave more like emacs and so that regex searching
...
doesn't overlap when searching forwards.
2020-08-05 09:11:09 +00:00
nicm
8f1179d656
Handle padding cells correctly when searching, GitHub issue 2301.
2020-07-15 10:09:54 +00:00
nicm
afe4ea4250
Correctly move to previous line when looking for previous word, from
...
Derry Jing.
2020-06-16 07:28:57 +00:00
nicm
63c2ed1483
Add some formats for search in copy mode (search_present, search_match).
...
GitHub issue 2268.
2020-06-11 19:43:34 +00:00
nicm
4e5e2c19d0
Now that we mostly only search visible text, the rate limit on repeating
...
search does not seem to be necessary, remove it for the moment.
2020-06-05 07:44:42 +00:00
nicm
2154e1f4fb
Search marks outside the visible text are not useful, so there is no
...
point in allocating a big buffer to store them - just allocate the
visible text size, and ignore any outside.
2020-06-04 21:40:27 +00:00
nicm
c4732af006
Some improvements to performance of searching:
...
- Do not allow searches to be repeated at intervals of less than 50
milliseconds, to prevent a huge queue of repeat key presses blocking
up everything for ages.
- If the search text hasn't changed, the match count can't have changed
and there is no need to do a full search, so only search the visible
text. This includes both scrolling and repeating the search.
- Do not redraw twice when jumping to the search location.
GitHub issue 2258.
2020-06-04 20:41:57 +00:00
nicm
dc74d2e054
Make the -no-clear command variants not clear the search marks either.
2020-06-04 10:24:14 +00:00
nicm
f5366ff828
Missing ; in previous.
2020-06-02 19:16:46 +00:00
nicm
5fbae8c8c6
Fire copy-pipe command even if there is no text, means it works if it
...
has side effects.
2020-06-02 19:10:26 +00:00
nicm
f3931497f8
Use CLOCK_MONOTONIC for timer measurement and add a timestamp to control
...
mode %output blocks.
2020-06-02 08:17:27 +00:00
nicm
49ec074271
Tidy up new UTF-8 code and make it more generic.
2020-05-25 18:19:29 +00:00
nicm
4589297e43
Do not attempt to divide by zero when working out copy position.
2020-05-25 12:12:58 +00:00
nicm
3a5219c6d0
Instead of storing all UTF-8 characters in the extended cell which means
...
that 14 bytes are wasted for each character in the BMP, only store
characters of three bytes or less in the cell itself and store others
(outside the BMP or with combining characters) in a separate global
tree. Can reduce grid memory use for heavy Unicode users by around 30%.
2020-05-25 09:32:10 +00:00
nicm
ff8dd150e0
Add a mark in copy mode. Set with set-mark command (bound to 'X') by
...
default and the mark and cursor position are swapped with 'jump-to-mark'
(bound to M-x). The line containing the mark is shown in
copy-mode-mark-style with the horizontal position in reverse.
From Anindya Mukherjee in GitHub issue 2209.
2020-05-16 16:10:28 +00:00
nicm
126bacb473
Do not loop forever when search finds an empty match, GitHub issue 2203.
2020-05-16 16:03:57 +00:00
nicm
592f141dee
Fix next-matching-bracket logic, from Chris Barber.
2020-05-16 16:03:30 +00:00
nicm
6ea6d46d0a
Store and restore cursor position when copy mode is resized, from
...
Anindya Mukherjee.
2020-05-16 15:49:20 +00:00
nicm
d056144aa1
Try to search the entire history first for up to 200 ms so a search
...
count can be shown. If it takes too long, search the visible text only.
2020-05-16 15:38:14 +00:00
nicm
9605b080f6
Do not hoke into struct window_pane from the tty code and instead set
...
everything up in tty_ctx. Provide a way to initialize the tty_ctx from a
callback and use it to let popups draw directly through input_parse in
the same way as panes do, rather than forcing a full redraw on every
change.
2020-05-16 15:34:08 +00:00
nicm
2391fe23ab
Copy mode search improvements:
...
- Add styles for the search marking styles (copy-mode-match-style and
copy-mode-current-match-style).
- Show the current match (the one with the cursor on it) in a different style.
- Copying without a selection will copy the current match if there is one.
2020-05-16 15:11:52 +00:00
nicm
f03b61131b
Drop having a separate type for style options and make them all strings,
...
which allows formats to be expanded. Any styles without a '#{' are still
validated when they are set but any with a '#{' are not. Formats are not
expanded usefully in many cases yet, that will be changed later.
To make this work, a few other changes:
- set-option -a with a style option automatically appends a ",".
- OSC 10 and 11 don't set the window-style option anymore, instead the
fg and bg are stored in the pane struct and act as the defaults that
can be overridden by window-style.
- status-fg and -bg now override status-style instead of trying to keep
them in sync.
2020-05-16 15:01:30 +00:00
nicm
4e0a718666
Add extension terminfo(5) capabilities for margins.
2020-05-16 14:22:51 +00:00
nicm
b846ec2665
Only trim blank lines when the source pane is not the target pane,
...
otherwise the cursor moves which is a bit strange.
2020-04-20 06:08:37 +00:00
nicm
282a7a8d96
Make sure the cursor position is still on screen after we have trimmed
...
empty lines. Also improve some log messages.
2020-04-17 14:06:42 +00:00
nicm
5aba26f2cb
Add a copy-command option and change copy-pipe and friends to pipe to it
...
if used without arguments, allows all copy key bindings to be changed to
pipe with one option.
2020-04-17 08:03:22 +00:00
nicm
b6dfca9b4d
Don't miss the last line off the screen when writing after resize, from
...
Anindya Mukherjee.
2020-04-16 05:22:08 +00:00
nicm
fc1855f514
Clear the selection and repeat the search on refresh same as resize.
2020-04-15 19:06:49 +00:00
nicm
53a29a2ffa
Instead of fixing with the cursor position when the copied screen is
...
created, resize it and let the resize/reflow code fix it up and return
it. Solves various problems with cursor position and resizing when in
copy mode. With Anindya Mukherjee.
2020-04-15 17:50:02 +00:00
nicm
b9a00cbe8a
Leave the cursor above empty lines.
2020-04-14 19:07:10 +00:00
nicm
e11295f42d
Adjust cursor and scroll positions when entering copy mode so that the
...
cursor line is still visible even if the source and target panes are
different heights.
2020-04-14 18:33:01 +00:00
nicm
3f7f9a0e20
Make client -c and -t handling common in cmd-queue.c and try to be
...
clearer about whether the client is the target client (must have a
session) or not.
2020-04-13 20:51:57 +00:00
nicm
c0602f357d
Now that copy mode copies the pane content rather than keeping a
...
reference to it, it isn't necessary that the pane in copy mode is the
same as the one copying from. Add a -s flag to copy-mode to specify a
different pane for the source content. This means it is possible to view
two places in a pane's history at the same time in different panes, or
copy from a pane's history into an editor or shell in the same pane.
From Anindya Mukherjee.
2020-04-10 07:44:26 +00:00
nicm
26f5dfbe46
Fix history-bottom to use the right line when working out the length.
2020-04-09 14:30:28 +00:00
nicm
e9e5facb0e
Some minor style nits.
2020-04-09 14:23:34 +00:00
nicm
b96ac80901
Some unnecessary assignments and unused variables.
2020-04-09 13:52:31 +00:00
nicm
77b827f879
Change copy mode to make copy of the pane history so it does not need to
...
freeze updates (which does not play nicely with some applications, a
longstanding problem) and will allow some other changes later. From
Anindya Mukherjee.
2020-04-06 17:51:34 +00:00
nicm
b65eab5505
Check previous line rather than an extra line, from Anindya Mukherjee.
2020-04-03 05:18:02 +00:00
nicm
a20d96000e
Only search the visible part of the history when marking (highlighting)
...
search terms, much faster than searching the whole history.
2020-04-02 17:03:10 +00:00
nicm
567b27e10a
Add a 10 second timeout to prevent searches taking too much time, from
...
Anindya Mukherjee.
2020-04-01 09:36:37 +00:00
nicm
cd30633d10
Do not go down the regex search path (which is expensive because we need
...
to convert the grid data into a string for regexec and reverse it to
find the grid position) if the search string does not contain any regex
special characters.
2020-04-01 08:07:05 +00:00
nicm
c129ed3233
Use a comparison to check for wrap and avoid an expensive modulus.
2020-04-01 07:52:07 +00:00
nicm
89d2a20e56
Performance improvements for regex searching, most notably:
...
- Use the grid data directly instead of copying it.
- Special case the most typical one byte character cells and use memcmp
for multiple bytes instead of a handrolled loop.
- Hoist regcomp out of the loop into the calling functions.
GitHub issue 2143.
Also a man page from from jmc@.
2020-04-01 07:35:10 +00:00
nicm
b66d62d2d0
Do not go down the regex search path (which is expensive because we need
...
to convert the grid data into a string for regexec and reverse it to
find the grid position) if the search string does not contain any regex
special characters.
2020-04-01 08:07:05 +00:00
nicm
46092f2760
Use a comparison to check for wrap and avoid an expensive modulus.
2020-04-01 07:52:07 +00:00
nicm
46ed81fc45
Performance improvements for regex searching, most notably:
...
- Use the grid data directly instead of copying it.
- Special case the most typical one byte character cells and use memcmp
for multiple bytes instead of a handrolled loop.
- Hoist regcomp out of the loop into the calling functions.
GitHub issue 2143.
Also a man page from from jmc@.
2020-04-01 07:35:10 +00:00
nicm
2624edde46
Add non-regex search variants to avoid the performance cost for people
...
with large histories or long lines.
2020-03-31 16:53:23 +00:00
nicm
af6ae35900
Set end position correctly, GitHub issue 2129 from Anindya Mukherjee.
2020-03-21 13:19:56 +00:00
nicm
9a55f65702
Fix select-word when not on a word, from Anindya Mukherjee.
2020-03-20 20:12:39 +00:00
nicm
06c3079d66
Make the mouse_word and mouse_line formats work in copy mode and enable
...
the default pane menu in copy mode.
2020-03-20 17:59:39 +00:00
nicm
a3ff5a9e25
select_word_end needs to forward no_reset flag or select-word selects
...
too much.
2020-03-20 13:12:04 +00:00
nicm
c3e96cce4e
Another fix to make other-end forget the selection mode, from Anindya Mukherjee.
2020-03-20 06:09:19 +00:00
nicm
e8273a993e
Add a flag to run a background process in a pty as well, not used for
...
anything yet.
2020-03-19 13:43:18 +00:00
nicm
2cd8ea7680
Various fixes to copying with select-word and select-line, including
...
making it consistent with keys and with the mouse, and using other-end.
From Anindya Mukherjee.
2020-03-19 13:28:52 +00:00
nicm
7021757c9d
Adjust selection correctly when scrolling, from Anindya Mukherjee.
2020-03-16 14:17:56 +00:00
nicm
882d0b785d
Reset selection flag when clearing or stopping selection, from Mark
...
Kelly.
2020-03-15 20:44:19 +00:00
nicm
7863445e5d
Add a copy-mode -H flag to hide the position marker in the top right.
2020-03-12 13:19:20 +00:00
nicm
4eba98313c
Start a new selection if outside the existing selection after a word has
...
been selected. From Anindya Mukherjee.
2020-03-11 18:46:42 +00:00
nicm
f65b9c0d36
Change mouse selection so that after selecting a word, dragging selects
...
only words and similar for lines. From Anindya Mukherjee.
2020-02-24 09:53:59 +00:00
nicm
229be034fb
Add selection_active format for when the selection is present but not
...
moving with the cursor, from Mark Kelly.
2020-02-20 07:34:57 +00:00
nicm
f48b041cf2
Do not jump to next word end if already on a word end when selecting a
...
word. Fixes select-word with single character words and vi(1) keys. From
Mark Kelly.
2020-02-13 09:02:07 +00:00
nicm
4ea07716de
Support regex search in copy mode, from Anindya Mukherjee in GitHub
...
issue 2038.
2019-12-27 18:42:49 +00:00
nicm
64fb7e472a
Tweak previous to check the wrapped flag and stop if not set.
2019-12-11 18:30:29 +00:00
nicm
ab630f72ed
Allow search across wrapped lines and fix some inconsistencies in how th
...
position is represented, GitHub issue 2014 from Anindya Mukherjee.
2019-12-11 18:23:34 +00:00
nicm
58f870ef6e
Don't use motion flag uninitialized.
2019-11-25 22:38:36 +00:00
nicm
87a11a9214
Fix a warning in previous.
2019-11-25 20:43:32 +00:00
nicm
c2fde58701
Do not clear search marks on cursor movement with vi(1) keys, from Eric
...
Pruitt in GitHub issue 1985.
2019-11-25 20:42:18 +00:00
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