Nicholas Marriott
62f234ce3b
UTF-8 combined character fixes.
...
Thai can have treble combinations (1 x width=1 then 2 x width=0) so bump the
UTF-8 cell data size to 9 and alter the code to allow this.
Also break off the combining code into a separate function, handle any further
combining beyond the buffer size by replacing the character with _s, and when
redrawing the UTF-8 character don't assume the first part has just been
printed, redraw the entire line.
2009-10-20 17:33:33 +00:00
Nicholas Marriott
387f4d42cc
Move the check for whether to force a line wrapper lower down into the tty code
...
where it has access to the tty width, which is what should have been checked.
2009-10-20 16:32:23 +00:00
Nicholas Marriott
d1e6388fed
Nuke stray blank line.
2009-10-20 14:22:57 +00:00
Nicholas Marriott
2afe395ff2
Stop updating the screen when not in output mode, stops copy mode getting
...
confused.
2009-10-19 13:18:13 +00:00
Nicholas Marriott
daa26079ee
Always move the cursor position on !xenl terminals, since there is no invisible
...
last cursor position.
Also nuke an unused variable.
2009-10-17 08:35:38 +00:00
Nicholas Marriott
fe26b5d25f
Don't print wide characters at screen width - 1. Matches uterm behaviour and
...
is probably a better idea anyway.
2009-10-17 08:32:18 +00:00
Nicholas Marriott
43d62c1ae3
Instead of having a complicated check to see if the cursor is in the last
...
position to avoid an explicit wrap, actually move it there.
Some UTF-8 fixes to come.
2009-10-17 08:24:46 +00:00
Nicholas Marriott
70355021d8
When checking whether the region will scroll and the cursor position is thus
...
unsuitable for using CUD/CUU, check the current cursor position not the target
position.
2009-10-16 19:09:40 +00:00
Nicholas Marriott
dba0d54cf5
The pane pty name isn't useful for anything so show the pane number instead.
2009-10-15 07:05:38 +00:00
Nicholas Marriott
1a3c334c75
cmd_find_client shouldn't die when there is an empty slot in the clients
...
array. DOH.
2009-10-14 20:52:28 +00:00
Nicholas Marriott
adad557499
Don't allow cmd_lookup_client to test clients without a session.
2009-10-14 09:29:10 +00:00
Nicholas Marriott
ad566a86de
Move lines into the history when scrolling even if the scroll region is not
...
the entire screen.
Allows ircII users to see history, prompted by naddy.
2009-10-13 15:38:37 +00:00
Nicholas Marriott
71dc6e04e8
Handle DECCOLM by just emulating its side-effect of clearing the screen.
2009-10-13 15:23:13 +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
0907ca1931
Do this in a better way - print messages when exiting with nonzero.
...
Also remove the login shell information from server-info, only the client
should care about it.
2009-10-13 13:15:26 +00:00
Nicholas Marriott
760e39e405
Don't print exit messages when used as a login shell, requested by martynas@ a
...
while back.
2009-10-13 13:11:06 +00:00
Nicholas Marriott
5d78371628
Don't try to use \n across scroll region when doing \r\n either.
2009-10-13 08:37:15 +00:00
Nicholas Marriott
9294cb099f
When a session is unattached, reset its activity timer to prevent it locking
...
instantly when reattached.
2009-10-13 06:14:08 +00:00
Nicholas Marriott
4dcb5040a0
Instead of using something sort of similar for both newline checks, use
...
something the same. Doesn't fix the bug I'm looking for though :-/.
2009-10-13 00:44:16 +00:00
Nicholas Marriott
d7626cd9d7
When drawing lines that have wrapped naturally, don't force a newline but
...
permit them to wrap naturally again. This allows terminals that use this to
guess where lines start and end for eg mouse selecting (like xterm) to work
correctly.
This was another long-standing issue raised by several people over the last
while.
Thanks to martynas@ for much testing. This was not trivial to get right so
bringing it in for wider testing and adn to fix any further glitches in-tree.
2009-10-12 17:19:47 +00:00
Nicholas Marriott
8608c6970d
When backspace is received at the beginning of a line and the previous line was
...
wrapped, move the cursor back up to the end of the previous line.
Another one of the forgotten persons requested this quite a while ago (I need
to start noting names on todo items...) when it was quite hard to
implement. Now it is easy and I don't see it can do any harm, so hey presto...
2009-10-12 16:59:55 +00:00
Nicholas Marriott
693b3d03e6
Don't run through the column unchanged case if the row was unchanged but there
...
were no suitable optimisations, instead make it an else to fall through to
absolute addressing.
2009-10-12 16:41:02 +00:00
Nicholas Marriott
eb9826f65d
If the vertical cursor movement crosses the scroll region, CUU and CUD
...
shouldn't be used even if VPA isn't present - in that case CUP should be used.
2009-10-12 16:37:43 +00:00
Nicholas Marriott
56157444de
Wrap a couple of long lines.
2009-10-12 16:33:39 +00:00
Nicholas Marriott
0aab5811ca
Use absolute movement if right at the end of the line as it isn't a reliable
...
place to move from relatively.
2009-10-12 14:54:19 +00:00
Nicholas Marriott
687c4a9fab
Use relative cursor movement instead of absolute when possible and when
...
supported by the terminal to reduce the size of the output data (generally
about 10-20%).
2009-10-12 13:01:18 +00:00
Nicholas Marriott
33ae063cae
Permit attributes to be turned off in #[] by prefixing with "no", for example
...
"noblink".
2009-10-12 11:08:02 +00:00
Nicholas Marriott
762459954f
Similarly add a tty_cursor_pane function to tidy up most of the calls.
2009-10-12 09:29:58 +00:00
Nicholas Marriott
972a6f5656
_absolute is redundant, just use tty_region.
2009-10-12 09:16:59 +00:00
Nicholas Marriott
f05b32f7ad
Cleanup: use two functions for region setting, one for absolute and one inside
...
pane.
2009-10-12 09:09:35 +00:00
Nicholas Marriott
0a2a354499
Like linefeed, don't set the scroll region for reverse index unless it will be
...
needed.
While here, also tidy up a couple of long lines and remove an extraneous blank.
2009-10-11 22:35:10 +00:00
Jason McIntyre
b4ef3e5071
punctuation fix;
2009-10-11 14:12:10 +00:00
Nicholas Marriott
fbb030d7f7
Set the current window pointer to NULL when killing a winlink that is to be
...
replaced with link-window -k. This prevents it being pushed onto the last
window stack and causing a use-after-free.
Only took me an hour to find this :-/...
2009-10-11 10:39:27 +00:00
Nicholas Marriott
64b5f39656
Add a pipe-pane command to allow a pane to be piped to a shell command, for
...
example:
pipe-pane 'cat >~/out'
No arguments stops outputing and closes the pipe; the -o flag toggles a pipe
and on and off (useful for key bindings).
Suggested by espie@.
2009-10-11 10:04:27 +00:00
Nicholas Marriott
325e20d76d
Convert if-shell over to the background job framework as well.
2009-10-11 09:10:57 +00:00
Nicholas Marriott
88f3ffe86e
Remove a debugging leftover and add copyright.
2009-10-11 09:04:33 +00:00
Nicholas Marriott
cebc988dd4
Switch run-shell over to queue the command in the background like #().
2009-10-11 08:58:05 +00:00
Nicholas Marriott
abedfa77da
There isn't much point in having a free function if it isn't used.
...
Also allow a NULL tree.
2009-10-11 07:30:07 +00:00
Nicholas Marriott
ff4b4e667a
Collect status from dead jobs and don't invoke the callback until both
...
all input (the socket is closed) and status is available.
2009-10-11 07:20:16 +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
f68ade7b1d
Braek some bits out of server_fill_client() that aren't really related to
...
polling into their own function.
2009-10-11 00:53:14 +00:00
Nicholas Marriott
095ecf2d90
Put all jobs on a global all_jobs list and use that in server.c instead of
...
running through all the clients.
2009-10-10 18:42:14 +00:00
Nicholas Marriott
b7c364a853
-scroll mode which is dead.
2009-10-10 17:39:55 +00:00
Nicholas Marriott
5aa49e695e
Split list-panes off from list-windows.
2009-10-10 17:19:38 +00:00
Nicholas Marriott
2988c594cc
Accept key and mouse input for keys in zombified windows if they are in a mode..
2009-10-10 15:29:34 +00:00
Nicholas Marriott
9ed62eeb91
When a window is zombified and automatic-rename is on, append [dead] to the
...
name.
2009-10-10 15:23:13 +00:00
Nicholas Marriott
6bca92db4d
Rather than running status-left, status-right and window title #() with popen
...
immediately every redraw, queue them up and run them in the background,
starting each once every status-interval. The actual status line uses the
output from the last run.
This brings several advantages:
- tmux itself may be called from inside #() without causing the server to hang;
- likewise, sleep or similar doesn't cause the server to block;
- commands aren't run excessively often when redrawing;
- commands shared by status-left and status-right, or used multiple times, will
only be run once.
run-shell and if-shell still use system()/popen() but will be changed over to
use this too later.
2009-10-10 15:03:01 +00:00
Nicholas Marriott
4658c063d5
New option, mouse-select-pane. If on, the mouse may be used to select the
...
current pane.
Suggested by sthen@ and also by someone else ages ago who I have forgotten.
2009-10-10 14:51:16 +00:00
Nicholas Marriott
3a20a05a49
There is no point setting the scroll region up for line feeds unless scrolling
...
is actually going to happen, so don't.
2009-10-10 10:36:46 +00:00
Nicholas Marriott
9dd72b9583
Add "grouped sessions" which have independent name, options, current window and
...
so on but where the linked windows are synchronized (ie creating, killing
windows and so on are mirrored between the sessions). A grouped session may be
created by passing -t to new-session.
Had this around for a while, tested by a couple of people.
2009-10-10 10:02:48 +00:00