Tiago Cunha
f41a3914a5
Sync OpenBSD patchset 421:
...
Try to reduce the UTF-8 mess.
Get rid of passing around u_char[4]s and define a struct utf8_data which has
character data, size (sequence length) and width. Move UTF-8 character
collection into two functions utf8_open/utf8_append in utf8.c which fill in
this struct and use these functions from input.c and the various functions in
screen-write.c.
Space for rather more data than is necessary for one UTF-8 sequence is in the
utf8_data struct because screen_write_copy is still nasty and needs to reinject
the character (after combining) into screen_write_cell.
2009-10-23 17:16:25 +00:00
Nicholas Marriott
c2b8f3b55a
Support the bright fg/bg colour SGR 90-97 and 100-107.
...
Reported by Tim Allen.
2009-10-23 15:48:39 +00:00
Nicholas Marriott
9afb0d739e
%zu not %u, doh.
2009-10-20 22:17:33 +00:00
Nicholas Marriott
1af09d6330
Try to reduce the UTF-8 mess.
...
Get rid of passing around u_char[4]s and define a struct utf8_data which has
character data, size (sequence length) and width. Move UTF-8 character
collection into two functions utf8_open/utf8_append in utf8.c which fill in
this struct and use these functions from input.c and the various functions in
screen-write.c.
Space for rather more data than is necessary for one UTF-8 sequence is in the
utf8_data struct because screen_write_copy is still nasty and needs to reinject
the character (after combining) into screen_write_cell.
2009-10-20 19:18:28 +00:00
Tiago Cunha
ee46dba585
Sync OpenBSD patchset 408:
...
Handle DECCOLM by just emulating its side-effect of clearing the screen.
2009-10-15 01:53:48 +00:00
Tiago Cunha
cbd3b1bc9b
Sync OpenBSD patchset 400:
...
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-15 01:39:30 +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
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
Tiago Cunha
15556ad0d6
Sync OpenBSD patchset 281:
...
Nuke unused variable.
2009-08-21 21:07:20 +00:00
Tiago Cunha
cc2c061289
Sync OpenBSD patchset 280:
...
Handle the device attributes (DA) escape sequence.
2009-08-20 11:54:58 +00:00
Tiago Cunha
4631c07483
Sync OpenBSD patchset 275:
...
Instead of just checking for an empty buffer, which may not be the case if
there is unconsumed data, save the previous size and use it instead. This means
that activity monitoring should work in this (unlikely) event.
Also remove a debugging statement that no longer seems necessary.
2009-08-20 11:48:01 +00:00
Nicholas Marriott
234ad54b2c
Nuke unused variable.
2009-08-20 10:48:25 +00:00
Nicholas Marriott
bf121f7c60
Handle the device attributes (DA) escape sequence.
2009-08-19 17:00:31 +00:00
Nicholas Marriott
11f0f812c5
Didn't mean to commit this stuff.
2009-08-19 09:04:48 +00:00
Nicholas Marriott
620402a833
This is a better fix for OS X stupidity.
2009-08-19 09:00:06 +00:00
Nicholas Marriott
036de0c5e4
Instead of just checking for an empty buffer, which may not be the case if
...
there is unconsumed data, save the previous size and use it instead. This means
that activity monitoring should work in this (unlikely) event.
Also remove a debugging statement that no longer seems necessary.
2009-08-18 21:41:13 +00:00
Tiago Cunha
97eb537f38
Sync OpenBSD patchset 227:
...
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-09 17:32:06 +00:00
Tiago Cunha
05eb4ece44
Sync OpenBSD patchset 223:
...
Using the alternative screen (smcup/rmcup) should also preserve the current
colours and attributes. Found thanks to a report from Taylor Venable.
While here also nuke a couple of extra blank lines.
2009-08-09 16:57:49 +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
04e97e8aef
Using the alternative screen (smcup/rmcup) should also preserve the current
...
colours and attributes. Found thanks to a report from Taylor Venable.
While here also nuke a couple of extra blank lines.
2009-08-07 00:12:13 +00:00
Tiago Cunha
d29b57f597
Sync OpenBSD patchset 155:
...
Make some functions which return unused values void (mostly found by lint) and
tweak a redundant expression in window_pane_set_mode.
2009-07-22 17:46:53 +00:00
Nicholas Marriott
76a9d98562
Make some functions which return unused values void (mostly found by lint) and
...
tweak a redundant expression in window_pane_set_mode.
2009-07-21 19:54:22 +00:00
Nicholas Marriott
e63567d51c
Support "alternate screen" mode (terminfo smcup/rmcup) typically used by full
...
screen interactive programs to preserve the screen contents. When activated, it
saves a copy of the visible grid and disables scrolling into and resizing out
of the history; when deactivated the visible data is restored and the history
reenabled.
2009-07-14 06:40:33 +00:00
Nicholas Marriott
359285928b
Support "alternate screen" mode (terminfo smcup/rmcup) typically used by full
...
screen interactive programs to preserve the screen contents. When activated, it
saves a copy of the visible grid and disables scrolling into and resizing out
of the history; when deactivated the visible data is restored and the history
reenabled.
2009-07-13 10:43:52 +00:00
Nicholas Marriott
a5830b9603
Restore $Id$ and add script to do so.
2009-06-25 16:21:32 +00:00
Nicholas Marriott
63b38ef628
Implement the CBT (backward tab) sequence (\033[Z).
2009-06-25 15:54:57 +00:00
Nicholas Marriott
1b245388b5
Proper support for tab stops (\033H etc), using a bitstring(3). Makes another
...
vttest test happy.
2009-06-25 15:54:38 +00:00
Nicholas Marriott
cd71a13a14
Okay, so I screwed up when testing this, doh. Unbreak so that CAN/SUB actually
...
do cancel the sequence, and tweak to make the code more clear.
2009-06-25 15:54:03 +00:00
Nicholas Marriott
4eed190649
Oops, CAN and SUB should abort the sequence (return to first state), not remain
...
in the same state.
2009-06-25 15:53:44 +00:00
Nicholas Marriott
c3c14817c9
More input compatibility love. Support C0 within escape sequences, and the C0
...
control character VT (vertical tab, \013), which is treated as LF like
VT102. Makes another vttest happy.
2009-06-25 15:52:59 +00:00
Nicholas Marriott
93631b3ca7
Implement the DEC alignment test. With the last change this is enough for the
...
first cursor test in vttest (in ports) to pass; it still shops a few more
problems though.
2009-06-25 15:51:54 +00:00
Nicholas Marriott
7597cb6834
Pass window titles through vis(1). <0x20 is dropped anyway by the input state
...
machine but top-bit-set nonprintables could cause trouble, and they are neater
like this anyway.
2009-06-25 15:49:27 +00:00
Nicholas Marriott
f031975dc0
Implement the CBT (backward tab) sequence (\033[Z).
2009-06-04 21:02:21 +00:00
Nicholas Marriott
d42fb43f4f
Proper support for tab stops (\033H etc), using a bitstring(3). Makes another
...
vttest test happy.
2009-06-04 18:48:24 +00:00
Nicholas Marriott
d6015824dd
Okay, so I screwed up when testing this, doh. Unbreak so that CAN/SUB actually
...
do cancel the sequence, and tweak to make the code more clear.
2009-06-04 14:42:14 +00:00
Nicholas Marriott
6c1f03578d
Oops, CAN and SUB should abort the sequence (return to first state), not remain
...
in the same state.
2009-06-04 14:24:49 +00:00
Nicholas Marriott
8dd2f0da3f
More input compatibility love. Support C0 within escape sequences, and the C0
...
control character VT (vertical tab, \013), which is treated as LF like
VT102. Makes another vttest happy.
2009-06-04 14:15:50 +00:00
Nicholas Marriott
52ec9b9ec4
Implement the DEC alignment test. With the last change this is enough for the
...
first cursor test in vttest (in ports) to pass; it still shops a few more
problems though.
2009-06-03 23:30:40 +00:00
Nicholas Marriott
2faec76afa
Pass window titles through vis(1). <0x20 is dropped anyway by the input state
...
machine but top-bit-set nonprintables could cause trouble, and they are neater
like this anyway.
Suggested by deraadt a few days ago.
2009-06-03 19:33:04 +00:00
Nicholas Marriott
35876eaab9
Import tmux, a terminal multiplexor allowing (among other things) a single
...
terminal to be switched between several different windows and programs
displayed on one terminal be detached from one terminal and moved to another.
ok deraadt pirofti
2009-06-01 22:58:49 +00:00
Nicholas Marriott
143aa718e5
Space trimmage mega-diff.
2009-05-04 17:58:27 +00:00
Nicholas Marriott
7d6896ae79
Support NEL.
2009-04-23 21:28:45 +00:00
Nicholas Marriott
cf7b384c43
Better UTF-8 support, including combined characters. Unicode data is now stored
...
as UTF-8 in a separate array, the code does a lookup into this every time it
gets to a UTF-8 cell. Zero width characters are just appended onto the UTF-8
data for the previous cell. This also means that almost no bytes extra are
wasted non-Unicode data (yay).
Still some oddities, such as copy mode skips over wide characters in a strange
way, and the code could do with some tidying.
2009-03-28 20:17:29 +00:00
Nicholas Marriott
6c0728fe07
Step 2 of the Grand Plan To Make UTF-8 Better.
...
Split grid into two arrays, one containing grid attributes/flags/colours (keeps
the name grid_cell for now) and a separate with the character data (called
text). The text is stored as a u_short but is treated as a uint64_t elsewhere;
eventually the grid will have two arrays.
I'm not happy with the naming so that might change.
Still need to decide where to go from here. I'm not sure whether to combine
the peek/set functions together, and also whether to continue to treat the
text as a uint64_t (and convert to/from Unicode) or make it a char array
(of size one when UTF-8 disabled, eight when enabled) and keep everything
as UTF-8.
Also since UTF-8 will eventually become an attribute of the grid itself it
might be nice to move all the padding crap into grid.c.
2009-03-28 16:30:05 +00:00
Nicholas Marriott
4cdc228353
Unbreak UTF-8.
2009-01-18 21:46:30 +00:00
Nicholas Marriott
162bacdcd9
Window splitting. Two vertical panes fixed 50% each. This is a huge diff, still a couple of bugs (notably heap corruption somewhere causing segfault on exit).
2009-01-11 23:31:46 +00:00
Nicholas Marriott
a1b43faa43
Trim spaces.
2009-01-10 01:51:22 +00:00
Nicholas Marriott
4ebb85aae8
Don't return NULL when retrieving a string that is too long.
2009-01-08 21:22:01 +00:00
Nicholas Marriott
4846ad1657
Introduce nitems() and use it; use bsearch.
2009-01-07 22:52:33 +00:00
Nicholas Marriott
7a82e86827
Make window options work the same was as session options, add mode-fg/mode-bg options, force -g for global on set/show/setw/showw/
2008-12-08 16:19:51 +00:00
Nicholas Marriott
d0342f4a04
Ability to show window title on status line.
2008-12-05 20:04:06 +00:00
Nicholas Marriott
5ca710d9e3
Disable UTF-8 by default and add options to enable it.
2008-11-16 13:28:59 +00:00
Nicholas Marriott
6304e23984
Record intermediate for p2/s2 and fake up charset redefinition (some programs use it to switch character set).
2008-11-04 20:41:10 +00:00
Nicholas Marriott
cf092dc27f
This breaks mutt.
2008-11-04 20:06:48 +00:00
Nicholas Marriott
25975cf5ae
Alternative charset commands.
2008-11-04 19:28:58 +00:00
Nicholas Marriott
185f7297e8
Better OSC support for title setting, and support APC as well.
2008-10-09 21:22:16 +00:00
Nicholas Marriott
22ef1a1379
SGR should not reset charset... don't know how this worked before...
2008-09-26 07:41:01 +00:00
Nicholas Marriott
93aa3f3c21
Make RIS also reset scroll region.
2008-09-26 07:34:12 +00:00
Nicholas Marriott
62457bce0b
Trim.
2008-09-26 06:45:28 +00:00
Nicholas Marriott
efe557313a
Internal screen data rewrite for better 256 colour/UTF-8 support.
2008-09-25 20:08:57 +00:00
Nicholas Marriott
19a2c87f04
Initial UTF-8 support.
2008-09-09 22:16:37 +00:00
Nicholas Marriott
1e145a639b
Unbreak 256 colours when commands are combined.
2008-09-09 17:35:04 +00:00
Nicholas Marriott
6674197e85
Fix bold/non-bold mismatch in 256 colour mode by adding an extra 8 bits (ick) onto the attributes and using two of them to mark the fg and bg as 256 colours when necessary. If only it was 255 colours we would have one value for default and wouln't need this :-/.
2008-09-08 22:03:56 +00:00
Nicholas Marriott
cecd7c0cc8
Comments.
2008-09-08 21:05:41 +00:00
Nicholas Marriott
0ba3bab997
Get the colours right.
2008-09-08 20:51:19 +00:00
Nicholas Marriott
4235ddb4e8
Initial 256 colour support, lightly tested.
2008-09-08 17:40:51 +00:00
Nicholas Marriott
3337dfcae5
Support keypad mode, and get rid of SCREEN_DEF*. Meant to commit these separately but forgot :-/.
2008-07-24 21:42:40 +00:00
Nicholas Marriott
97212771b5
Support keypad. Change cursor key output.
2008-07-23 23:44:50 +00:00
Nicholas Marriott
83a9f272d8
Missing NULL check.
2008-06-18 19:06:51 +00:00
Nicholas Marriott
7842d29673
Revert attempt to fix stray updates, turns out it was clock :-/.
2008-06-04 19:20:10 +00:00
Nicholas Marriott
39be570b20
vi keys from Will Maier.
2008-06-04 18:50:35 +00:00
Nicholas Marriott
14b9512546
Add activity monitoring, also invert items on taskbar which have activity.
2008-06-04 16:46:23 +00:00
Nicholas Marriott
205b78ec58
Some key tweaks, fix status bar to not rely on attr.
2008-01-03 21:32:11 +00:00
Nicholas Marriott
08d7be638e
Fix charset stuff.
2007-12-06 13:54:33 +00:00
Nicholas Marriott
103748d6ad
Major reorganisation of screen handling.
2007-12-06 09:46:23 +00:00
Nicholas Marriott
3962c5f706
Change window name on \ek...\e\.
2007-11-30 11:08:35 +00:00
Nicholas Marriott
043514a834
Preliminary mouse support.
2007-11-27 23:28:51 +00:00
Nicholas Marriott
f47ab8f13f
Don't nuke charset flag on [0m. Also rename DRAWING -> CHARSET flag.
2007-11-27 23:01:27 +00:00
Nicholas Marriott
43c99c2fab
Clear current line properly on clear eos.
2007-11-27 22:12:14 +00:00
Nicholas Marriott
76c8a590db
Big internal reorganisation to move tty control into parent.
2007-11-27 19:23:34 +00:00
Nicholas Marriott
15511cb41a
Support for VT100 graphics mode. Also lose some redundant checks.
2007-11-24 23:29:49 +00:00
Nicholas Marriott
5ad9b31ac5
Scroll region reset homes the cursor, so start at 0,0 when drawing. Also don't set region after DECRC.
2007-11-24 19:29:56 +00:00
Nicholas Marriott
a01093603b
Inc region in debug msg.
2007-11-23 22:51:13 +00:00
Nicholas Marriott
2cdc75fa4e
Fix clear.
2007-11-21 14:50:41 +00:00
Nicholas Marriott
9a6e47cfa8
Initial history support.
2007-11-21 13:11:41 +00:00
Nicholas Marriott
ceab127fac
Mass screen.c rename/tidy. Add a actual size (ysize) as distinct from display size (now dx,dy). Move functions which work on the displayed area into screen-display.c and tidy. Use macros consistently when accessing screen data (may want to move everything about again later!). This the first step on the road to scrollback.
2007-11-20 21:42:29 +00:00
Nicholas Marriott
0be6a3041f
Style: ry_* -> r*
2007-11-20 18:46:32 +00:00
Nicholas Marriott
86b73cec72
Check for scrolling when _cursor_ is inside region, not number of lines. Duh.
2007-11-16 16:28:14 +00:00
Nicholas Marriott
5940c5ff88
Support tab.
2007-11-09 17:06:01 +00:00
Nicholas Marriott
ab097f0c0c
Don't save/restore ry_*.
2007-10-26 17:15:50 +00:00
Nicholas Marriott
4df168c986
Use local var and pull screen out of ictx.
2007-10-24 15:40:59 +00:00
Nicholas Marriott
ebeb14211d
Handle DSR for resize(1).
2007-10-24 15:29:29 +00:00
Nicholas Marriott
e21587864a
Save restore attr.
2007-10-24 15:01:25 +00:00
Nicholas Marriott
5c2d7b2a9a
Don't send zero-length when we have a \0.
2007-10-19 23:25:33 +00:00
Nicholas Marriott
de24fbb35c
Add a bell-action option.
2007-10-19 10:21:36 +00:00
Nicholas Marriott
ffa8dcc4da
Handle \r\n at EOL properly.
2007-10-12 11:44:30 +00:00
Nicholas Marriott
efa3e131b5
Simplify input.c - lose class table and use macros.
2007-10-10 19:45:20 +00:00
Nicholas Marriott
1e252b9e9a
Wrap lines properly.
2007-10-05 17:51:56 +00:00
Nicholas Marriott
1f9a8e70d9
Incomplete resize support.
2007-10-04 19:03:52 +00:00
Nicholas Marriott
9bb907f2a7
Move command handling into the server and tidy up some bits.
2007-10-03 10:18:32 +00:00
Nicholas Marriott
7ccdbf392d
Sprinkle some const.
2007-10-03 09:17:00 +00:00
Nicholas Marriott
ef91aac688
Add profiling. Also some trivial optimisations to skip memcpying.
2007-10-03 00:13:46 +00:00
Nicholas Marriott
843779a3e0
Restore window title handling.
2007-10-01 17:37:41 +00:00
Nicholas Marriott
872696f781
Pass attributes around as flags rather than as a list of escape codes.
2007-10-01 14:18:42 +00:00
Nicholas Marriott
532757fd1c
Don't move cursor when filling screen.
2007-09-30 13:29:28 +00:00
Nicholas Marriott
32f177038f
Dl/Il should follow scrolling region.
2007-09-29 18:48:04 +00:00
Nicholas Marriott
e6424bcce9
Fix scrolling region checks.
2007-09-29 17:45:10 +00:00
Nicholas Marriott
1e316cfc7c
Lose intermediate handling (unused). Change argument parsing to work properly over multiple buffers by saving a copy of the argument (we can't just save off/len since the buffer may vanish at any point).
2007-09-29 14:25:49 +00:00
Nicholas Marriott
a777c060dc
Nuke CLEAR_SCREEN/ENDOFSCREEN and assert scroll region when drawing. These will be reqd for status line(s).
2007-09-29 10:57:39 +00:00
Nicholas Marriott
14e9f73df9
debug2 not debug.
2007-09-29 09:50:59 +00:00
Nicholas Marriott
0bbe838b25
Window flags, currently only bell.
2007-09-29 09:15:49 +00:00
Nicholas Marriott
102e4b35d9
Sort headers.
2007-09-28 22:54:21 +00:00
Nicholas Marriott
aafee17de6
New input parser via state machine.
2007-09-28 22:47:22 +00:00
Nicholas Marriott
1fefbb7a85
Pass through backspace for now.
2007-09-21 19:24:37 +00:00
Nicholas Marriott
fc63750d30
Scrolling region.
2007-08-28 09:19:50 +00:00
Nicholas Marriott
635edfa7d5
Don't accept zero titles.
2007-08-27 11:05:21 +00:00
Nicholas Marriott
272ad1ed6c
Tweak logging.
2007-08-27 08:12:23 +00:00
Nicholas Marriott
a41ece5ff0
Initial import to CVS. Basic functions are working, albeit with a couple of showstopper memory bugs and many missing features. Detaching, reattaching, creating new sessions, listing sessions work acceptably for using with shells. Simple curses programs (top, systat, tetris) and more complicated ones (mutt, emacs) that don't require scrolling regions (ESC[r) mostly work fine (including mutt, emacs). No status bar yet and no key remapping or other customisation.
2007-07-09 19:04:12 +00:00