1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-27 07:18:13 +03:00
Commit Graph

375 Commits

Author SHA1 Message Date
Wez Furlong
8a188cfd74 tweak manifest to point to in-tree termwiz 2018-08-05 08:00:45 -07:00
Wez Furlong
5482323be5 really fix the erase in display issue
We also need an implicit erase in line in the appropriate direction
2018-08-04 23:23:04 -07:00
Wez Furlong
899593745e fix growing bounds for Line::set_cell 2018-08-04 20:18:02 -07:00
Wez Furlong
e0b6fbfb1f fix off-by-one for EraseInDisplay
We were deleting the current row and below rather than the rows below.
This was the cause of lines going blank during `apt upgrade` runs;
the line just above the bottom would get erased instead of scrolling
up.

I found this by running the termwiz widget demo; the top line was being
erased by mistake.
2018-08-04 19:28:18 -07:00
Wez Furlong
6c1f089f13 buffer processing in Performer::print
This helps to accumulate multi-char grapheme sequences into a single
cell.
2018-08-04 19:02:46 -07:00
Wez Furlong
10f0403973 improve encapsulation of Line struct 2018-08-04 18:33:44 -07:00
Wez Furlong
381e572700 relax some of the dep requirements 2018-08-04 15:35:38 -07:00
Wez Furlong
a597a23aef fix cargo fmt 2018-08-04 14:30:34 -07:00
Wez Furlong
e0cc46fe4f log unhandled cursor shape sequence 2018-08-04 12:43:15 -07:00
Wez Furlong
204d741be7 improve display for unhandled csi 2018-08-04 11:59:20 -07:00
Wez Furlong
b7a095ef3f Update to use termwiz hosted on github 2018-08-04 09:46:46 -07:00
Wez Furlong
472d243a33 cut over to termwiz Cell 2018-08-04 09:35:39 -07:00
Wez Furlong
1ec83706e7 use termwiz::Hyperlink 2018-08-04 00:26:24 -07:00
Wez Furlong
f37de9cbe5 use termwiz to replace most of the escape parsing 2018-08-03 22:37:04 -07:00
Wez Furlong
039eadc05f update rustfmt 2018-07-11 08:30:49 -07:00
Wez Furlong
8fae5f56a8 remove dead_code marker from some exported constants 2018-07-11 08:14:09 -07:00
Wez Furlong
8b24d34a74 fix panic for large pastes 2018-04-28 21:54:39 -07:00
Wez Furlong
d73892a4fd update for recent rustfmt changes
No functional changes
2018-04-11 13:15:12 -07:00
Wez Furlong
197819db6d Add basic support for ICH which is used by bash CTRL-R 2018-03-09 22:15:06 -08:00
Wez Furlong
ff5a3179e1 new windows with Cmd-N 2018-03-04 17:17:37 -08:00
Wez Furlong
68bb0e859e Show tab number in title bar when there are tabs 2018-03-04 17:06:06 -08:00
Wez Furlong
c5ce3e2621 Add CMD-[0-9] as shortcut for tab switching 2018-03-04 16:52:40 -08:00
Wez Furlong
edf44c9c48 We can now spawn and switch tabs! 2018-03-04 16:46:14 -08:00
Wez Furlong
816925424a add basic tab related key bindings 2018-03-04 13:31:16 -08:00
Wez Furlong
88473e5a09 move window/tab/fullscreen related to TerminalHost 2018-03-04 09:13:36 -08:00
Wez Furlong
5db84856e9 clippy 2018-03-03 13:27:28 -08:00
Wez Furlong
7b7b7cff46 Add support for OSC 52, clipboard
We only allow setting, not reading, the clipboard.
2018-03-01 00:20:15 -08:00
Wez Furlong
80f114c3ee stubs for a couple of OSC sequences
These do nothing, but at least we don't spew about them.
2018-02-28 23:32:30 -08:00
Wez Furlong
28aafa4a73 Improve printing of unknown OSC 2018-02-28 23:09:00 -08:00
Wez Furlong
f986e0c6d8 Properly check the range intersection for invalidating selection 2018-02-28 22:07:48 -08:00
Wez Furlong
f3149a5bf6 Clear the selection rendering when the cells change
I think this covers it... I need to follow up with some test coverage.

Fixes: https://github.com/wez/wezterm/issues/9
2018-02-28 09:06:51 -08:00
Wez Furlong
9ad9360075 Update tab stops when resizing
The issue here was that we were not updating the tab stops when making
the window larger.  This had the side effect of causing the cursor to
move in unexpected ways when tabbing to the right.

Fixes: https://github.com/wez/wezterm/issues/13
2018-02-28 00:15:54 -08:00
Wez Furlong
a274700cb8 figure out what a couple of sequences used by mc are
But don't do anything to implement them yet
2018-02-27 21:33:02 -08:00
Wez Furlong
9d75a42af6 improve debug output for unhandled csi 2018-02-27 21:21:05 -08:00
Wez Furlong
045abeee42 print ding when the bell is rung
refs: https://github.com/wez/wezterm/issues/3
2018-02-27 20:59:09 -08:00
Wez Furlong
27ab1b65a0 Add support for F-keys
Fixes https://github.com/wez/wezterm/issues/11
2018-02-27 08:01:41 -08:00
Wez Furlong
791d39bb4d Fix 256 color palette
We were skewing to blue before red and that didn't match xterm.

Fixes https://github.com/wez/wezterm/issues/12
2018-02-27 07:26:49 -08:00
Wez Furlong
1e71efa33a remove the clunky answerback thing 2018-02-26 08:43:14 -08:00
Wez Furlong
7b5dbab1a4 Do a better job at BCE when erasing lines
The `dialog` program relies on this.
2018-02-26 08:08:05 -08:00
Wez Furlong
8e9620d001 add CHA support, used by dialog 2018-02-26 07:36:32 -08:00
Wez Furlong
4b92a03c15 remove another debug line 2018-02-26 07:15:16 -08:00
Wez Furlong
b81fb73c37 Really avoid underflow with apt scrolling
I thought I took care of this in 7c0536f9a3,
but I misunderstood how saturating_sub works.  I still need to clamp
it within range.
2018-02-24 20:59:44 -08:00
Wez Furlong
4092796db3 Fix an issue where the background color rendered gray instead of black
When using the default monospace font on ubuntu (typicaly
DejaVuSansMono), the texture atlas would end up the bottom left pixel
being a shade of gray.

Since we were using (0,0) coords for whitespace cells, all whitespace
cells would appear shaded gray.

We now reserve a black pixel in the bottom left of the underline texture
and switch to that for whitespace instead.

I added Debug support to the ColorPalette while tracking this down,
and figured that I might as well keep it.
2018-02-24 17:28:35 -08:00
Wez Furlong
9737646978 fix delete 2018-02-24 15:58:38 -08:00
Wez Furlong
abc06620b8 add support for implicit hyperlinks 2018-02-24 15:43:02 -08:00
Wez Furlong
90dd732aee make selected and cursor text fg/bg configurable
Previously we only allowed changing the cursor bg color, now we
get 4 different color settings for this!
2018-02-23 07:57:52 -08:00
Wez Furlong
d03564aa10 paint after each window input, remember mods for text input
Also need to tweak how we handle ALT-x and CTRL-x as the case of the input
is different with glium vs. xcb
2018-02-22 08:41:51 -08:00
Wez Furlong
a7f2757452 rustfmt update 2018-02-20 22:08:19 -08:00
Wez Furlong
7c0536f9a3 avoid panic if an app sets an invalid scroll region 2018-02-20 08:42:08 -08:00
Wez Furlong
279b2018fd Render cursor and selection for resized lines
If the user enlarges the terminal we can have regions of the vertex
buffer that have colors that default to alpha channel 0.  This is
normally fine but breaks rendering of the cursor and the selection;
those attributes are out of band from the normal cell attributes,
especially for whitespace cells, so we need to handle those in
the degenerate case at the end of a line render.

Refactor the code that computes the cursor and selection colors
so that we can call it and use it in both places.
2018-02-19 21:29:27 -08:00
Wez Furlong
25e2dc2a96 fix an issue with the selection when in scrollback 2018-02-19 16:26:10 -08:00
Wez Furlong
dd238d5b50 add DCH 2018-02-19 15:33:13 -08:00
Wez Furlong
d041b7be0d fix an issue with scrolling within a region 2018-02-19 14:39:07 -08:00
Wez Furlong
37e5d8571a add HVP sequence. Just like CUP. 2018-02-19 14:02:54 -08:00
Wez Furlong
c9eba103d1 Use vecdeque for screen lines
This brings us back in the right perf ballpark
2018-02-19 13:08:47 -08:00
Wez Furlong
58f423eebe fix bounds for scrolling
unfortunately this is super expensive and halves the cat test perf.
2018-02-19 11:26:19 -08:00
Wez Furlong
02846f4c82 use Cell::reset to clear portions of a line 2018-02-19 10:51:34 -08:00
Wez Furlong
a0b4630998 micro opt cursor moving during print 2018-02-19 10:47:49 -08:00
Wez Furlong
aa95eaefd9 micro-opt scroll_up some more 2018-02-19 10:27:28 -08:00
Wez Furlong
48997f02d1 micro optimize cell creation 2018-02-19 09:08:17 -08:00
Wez Furlong
1b989b011d improve scroll_up perf
We were marking the entire scrollback history as dirty on each line
scroll.  This was from the early days and isn't needed any more.
This brings the runtime of:

```
$ find /usr > /tmp/usr-files.txt
$ time cat /tmp/usr-files.txt
```

down from ~2.5s to ~1.2s.

Also avoid a redundant line_mut() call in set_cell().
2018-02-19 08:14:03 -08:00
Wez Furlong
563408df6f micro optimization for scroll_up 2018-02-19 07:55:49 -08:00
Wez Furlong
450ed0e82c don't explode when scrolling back 2018-02-18 23:04:11 -08:00
Wez Furlong
fa0549b76e add some more comments
and back out the get_all flag that was added as a temp workaround
in the earlier stages of adding opengl support.
2018-02-18 17:21:02 -08:00
Wez Furlong
de700e0207 make it very slightly cheaper to enumerate the screen lines 2018-02-17 15:04:48 -08:00
Wez Furlong
b8eb6dbedc make color -> uniform conversion more ergonomic 2018-02-17 08:25:59 -08:00
Wez Furlong
c8a58cac06 we now render useless blocks in the fg color via gl 2018-02-16 23:28:51 -08:00
Wez Furlong
20965e786f start hacking on OpenGL ES2 rendering 2018-02-16 21:44:56 -08:00
Wez Furlong
20f4b21f13 add some more tests 2018-02-12 08:25:31 -08:00
Wez Furlong
28179ff981 check negative value for ECH, too 2018-02-12 08:15:35 -08:00
Wez Furlong
438822d63b add ECH handling 2018-02-12 07:57:22 -08:00
Wez Furlong
09f481e753 avoid ambiguous true color csi SGR sequence 2018-02-12 07:40:35 -08:00
Wez Furlong
ad3524bfc8 run down an off-by-one in VPA handling
This manifested with vim-inside-tmux losing my top tmux status line.

Add a test!
2018-02-11 23:56:42 -08:00
Wez Furlong
0870e6c7e4 tweak comments and error printing around OSC 2018-02-11 22:29:21 -08:00
Wez Furlong
6fb12c3520 add test for reverse index 2018-02-11 21:58:53 -08:00
Wez Furlong
18990a24b4 Basic tab stops 2018-02-11 21:54:18 -08:00
Wez Furlong
4c087d32c1 add NEL sequence and test 2018-02-11 20:56:05 -08:00
Wez Furlong
e6fdd4140b add more tests 2018-02-11 20:46:59 -08:00
Wez Furlong
5e49a79705 fix a selection range issue
When dragging a multi-line selection down and to the left, we were
incorrectly setting the computed column range.

Add a test and fix it.
2018-02-11 18:35:58 -08:00
Wez Furlong
2ee0414b66 avoid panic when dragging onto partial rows/columns 2018-02-11 18:09:48 -08:00
Wez Furlong
d0de936f62 add some tests for a double-width selection bug 2018-02-11 17:56:49 -08:00
Wez Furlong
adc11f303a Add some tests for hyperlink parsing and handling 2018-02-11 13:48:51 -08:00
Wez Furlong
ac339f9258 refactor term tests to make it less repeaty 2018-02-11 13:01:36 -08:00
Wez Furlong
21f0e3fd98 Recognize clicks on hyperlinks
There's plumbing for handling these events in the TerminalHost
trait, but we don't do anything beyond printing them at the moment.
2018-02-11 12:28:37 -08:00
Wez Furlong
b6aa2cffea make hyperlinks show underlined on hover
Adds some plumbing to track the current mouse position and
extract the hyperlink from the cell that is being hovered over.

We render those cells with underline, possibly in a different color.

We don't yet do anything on click.
2018-02-11 12:11:02 -08:00
Wez Furlong
1546c2ef0b avoid constructing a vec in the common answerback code path 2018-02-11 09:44:04 -08:00
Wez Furlong
7ad2468937 hide AnswerBack from the public interface
This felt a bit repeatey and it pre-dated the TerminalHost trait.
I'd like to remove it completely but there are some frustrating and
fiddly lifetime concerns with mutable TerminalHost reference so I'm
hiding it from the public interface and bridging it the answerback
stream into the host at the bottom of the advance_bytes method for
now.
2018-02-11 09:40:02 -08:00
Wez Furlong
5a6ed045ad Render underline and double underline 2018-02-10 21:25:43 -08:00
Wez Furlong
ff34198b8a move terminalstate to its own file 2018-02-10 19:14:16 -08:00
Wez Furlong
2329783082 move Terminal to its own file 2018-02-10 19:10:04 -08:00
Wez Furlong
b967bfe3fd move screen to own file 2018-02-10 19:01:44 -08:00
Wez Furlong
604d1c27d7 move line to its own file 2018-02-10 18:55:43 -08:00
Wez Furlong
ddef4e7f7c move cell types to their own file 2018-02-10 18:49:57 -08:00
Wez Furlong
7e7c622b79 move input types to their own file 2018-02-10 18:41:58 -08:00
Wez Furlong
55ae1fb76a move selection types to their own file 2018-02-10 18:41:40 -08:00
Wez Furlong
68949808ba parse and record hyperlinks as cell attributes 2018-02-10 15:45:45 -08:00
Wez Furlong
1500063c96 Start adding hyperlink support code 2018-02-10 15:12:21 -08:00
Wez Furlong
76fe17b20b Cell is no longer Copy
This will support Cells owning `Rc<>` to things like hyperlink
data or image data.
2018-02-10 09:52:14 -08:00
Wez Furlong
629a12a3a0 address a minor todo re: alt screen 2018-02-10 09:50:33 -08:00
Wez Furlong
6b182ffe52 implement an equivalent to xterm*boldColor
I love my tomato bold!
2018-02-10 08:36:34 -08:00
Wez Furlong
3075e47c89 Allow configuring colors 2018-02-10 08:16:20 -08:00
Wez Furlong
7ab462f2bd fixup alt-KEY to send escape rather than set bits 2018-02-09 16:03:09 -08:00
Wez Furlong
d289906dbc Add double click to select a word 2018-02-09 15:47:41 -08:00
Wez Furlong
a28b5f5390 add triple-click to select a line 2018-02-09 08:19:10 -08:00
Wez Furlong
1619f786a9 Add somewhat primitive text selection for copy/paste 2018-02-08 21:35:26 -08:00
Wez Furlong
edd5911535 Add a small font styling engine
This enables selecting an italic font when the cell is italic,
but has more power beyond just that simple property.

This runs a little hot on the CPU so there's probably some caching and
tweaking that can be done to make the evaluation a bit cheaper.
2018-02-07 09:23:24 -08:00
Wez Furlong
532cf28782 add support for setting the primary selection 2018-02-06 20:40:46 -08:00
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
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
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