nicm
62ff5e4b01
The PANE_REDRAW flag bit might be needed by other panes so we can't
...
clear it on the first redraw, and it can't be set when we are finished
or they would be redrawn again, so if the redraw is deferred for a
client, copy the redraw flag into a separate set of bits just for that
client.
2020-04-18 21:35:32 +00:00
nicm
100db552d1
A resize can realloc so cannot cache the value of the list pointer.
2020-04-18 17:20:25 +00:00
nicm
deffef6f13
Reset background colour on scrolled line.
2020-04-18 15:22:05 +00:00
nicm
ea5fdd5331
There is no point in keeping a bunch of different text buffers for each
...
line when writing, we only need one as big as the line width - there
can't be any more text than that since newer will overwrite older.
2020-04-18 15:12:28 +00:00
nicm
4a93294152
Use size_t not u_int for the bytes counters and fix a const missing.
2020-04-18 14:21:39 +00:00
nicm
c87595326c
Use peek line function instead of hoking in the array directly.
2020-04-18 09:00:31 +00:00
nicm
b0a37e7514
Bring back previons fix to only redraw panes that need it after a redraw
...
is deferred, but clear the pane flags when they are actually redrawn
rather than every time.
2020-04-18 07:32:53 +00:00
nicm
e153b928ff
Add formats for pane written/skipped bytes for debugging.
2020-04-18 07:19:28 +00:00
nicm
baf1fca273
Only update mode when actually going to redraw something.
2020-04-18 06:52:36 +00:00
nicm
1d2bd864f2
Add a flag to protect against nested syncs and add some extra logging to
...
redrawing.
2020-04-18 06:20:50 +00:00
nicm
d94bdf7420
Revert previous, there is still a problem.
2020-04-18 06:15:07 +00:00
nicm
5289d4ed13
When a redraw is deferred because the terminal hasn't finished reading
...
the data from the last one, other panes could update while waiting, so
we set the flag to redraw them all when the new redraw actually
happened. But this means a lot of redrawing panes unnecessarily if they
haven't changed - so instead set a flag to say "at least one pane needs
to be redrawed" then look at the invidual pane flags to see which ones
need it.
2020-04-18 06:10:15 +00:00
nicm
a7a9460d27
Set mode properly before and after redrawing, and don't bother
...
calculating cursor position if it won't be used.
2020-04-17 22:16:28 +00:00
nicm
a877a5d8c9
Do not move the cursor to the existing y position if it is invalid, go
...
home instead.
2020-04-17 21:33:18 +00:00
nicm
bbd6e899a8
There is no point allocating a new item and putting it on the list when
...
the whole line is cleared line, there is never any point in doing it
more than once. Instead store the background colour alone.
2020-04-17 15:44:58 +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
7f2925a01d
Support the application escape sequence mintty (means tmux doesn't have
...
to delay to wait for Escape).
2020-04-17 09:06:10 +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
5f18844b32
Return to sending sync around clears.
2020-04-16 21:46:43 +00:00
nicm
d8433add47
Do not need to set up a tty context for clearing lines now.
2020-04-16 21:16:24 +00:00
nicm
d90ca7ecd6
Collect up line clears like text within the available data so we don't
...
need to flush everything.
2020-04-16 20:32:51 +00:00
nicm
c1b015f24e
Log what caused a flush for better visibility on what could be improved.
2020-04-16 17:24:28 +00:00
nicm
9311ed049b
Start menu with top item selected if no mouse, GitHub issue 2169.
2020-04-16 17:20:23 +00:00
nicm
2e347d6a38
Only start and stop sync for operations like clear and scroll where
...
there is a better chance more data will be on the way.
2020-04-16 16:13:56 +00:00
nicm
363d950ac0
Send secondary device attributes instead of primary which gives us a bit
...
more useful information on some terminals.
2020-04-16 15:14:25 +00:00
nicm
5ec80bd249
Move the UTF-8 flag to terminal flags.
2020-04-16 14:25:35 +00:00
nicm
4744aa43af
Add a helper function to get the terminal flags.
2020-04-16 14:03:51 +00:00
nicm
b2443aa2f9
Add support for the iTerm2 sychronized updates escape sequence which
...
drastically reduces flickering.
2020-04-16 13:35:24 +00:00
nicm
a2e47b5279
Show signal name when process exits rather than number.
2020-04-16 07:28:36 +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
1e72f5ea43
Use mode-style for selected items, like choose modes. GitHub issue 2166.
2020-04-15 16:11:23 +00:00
nicm
c7883d5c87
Use grid_empty_line rather than memset when adding new lines on resize.
...
Also remove some old test code.
2020-04-15 12:59:20 +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
1ef9a69f4f
Send keys when they are complete not before (!= vs ==).
2020-04-14 13:22:05 +00:00
nicm
63ec791854
Provide an accessor for the running queue item and use it to not let
...
hooks recurse.
2020-04-14 06:00:52 +00:00
nicm
fc83517913
Missed a few warnings in previous.
2020-04-13 20:54:15 +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
187277eaad
Add helpers for the simple case of parse string and add to command queue.
2020-04-13 18:59:41 +00:00
nicm
34804f2709
When parsing strings, put all commands in one group even if there are
...
newlines. This means that for example bind q { a \n b } and bind q "a ;
b" are the same. Also log commands in different groups separated by ;;
rather than ; (a command list like this should never be user visible).
2020-04-13 16:19:37 +00:00
nicm
3f86d6d460
When adding a list of commands to the queue, instead of automatically
...
creating a new state for each group of commands, require the caller to
create one and use it for all the commands in the list. This means the
current target works even with list with multiple groups (which can
happen if they are defined with newlines).
2020-04-13 15:55:51 +00:00
nicm
adb76fd1ce
Move cmdq_state into cmd-queue.c.
2020-04-13 14:46:04 +00:00
nicm
9a65102bfc
Rename cmdq_shared to cmdq_state which will better reflect what it is
...
(going to be) used for.
2020-04-13 14:04:25 +00:00
nicm
77d5b0cc53
Store a key event not a mouse event in the shared data.
2020-04-13 13:42:35 +00:00
nicm
53d6b94e8a
Move the NOHOOKS flag into the shared flags.
2020-04-13 13:32:09 +00:00
nicm
04cdd03525
Also move cmdq_item and cmdq_list into cmd-queue.c (this is to make its
...
use more clearly defined and preparation for some future work).
2020-04-13 10:59:58 +00:00
nicm
c20eb0c0ae
Make struct cmd local to cmd.c and move it out of tmux.h.
2020-04-13 08:26:27 +00:00
nicm
9cbe9675ea
Change so that the appropriate hooks for windows and panes belong to
...
pane/window options rather than all being session options. This is
useful for example to create a pane that is automatically closed on some
condition. From Anindya Mukherjee.
2020-04-13 07:25:33 +00:00