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