1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-01 00:35:46 +03:00
Commit Graph

2049 Commits

Author SHA1 Message Date
Wez Furlong
94b78a47c8 mux: workaround a spurious panic notification with ssh connections
The issue is that when we start the proxy mode up, we haven't set
up a frontend, and the ssh client wants to kick off a non-essential
task via the executor.

This commit starts up a null frontend in proxy mode so that that
machinery is present.

Then, because we don't register any tabs with the mux, we need to
adjust the behavior of the null frontend to not terminate when
the mux has no tabs.

It's a little gross.
2020-01-05 14:37:17 -08:00
Wez Furlong
624c7234e4 Improve serializing hyperlinks in lines for the mux
This is both a little more efficient on the wire and results in
hovering over hyperlinks working as you would expect in the mux.
2020-01-05 14:37:17 -08:00
Wez Furlong
dfa2b08c72 move URL highlight processing to the gui layer 2020-01-05 14:37:17 -08:00
Wez Furlong
ad91742439 refine log levels of some debug logs 2020-01-05 14:37:17 -08:00
Wez Furlong
cd2b57cc51 use rangeset to streamline line fetches 2020-01-05 14:37:17 -08:00
Wez Furlong
01f3adc2cb remove more old surface sync code, improve fetch quality
Still not perfect and still iterating
2020-01-05 14:37:17 -08:00
Wez Furlong
d79455c2b4 switch most of the rest of the mux over to the new model
This mostly works, but has a cache invalidation issue wrt.
passing invalidated rows from the server to the client...
sometimes.

However, scrollback is cached on demand and selection works.
2020-01-05 14:37:17 -08:00
Wez Furlong
66b8b774f5 partially connect new data to mux rpc layer 2020-01-05 14:37:17 -08:00
Wez Furlong
60e05dbe95 add RangeSet type
The idea is to use this to maintain a set of dirty StableRowIndex
values for the mux rpc.
2020-01-05 14:37:17 -08:00
Wez Furlong
400c8aa66d remove explicit dirty manipulation from Renderable
This commit leaves mux domains broken for the moment,
but also simplifes the implementation of the renderable interface.
2020-01-05 14:37:17 -08:00
Wez Furlong
ed97a56055 remove viewport control from renderable trait
This is now handled 100% by the gui layer
2020-01-05 14:37:17 -08:00
Wez Furlong
d8701dc771 instrument executor spawn delay 2020-01-05 14:37:17 -08:00
Wez Furlong
bc24399f06 instrument rpc size distribution 2020-01-05 14:37:17 -08:00
Wez Furlong
cb9e0f9c59 tabout: correctly handle unicode width
This commit fixes this:

```
STAT                  p50      p75       p95
Key(gui.paint.opengl) 30.15ms  32.37ms   59.51ms
Key(shape.harfbuzz)   68.10µs 290.82µs 307.20µs
```

so that it renders like this:

```
STAT                  p50      p75      p95
Key(gui.paint.opengl) 5.28ms   28.97ms  89.65ms
Key(shape.harfbuzz)   210.94µs 288.77µs 395.26µs
```
2020-01-05 14:37:17 -08:00
Wez Furlong
43dd7dd03b add harfbuzz shaping stats 2020-01-05 14:37:17 -08:00
Wez Furlong
4f5441deb6 make the stats output a bit prettier 2020-01-05 14:37:17 -08:00
Wez Furlong
e4fed76bd1 instrument painting and rpc calls 2020-01-05 14:37:17 -08:00
Wez Furlong
4270d144d4 Add GetLines rpc 2020-01-05 14:37:17 -08:00
Wez Furlong
f17feb305b remove highlight and mouse response bits from the rpc 2020-01-05 14:37:17 -08:00
Wez Furlong
0a1a44eef0 pass mouse grabbed state over remote tabs
This allows local double click selection to work outside vim
and for mouse reporting to work inside vim.
2020-01-05 14:37:17 -08:00
Wez Furlong
c5a8531a91 fix mouse cursor after changing the selection logic
We weren't setting the cursor to an I-beam
2020-01-05 14:37:17 -08:00
Wez Furlong
1b925b593a fix reported scrollback size for surface based tabs 2020-01-05 14:37:17 -08:00
Wez Furlong
bcf3d8db35 remove some dead code 2020-01-05 14:37:17 -08:00
Wez Furlong
6db31d5f64 implement triple click selection 2020-01-05 14:37:17 -08:00
Wez Furlong
fac3c3c719 implement double click word selection 2020-01-05 14:37:17 -08:00
Wez Furlong
02ab0f1c3e Implement select and copy 2020-01-05 14:37:17 -08:00
Wez Furlong
5a605ea5c5 render selection locally
This enables drag to select and rendering of the selection.

Actually copying it is still TODO, as is double and triple click
handling.
2020-01-05 14:37:17 -08:00
Wez Furlong
55e4050aa3 use LastMouseClick for paste click counting 2020-01-05 14:37:17 -08:00
Wez Furlong
17b2c49c68 rearrange more mouse event code 2020-01-05 14:37:17 -08:00
Wez Furlong
48d971c106 pull click counting code up from terminalstate 2020-01-05 14:37:17 -08:00
Wez Furlong
f1089e84bf Middle button always pastes if shift is held 2020-01-05 14:37:17 -08:00
Wez Furlong
fa9f699d46 rearrange mouse coordinate math
Move it up so that we can reference it in a later diff
2020-01-05 14:37:17 -08:00
Wez Furlong
a8bf11a825 add Selection types to the gui layer
These are still unused

refs: https://github.com/wez/wezterm/issues/106
2020-01-05 14:37:17 -08:00
Wez Furlong
4912e83f3e StableCursorPosition to track the cursor
This fixes up the cursor position when scrolling.

refs: https://github.com/wez/wezterm/issues/106
2020-01-05 14:37:17 -08:00
Wez Furlong
12b537d2c8 serde_derive -> serde with derive feature 2020-01-05 14:37:17 -08:00
Wez Furlong
1c716898e7 Remove viewport_offset from RenderableDimensions
refs: https://github.com/wez/wezterm/issues/106
2020-01-05 14:37:17 -08:00
Wez Furlong
ef072255dd Process shift+pageup/down at the gui layer
Refs: https://github.com/wez/wezterm/issues/106
2020-01-05 14:37:17 -08:00
Wez Furlong
6183434bda Track viewport in the gui layer
Use StableRowIndex to implement tracking the viewport in the gui layer.
This resolves an issue where a busy terminal would continue to scroll
through the scrollback when you were paging backwards and look weird.

There's still some cleanup though:

- This breaks the selection ui
- the cursor position is wrong when scrolling back
- shift-pageup/pagedown need to be processed in the gui layer

Refs: https://github.com/wez/wezterm/issues/106
2020-01-05 14:37:17 -08:00
Wez Furlong
1b3ced2ab3 Add StableRowIndex concept
This will make it easier to manage both the viewport and the
selection in the gui layer.

refs: https://github.com/wez/wezterm/issues/106
2020-01-05 14:37:17 -08:00
Wez Furlong
a0ad0d0c34 terminalstate: remove middle click paste handling
This is safely performed 100% by the gui layer now.
2020-01-05 14:37:17 -08:00
Wez Furlong
39dc6516df simplify key_event logic a little
Early return and remove some explicit return statements
2020-01-05 14:37:17 -08:00
Wez Furlong
e8d46442ac move mouse wheel scroll handling to gui layer
It's not really moved, but rather duplicated there; we still have
fallback logic in terminalstate.rs that processes the equivalent
action, but adding the logic to the gui layer means that we can
process it in terms of the Tab and Renderable interfaces.

refs: https://github.com/wez/wezterm/issues/106
2020-01-05 14:37:17 -08:00
Wez Furlong
bafa36b8ca simplify middle mouse button paste logic
Now that we can tell whether the mouse is grabbed, we can safely
process the paste in the same way that we use for keyboard initiated
pasting.
2020-01-05 14:37:17 -08:00
Wez Furlong
5f5113ce50 Renderable: fold get_scrollbar_info into get_dimensions 2020-01-05 14:37:17 -08:00
Wez Furlong
5ba0c70cdb add Tab::is_mouse_grabbed concept
refs: https://github.com/wez/wezterm/issues/106
2020-01-05 14:37:17 -08:00
Wez Furlong
f1846ab0ae add Renderable::get_lines
This allows retrieving arbitrary lines from the scrollback

refs: https://github.com/wez/wezterm/issues/106
2020-01-05 14:37:17 -08:00
Wez Furlong
56c170240f Renderable: replace a 2-tuple with an expanded struct
This cleans up the API a little as part of
refs: https://github.com/wez/wezterm/issues/106
2020-01-05 14:37:17 -08:00
Jun Wu
318267c88b Fix negative cursor movement
I noticed moving-up does not work and tracked it down here.
2020-01-05 14:18:08 -08:00
Jun Wu
ef1b836441 Drop unnecessary mut from WindowsTerminalWaker::wake
This matches `UnixTerminalWaker`.
2020-01-04 14:04:56 -08:00
Jun Wu
0ac59cb44c Remove unused dependency
Detected by `cargo-udeps`.

I was wondering why @markbt/streampager requires `jpeg-decoder`.
2020-01-03 22:55:05 -08:00