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

6277 Commits

Author SHA1 Message Date
Wez Furlong
a808b0645d cargo update 2022-07-31 20:14:19 -07:00
Wez Furlong
b72ff966a1 fix typo 2022-07-31 17:58:41 -07:00
Wez Furlong
0d51a9c444 Add cursor and pane position info to wezterm cli list data
This is included only in the json output mode.

Note that this does not and cannot include positioning information known
only to the GUI, as there may not be a GUI. That means that window
position, tab bar and padding data are not known and not able to be
returned via this interface.

```
; wezterm cli list --format json
[
  {
    "window_id": 0,
    "tab_id": 0,
    "pane_id": 0,
    "workspace": "default",
    "size": {
      "rows": 24,
      "cols": 80,
      "pixel_width": 1040,
      "pixel_height": 672,
      "dpi": 124
    },
    "title": "wezterm cli list --format json -- wez@foo:~",
    "cwd": "file://foo/home/wez/",
    "cursor_x": 0,
    "cursor_y": 2,
    "cursor_shape": "Default",
    "cursor_visibility": "Visible",
    "left_col": 0,
    "top_row": 0
  }
]
```

refs: #2319
2022-07-31 12:01:34 -07:00
Wez Furlong
aed0e3ebf8 populate pixel dims + dpi in PaneEntry
This makes those fields usable in `wezterm cli list --format json`.

This doesn't change the ABI of the mux protocol, but prior to
this commit, those fields were always 0.

refs: #2319
2022-07-31 11:25:39 -07:00
Wez Furlong
7dda063c27 update harfbuzz to 5.1.0 2022-07-31 10:53:25 -07:00
Wez Furlong
4485b2966f mouse bindings: remove WheelUp/Down aliases
They prevented using other types of mouse events!

We don't have a good way to specify that kind of alias, so for now,
take it out and replace the examples in the docs with the more verbose
equivalents.

refs: #2173
refs: #2296
2022-07-31 09:33:42 -07:00
Wez Furlong
bd846975fa allow wheel events with no mods. allow mouse events in mouse reporting mode
Adjusts how mouse events are matched so that we can now indicate whether
mouse reporting and alt-screen should be considered as part of the event
trigger criteria.

refs: #2173
refs: #581
2022-07-31 09:15:02 -07:00
Wez Furlong
3db7e72e54 docs: format 2022-07-31 09:11:51 -07:00
Funami580
9346a07d84 docs: add window:current_event() and add scroll events to mouse docs 2022-07-31 07:10:56 -07:00
Funami580
cf423dc614 lua: WheelUp and WheelDown support for mouse_bindings 2022-07-31 07:10:56 -07:00
Bruno Roque
ae2e78d87c
Document CopyMode/QuickSelect Colors (#2324)
* Document CopyMode/QuickSelect colors

* Remove irrelevant line

* Update docs/config/appearance.md

Co-authored-by: Wez Furlong <wez@wezfurlong.org>

* Update docs/config/appearance.md

Co-authored-by: Wez Furlong <wez@wezfurlong.org>

* Add note on copy_mode_active_highlight_*/selection_*

Co-authored-by: Wez Furlong <wez@wezfurlong.org>
2022-07-29 18:00:03 -07:00
Bruno Roque
5a0935626c Update rust by example url 2022-07-29 13:18:53 -07:00
Wez Furlong
b1c60ba258 termwiz: add test cases for parse_first_as_vec w/ OSC+ST
refs: https://github.com/markbt/streampager/issues/57
2022-07-29 06:40:26 -07:00
Wez Furlong
10121790df copy mode: pressing v while in v mode toggles off v mode. Add yank.
refs: https://github.com/wez/wezterm/discussions/2246
refs: https://github.com/wez/wezterm/issues/993#issuecomment-1118512595
2022-07-29 05:00:35 -07:00
Wez Furlong
7e3b35303c gui: allow specifying colors for copy mode and quickselect
refs: https://github.com/wez/wezterm/issues/2320

```lua
return {
  colors = {
    copy_mode_active_highlight_fg={Color="red"},
    copy_mode_active_highlight_bg={Color="blue"},
    copy_mode_inactive_highlight_fg={AnsiColor="Black"},
    copy_mode_inactive_highlight_bg={AnsiColor="White"},
    quick_select_label_fg={Color="white"},
    quick_select_label_bg={Color="blue"},
    quick_select_match_fg={Color="grey"},
    quick_select_match_bg={Color="skyblue"},
  }
}
```
2022-07-28 17:54:07 -07:00
Wez Furlong
718a021817 termwiz: use 6 for the rgba colorspace
`4` is actually defined as CMYK according to ITU-T Rec. T.416:

> A parameter substring for values 38 or 48 may be divided by one or more separators (03/10) into parameter elements,
> denoted as Pe. The format of such a parameter sub-string is indicated as:
>
>     Pe : P ...
>
> Each parameter element consists of zero, one or more bit combinations from 03/00 to 03/09, representing the digits
> 0 to 9. An empty parameter element represents a default value for this parameter element. Empty parameter elements at
> the end of the parameter substring need not be included.
>
> The first parameter element indicates a choice between:
>
> 0    implementation defined (only applicable for the character foreground colour)
> 1    transparent;
> 2    direct colour in RGB space;
> 3    direct colour in CMY space;
> 4    direct colour in CMYK space;
> 5    indexed colour.

refs: 6e9a22e199 (commitcomment-79669016)
2022-07-28 17:09:15 -07:00
Wez Furlong
c7c81e3161 really fix termwiz --all-features build 2022-07-26 22:35:49 -07:00
Wez Furlong
4c30131a6f lua: expose metrics to lua 2022-07-26 22:33:52 -07:00
Wez Furlong
9559404c3c fix termwiz --all-features build 2022-07-26 21:26:20 -07:00
Wez Furlong
742fe5f462 wezterm.format: now supports rgba colors
```
> wezterm.format{{Background={Color="rgba(255,0,0,0.5)"}}, {Text="wat"}}
"\u{1b}[48:4::255:0:0:127mwat\u{1b}[49m"
```
2022-07-26 21:12:12 -07:00
Wez Furlong
6e9a22e199 termwiz: allow setting alpha for SGR fg, bg attributes
This commit extends the sgr color parser to support a wezterm
extension that I just made up:

```
printf "\e[48:4:255:0:0:60mhello\e0m"
```

The `4` is wezterm specific and denotes 4 channel color, in this case
RGBA. red is 255, green is 0, blue is 0 and alpha is 60; the values are
interpreted as u8 values.

CSI 38 (fg), 48 (bg) and 58 (underline) support this.

refs: https://github.com/wez/wezterm/issues/2313
2022-07-26 21:05:18 -07:00
Wez Furlong
bc083ee470 termwiz: ColorSpec now allows for alpha to be tracked
This doesn't really change any behavior, but adjusts the types
such that CSIs that set colors have the potential to track the
alpha channel and that can make it through to the GUI/render layer.
2022-07-26 19:39:53 -07:00
Wez Furlong
cb89f2c36e allow setting alpha for OSC 10, 11, 12
refs: https://github.com/wez/wezterm/issues/2313
2022-07-26 19:02:47 -07:00
Wez Furlong
858bc3ccce term: avoid panic in phys_row when row is out of range
Just clamp it to the current physical, non-scrollback portion
of the screen.

This avoids a panic but doesn't address the screen size mismatch
in the associated issue.

refs: https://github.com/wez/wezterm/issues/2133
2022-07-26 09:40:44 -07:00
Wez Furlong
e7c7ea20f6 deps: harfbuzz -> 5.0.1 2022-07-26 09:09:46 -07:00
Wez Furlong
1d64071609 tabs: revise active index after killing panes
refs: #2304
2022-07-26 08:25:31 -07:00
Wez Furlong
2e0467d121 deps: zstd 0.6 -> 0.11 2022-07-25 21:29:43 -07:00
Wez Furlong
a25a87c393 docs: fix typo in changelog 2022-07-25 21:15:31 -07:00
Wez Furlong
5e6ce47330 fix "no pane" tab hang when two panes close at once
There was a race condition where we could leave the tab
active index pointing to the wrong pane.

That meant that the tab information computed by the gui
layer would see no panes marked as active, and thus would
end up with no active tab.

This commit fixes that by clamping the active index to
the number of panes.

refs: https://github.com/wez/wezterm/issues/2304
2022-07-25 21:06:24 -07:00
Wez Furlong
39adbb984d Pane::search: expose range, limit. Limit quickselect by default
The recent work on the scrollback made it easier to constrain the
search region, so expose those parameters to the Pane::search
interface and to the mux protocol.

Use those new parameters to constrain quickselect search to
1000 rows above and below the current viewport by default, and
add a new parameter to QuickSelectArgs that allows overriding that
range.

A follow-up commit could make the search/copy overlay issue a series
of searches in chunks so that it avoids blocking the UI when
searching very large scrollback.

refs: https://github.com/wez/wezterm/pull/1317
2022-07-25 18:31:27 -07:00
Wez Furlong
360b3f3479 ci: try uploading sha256 files alongside release assets
refs: #2114
2022-07-25 08:39:24 -07:00
Wez Furlong
23f36b2afb json: fix visited hash set
We were skipping scalars/primitive values, which wasn't the intent.

refs: https://github.com/wez/wezterm/issues/2302
2022-07-25 07:25:41 -07:00
Wez Furlong
c32db29474 termwiz: refactor: split line into sub-modules 2022-07-25 07:20:59 -07:00
Wez Furlong
d3ef36dd5f docs: changelog for https://github.com/wez/wezterm/issues/2162 2022-07-24 22:59:05 -07:00
Wez Furlong
4bf89e0c10 term: fixup cursor position during rewrap
refs: https://github.com/wez/wezterm/issues/2162
2022-07-24 22:55:46 -07:00
Wez Furlong
8eb44b43b3 cargo update 2022-07-24 17:15:59 -07:00
Wez Furlong
5831bd7c8d search: fix coordinates for matches at EOL
The returned coords didn't include the last cell on the line;
adjust the fallback case to generate an exclusive rather than
inclusive end coordinate.
2022-07-24 16:56:19 -07:00
Wez Furlong
ec46aba089 mux: prefer compressed Lines when syncing 2022-07-24 16:15:47 -07:00
Wez Furlong
9deed0b8b4 Line::wrap now prefers cluster storage
Want to avoid inflating scrollback when the window is resized
2022-07-24 16:05:42 -07:00
Wez Furlong
a897924e26 docs: changelog for scrollback/search improvements
refs: https://github.com/wez/wezterm/issues/1569
refs: https://github.com/wez/wezterm/issues/1626
2022-07-24 13:39:36 -07:00
Wez Furlong
dd6d2e1971 search: debounce searches by ~350ms
In order to avoid searching for "c", "ca", "cat" when typing "cat",
this commit introduces a hard-coded 350ms debounce.

refs: https://github.com/wez/wezterm/issues/1569
2022-07-24 13:30:08 -07:00
Wez Furlong
6d61ceac47 search: fix incorrect highlight in search results
If you typed "cat" in the search, the chances are that wezterm
would kick off a search for "c" before you finished typing,
then "ca" and then finally "cat".

There was a race:

clear by_line highlights,
queue search for "c"
clear by_line highlights,
queue search for "ca"
clear by_line highlights,
queue search for "cat"
accumulate highlights for "c" into by_line
accumulate highlights for "ca" into by_line
accumulate highlights for "cat" into by_line

so the final result was a superposition of all of those results,
which was weird!

The fix is simple: clear by_line when we get the results of
an async search.
2022-07-24 13:15:09 -07:00
Wez Furlong
ff954ec196 search: improve coordinates for new search implementation
We weren't using the correct grapheme width. Feed through the original
line so that we have the correct information.
2022-07-24 13:11:14 -07:00
Wez Furlong
14f0162688 rangeset: fix accidentally quadratic complexity
When adding sparse ranges the cartesian product of range combinations
was explored to find intersections, which is pretty awful if there
are 1 million entries to be inserted.

This commit employs binary search to reduce the complexity, at
the expense of requiring that the internal range array is sorted.
2022-07-24 12:48:02 -07:00
Wez Furlong
565b03b1c5 localpane: revise search method implementation
Avoids allocating strings for the non-wrapped line case,
has bounded memory usage compared to prior implementation.
2022-07-24 11:38:06 -07:00
Wez Furlong
dec5ca0349 term: refactor getting logical lines
This will make it easier to refactor search in a subsequent commit
2022-07-24 10:57:05 -07:00
Wez Furlong
c722db22d6 term/termwiz: microoptimize set cell
If we can avoid constructing a Cell then do so
2022-07-24 09:14:44 -07:00
Wez Furlong
e8dfb553b4 termwiz: microoptimize ClusteredLine::set_last_cell_was_wrapped
Cache the last cell width so that we can avoid iterating the whole
line cell-wise to compute it for time cat bigfile.
2022-07-24 08:36:04 -07:00
Wez Furlong
656f725623 termwiz: micro-optimize ClusteredLine::new(), set_last_wrapped 2022-07-24 08:18:23 -07:00
Wez Furlong
c2dfba27f3 termwiz: don't claim that visible_cells is double-ended
It's not; there's important state that only works in forward iteration.
2022-07-24 08:11:11 -07:00