Wez Furlong
a4c7de7b9b
We now support shift+insert to paste the selection
2018-02-05 08:22:08 -08:00
Wez Furlong
b24ac14c05
Add TerminalHost trait
...
This will make it easier to add copy/paste handling in a follow up.
2018-02-04 22:35:33 -08:00
Wez Furlong
5261f9f3d8
Enable mouse reporting
...
There's a bit of restructuring of XCB event handling going on to enable
this, and we only support SGR reporting at the moment.
2018-02-04 20:53:03 -08:00
Wez Furlong
f89d37401b
Enable viewing the scrollback
...
Both mouse wheel and shift+{PageUp,PageDown} can be used to adjust
the scroll viewport.
2018-02-04 14:19:12 -08:00
Wez Furlong
0bec822f75
create the palette when we create the window
...
Rather than every time we paint and resize
2018-02-04 09:19:25 -08:00
Wez Furlong
09c70930b9
improve resize handling
...
Both in terms of resizing the window and running the `resize` utility.
2018-02-04 09:17:05 -08:00
Wez Furlong
4c8e3ffd75
improve clustering and cursor rendering
...
We weren't quite right with handling the cursor around double-width
characters. We're now a bit more robust at this because we're
clustering and taking pains to consider the printable width of the
cell as well as the width of the shaped (eg: with contextual ligatures)
glyph.
There may still be issues with contextual ligatures of length 3,
but I haven't managed to nail down exactly the issue yet.
2018-02-04 08:28:32 -08:00
Wez Furlong
78c2df34fc
use Range for scroll region
2018-02-02 09:02:30 -08:00
Wez Furlong
904f8fc059
better typing for rows and cursor position
2018-02-02 08:16:07 -08:00
Wez Furlong
c63c39409a
use Position for line positioning CSIAction's
2018-02-02 07:35:08 -08:00
Wez Furlong
d152055700
reduce the variations on set/delta for cursor positioning
2018-02-02 00:46:04 -08:00
Wez Furlong
bb186da400
avoid eagerly casting some parsed sequences to usize
...
This helps to avoid unexpected integer overflow
2018-02-02 00:23:30 -08:00
Wez Furlong
25773466fb
add a couple of sequences used by tmux when man is running
2018-02-01 07:42:16 -08:00
Wez Furlong
5cdb5149c3
suppress keypress debug prints
2018-02-01 00:26:01 -08:00
Wez Furlong
1cc180b813
test and fix a scrolling related bug
2018-02-01 00:22:33 -08:00
Wez Furlong
622c573201
fix boundary issue when scrolling and scrollback exceeded
2018-01-31 21:26:05 -08:00
Wez Furlong
e7e0aeebc2
Add support for cursor keys
2018-01-31 20:31:06 -08:00
Wez Furlong
a49e4b653b
fix an issue with CR processing
...
This eliminates the zsh reversed % artifact issue.
Added a feature flag to turn on diagnostics even in release mode;
`cargo run --release --features debug-escape-sequences`
2018-01-31 19:00:15 -08:00
Wez Furlong
659ce4fc2d
Make answerback more generic, enable title changing
2018-01-31 15:15:23 -08:00
Wez Furlong
11e6d538fc
move term to its own crate
...
This makes it harder to accidentally violate separation of concerns.
2018-01-31 10:50:21 -08:00
Wez Furlong
4dcab21a97
placeholder for alt graphics mode
...
These are emitted by `top`
2018-01-31 10:15:39 -08:00
Wez Furlong
45793bd594
Add some more tests and bounds checks/limits
2018-01-31 10:07:50 -08:00
Wez Furlong
a55395d7c9
start building out unit tests
2018-01-30 22:44:14 -08:00
Wez Furlong
0eb4dd44b3
add IL and DL sequences
...
These probably aren't quite right
2018-01-30 07:31:31 -08:00
Wez Furlong
cb9a2129be
handle reverse index escape sequence
...
This unlocks pressing `b` in `less` and `more` to scroll backwards.
To facilitate this I had to do a better job at scrolling up and down,
so beef up the code to enable that. Scroll regions still need some
work; test case for that is running vim and then opening help.
Also: fixup the y position when rending rows; it was off by one row.
2018-01-29 23:29:56 -08:00
Wez Furlong
0ebf84ee1c
adopt dirtying mechanism for more efficient screen updates
...
We now keep track of the dirty status on a per-line basis
and use that status to realize when we need to repaint a portion
of the screen. This reduces the compute cost of redrawing
quite significantly; we're no longer on `top` when we're running
`top`!
2018-01-29 20:38:48 -08:00
Wez Furlong
740c3339a5
Add glyph caching
2018-01-29 09:38:06 -08:00
Wez Furlong
5b1ccc59b6
make CSIParser a bit more compact
...
The simpler escape sequences were getting a bit boiler-platey and long,
so hoist them up and perform matching at the main level. This has the
side effect of discarding params after a match; that's fine for these
as it only seems to be important for the SGR sequences.
2018-01-29 08:00:30 -08:00
Wez Furlong
be30b1cb54
there's already a wterm, rename to wezterm
2018-01-28 23:52:21 -08:00
Wez Furlong
544dd70ac1
Add CUU, CUD, CUB handling
2018-01-28 23:50:53 -08:00
Wez Furlong
67f07b4fcc
add primitive auto wrapping support
2018-01-28 23:44:38 -08:00
Wez Furlong
5dbf90412f
bounds check should be on the actual number of cols
...
Don't trust that a given Line has exactly phys_cols columns.
2018-01-28 23:33:31 -08:00
Wez Furlong
4a4d8c7186
add CUF cursor move support
2018-01-28 22:25:53 -08:00
Wez Furlong
2e73b937bb
Add some state to track vertical scroll regions
...
However, it doesn't really do very much that is useful yet
2018-01-28 21:16:59 -08:00
Wez Furlong
6ed0e81f02
fix SetCursorPosXY; had rows/cols flipped
2018-01-28 21:13:11 -08:00
Wez Furlong
13a856bbb2
add device attributes answerback
2018-01-28 20:46:34 -08:00
Wez Furlong
1059620233
add stub for setting the scroll region
2018-01-28 20:33:21 -08:00
Wez Furlong
2011eec9f2
clamp cursor y position when moving the cursor
2018-01-28 19:30:07 -08:00
Wez Furlong
001eda902b
tidy up basic scroll handling
...
Previously, we would not allocate a new line and would end up
panicking when we went off the end of the default screen height.
2018-01-28 18:05:22 -08:00
Wez Furlong
8d9cd83e6d
add some more comments on CSIParser
2018-01-28 17:11:05 -08:00
Wez Furlong
0057b42c4f
Pull intermediates check up higher in CSIParser
...
This should reduce the chance of ambiguous matches for sequences
that have the same 'byte' field but different intermediates.
2018-01-28 17:01:15 -08:00
Wez Furlong
78c3aee697
Add support for responding to escape sequences
2018-01-28 16:43:10 -08:00
Wez Furlong
d28494ac20
recognize device status report codes
2018-01-28 15:11:07 -08:00
Wez Furlong
b696aae51f
vim truecolor mode uses kde style rgb sgr
2018-01-28 14:55:28 -08:00
Wez Furlong
a0cc6822ef
add support for recognizing some decset modes
...
We don't do anything about those modes yet.
2018-01-28 14:51:00 -08:00
Wez Furlong
5816928a25
Add support for Erase In Display
2018-01-28 14:12:56 -08:00
Wez Furlong
39a5b5ef0d
add some comments about CSIParser
2018-01-28 14:03:57 -08:00
Wez Furlong
d48bc62a18
move all the current CSI parsing into the CSIParser
2018-01-28 13:53:18 -08:00
Wez Furlong
12a839c4ac
Adopt slice patterns for parsing CSI
2018-01-28 13:36:17 -08:00
Wez Furlong
2eefee4412
move csi parsing to its own file
2018-01-28 11:35:36 -08:00