1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-29 16:42:13 +03:00
Commit Graph

369 Commits

Author SHA1 Message Date
Wez Furlong
db08b8c1dc add window:set_config_overrides lua method
This commit expands on the prior commits to introduce the concept
of per-window configuration overrides.

Each TermWindow maintains json compatible object value holding
a map of config key -> config value overrides.

When the window notices that the config has changed, the config
file is loaded, the CLI overrides (if any) are applied, and then
finally the per-window overrides, before attempting to coerce
the resultant lua value into a Config object.

This mechanism has some important constraints:

* Only data can be assigned to the overrides.  Closures or special
  lua userdata object handles are not permitted.  This is because
  the lifetime of those objects is tied to the lua context in which
  they were parsed, which doesn't really exist in the context of
  the window.
* Only simple keys are supported for the per-window overrides.
  That means that trying to override a very specific field of
  a deeply structured value (eg: something like `font_rules[1].italic = false`
  isn't able to be expressed in this scheme.  Instead, you would
  need to assign the entire `font_rules` key.  I don't anticipate
  this being a common desire at this time; if more advance manipulations
  are required, then I have some thoughts on an event where arbitrary
  lua modifications can be applied.

The implementation details are fairly straight-forward, but in testing
the two examplary use cases I noticed that some hangovers from
supporting overrides for a couple of font related options meant that the
window-specific config wasn't being honored.  I've removed the code that
handled those overrides in favor of the newer more general CLI option
override support, and threaded the config through to the font code.

closes: #469
closes: #329
2021-02-27 14:53:19 -08:00
Wez Furlong
60be1a98a0 lua: add window::effective_config() method
Expose the current window configuration to lua scripts.

refs: https://github.com/wez/wezterm/issues/469
2021-02-27 12:39:22 -08:00
Wez Furlong
2d02df5f38 add --config name=value CLI options
`wezterm`, `wezterm-gui` and `wezterm-mux-server` now all support
a new `--config name=value` CLI option that can be specified
multiple times to supply config overrides.

Since there isn't a simple, direct way to update arbitrary fields
of a struct in Rust (there's no runtime reflection), we do this
work in lua.

The config file returns a config table. Before that is mapped
to the Rust Config type, we have a new phase that takes each
of the `--config` values and applies it to the config table.

For example, you can think of configuration as working like this
if wezterm is started as `wezterm --config foo="bar"`:

```lua
config = load_config_file();
config.foo = "bar";
return config;
```

The `--config name=value` option is split into `name` and `value`
parts.  The name part is literally concatenated with `config` in
the generated lua code, so the name MUST be valid in that context.
The `value` portion is literally inserted verbatim as the rvalue in the
assignment.  Not quoting or other processing is done, which means
that you can (and must!) use the same form that you would use in
the config file for the RHS.  Strings must be quoted.  This allows
you to use more complicated expressions on the right hand side,
such as:

```
wezterm --config 'font=wezterm.font("Fira Code")'
```

The overrides stick for the lifetime of the process; even if
you change the config file and reload, then the value specified
by the override will take precedence.

refs: https://github.com/wez/wezterm/issues/469
refs: https://github.com/wez/wezterm/issues/499
2021-02-27 10:53:45 -08:00
Wez Furlong
823213703c mux: introduce can_close_without_prompting concept to model
This is defined as a trait method on Pane (default: false), and has the
obvious transitive equivalent methods in Tab and Window (eg: if all
contained items are `can_close_without_prompting`, then that container
is also `can_close_without_prompting`).

The intent is to avoid bothering the user to confirm closing a window
when the content is not stateful and doesn't warrant it.

For example: the window that is displayed in the event of a
configuration error really shouldn't prompt to the user to confirm
closing it.

All termwiztermtab panes are `can_close_without_prompting==true`
to effect this policy.

In the future, we could teach LocalPane to lookup the session leader
process against a list of "uninteresting" or "stateless" processes
and return an appropriate result (as suggested in
https://github.com/wez/wezterm/issues/280).  That functionality
is NOT part of this commit.
2021-02-27 09:03:13 -08:00
Wez Furlong
02828c708a docs: fix a typo, expand exit_behavior example 2021-02-27 00:24:23 -08:00
Wez Furlong
697a6abd04 add exit_behavior config option
`exit_behavior = "Hold"` will keep the pane alive until explicitly
closed.  More details in the docs that are part of this commit.

refs: https://github.com/wez/wezterm/issues/499
2021-02-27 00:15:51 -08:00
Wez Furlong
38e6a1bc4c window: fix ToggleFullScreen on Windows
closes: https://github.com/wez/wezterm/issues/177
2021-02-26 19:39:35 -08:00
Wez Furlong
39f7332378 changelog: add a couple of items (OSC52, ANGLE in .zip) 2021-02-25 22:31:04 -08:00
Wez Furlong
2dee60587f changelog entry for #475
refs: https://github.com/wez/wezterm/issues/475
2021-02-25 22:25:27 -08:00
Wez Furlong
35060fb2de Revert "ci: disable mdbook-linkcheck"
This reverts commit bef0fa29ac and
bb2d45d0aa.

refs: https://github.com/Michael-F-Bryan/mdbook-linkcheck/issues/53
2021-02-24 09:28:00 -08:00
Wez Furlong
036c48d76c docs: note about OSC 9 and OSC 777 toast notification support
refs: #489
2021-02-23 09:18:23 -08:00
Wez Furlong
7cecbd50dd docs: add some credits for a couple of issues
refs: #481, #490, #465
2021-02-23 09:01:42 -08:00
Wez Furlong
181ed704c9 docs for freetype_load_target and deprecation of font_antialias
refs: #491
2021-02-23 08:49:46 -08:00
Wez Furlong
9eb85e9cbc docs: link Nop -> DisableDefaultAssignment 2021-02-23 08:13:25 -08:00
Wez Furlong
bef0fa29ac ci: disable mdbook-linkcheck
It no longer builds, and switching to an older version produces
errors :-(

refs: https://github.com/Michael-F-Bryan/mdbook-linkcheck/issues/53
2021-02-23 08:10:38 -08:00
Wez Furlong
c964b69b1d Add ScrollByLine key assignment
refs: #497
2021-02-23 08:02:07 -08:00
Wez Furlong
7a16e71e07 Add ResetFontAndWindowSize key assignment
closes: https://github.com/wez/wezterm/issues/480
2021-02-20 21:50:20 -08:00
Wez Furlong
528a4846c7 docs: changelog and improve the foreground_text_hsb docs
refs: #491
2021-02-20 11:36:04 -08:00
Wez Furlong
39b5a21107 docs: document foreground_text_hsb
It even has screen shots!

refs: #491
2021-02-20 11:24:10 -08:00
Wez Furlong
088d8e5455 docs: note about config being a "pure function"
closes: #477
2021-02-20 10:53:29 -08:00
Wez Furlong
58fde836c3 docs: document various missing things
refs: https://github.com/wez/wezterm/issues/63
refs: https://github.com/wez/wezterm/issues/461
2021-02-20 10:40:26 -08:00
Wez Furlong
fd29ed09c4 docs: fix link to ClearScrollback 2021-02-20 08:44:39 -08:00
Wez Furlong
6c1c5f8714 docs: move mouse binding to its own page 2021-02-20 08:38:46 -08:00
Wez Furlong
c13b592d55 docs: changelog for #470
closes: #470
2021-02-16 20:24:09 -08:00
Wez Furlong
b4ded64e14 wayland: fix an issue with key repeat potentially hanging/spinning 2021-02-13 19:47:06 -08:00
Wez Furlong
f697de82fc wayland: fix initial window decoration, toggle full screen
This fixes a longstanding issue under mutter where client side
decorations are in use.  The decorations were being drawn too
early in the initialization of the window which could leave them
off-screen and weird.  This was masked by a couple of mutter
related bugs with client side decorations.

With these changes I now get sane decorations under mutter,
and the toggle fullscreen action is now enabled as well!

closes: #224
2021-02-13 11:02:04 -08:00
Wez Furlong
894d056947 wayland: allow matching raw modifiers for raw:123 key bindings 2021-02-13 09:11:55 -08:00
Wez Furlong
7b86a84bc3 window: avoid invalidating on mouse move
We weren't didn't treat the "No existing hyperlink, No new hyperlink"
case as no change in hyperlink, and were invalidating the window on
every mouse except for those over text with a hyperlink.
2021-02-13 08:49:09 -08:00
Wez Furlong
475260d3e3 Update bundled JetBrainsMono font to 2.225
refs: #452
2021-02-11 23:56:07 -08:00
Wez Furlong
6fbc54b93d docs: break out allow_square_glyphs_to_overflow_width separately
move this to is own file in the docs

refs: #462
2021-02-11 23:35:09 -08:00
Wez Furlong
ece9276624 term: large pastes could hang the terminal
Pasting a lot of text could cause a deadlock between writing
to the input side of the pty and consuming the output side.

Making the writer/input side non-blocking resolves this.
2021-02-11 23:32:19 -08:00
Wez Furlong
561feaa710 Update docs/config/lua/config/show_update_window.md
Co-authored-by: Muhammed Zakir <8190126+MuhammedZakir@users.noreply.github.com>
2021-02-11 23:32:07 -08:00
Benoit de Chezelles
2a5118f002 docs: Extract check_for_updates* & show_update_window from misc 2021-02-11 23:32:07 -08:00
Benoit de Chezelles
9298c0e450 doc: Update scroll_to_bottom_on_input description 2021-02-11 23:32:07 -08:00
Benoit de Chezelles
a54c6b2dfd Extract some added options doc to individual files 2021-02-11 23:32:07 -08:00
Benoit de Chezelles
6e58681f7e Add missing doc for selection_word_boundary 2021-02-11 23:32:07 -08:00
Benoit de Chezelles
4762d80c81 Add missing doc for scroll_to_bottom_on_input 2021-02-11 23:32:07 -08:00
Benoit de Chezelles
2da019877e Add missing doc for show_update_window 2021-02-11 23:32:07 -08:00
Benoit de Chezelles
e599c08fd3 Add missing doc for allow_square_glyphs_to_overflow_width 2021-02-11 23:32:07 -08:00
Benoit de Chezelles
dca9fa4ae0 Add missing doc for check_for_updates{,_interval_seconds} 2021-02-11 23:32:07 -08:00
Benoit de Chezelles
f47c736e42 Add missing doc for automatically_reload_config 2021-02-11 23:32:07 -08:00
Muhammed Zakir
fd480da550 Fix typo
"will will" -> "you will"
2021-02-11 21:42:18 -08:00
Benoit de Chezelles
adc454ec90 Add missing dots 2021-02-07 18:57:06 -08:00
Benoit de Chezelles
94d0a4d8b7 document Ctrl-u in search mode 2021-02-07 18:57:06 -08:00
Wez Furlong
04bbfb4760 docs: changelog and a little extra info about --config-file
refs: 459
2021-02-07 09:31:41 -08:00
Wez Furlong
70cb992924 config: improve font_rule synthesis
This should help to avoid frustration for minor config issues.

closes: https://github.com/wez/wezterm/issues/456
2021-02-06 08:23:22 -08:00
Benoit de Chezelles
34ccb66464
Update ClearScrollback default value (#458) 2021-02-05 13:10:08 -08:00
Wez Furlong
aa75dda157 docs: note 413 in the changelog
refs: https://github.com/wez/wezterm/issues/413
2021-02-04 08:42:54 -08:00
Wez Furlong
8ee11484b9 update for rename of master branch -> main 2021-02-03 21:34:12 -08:00
Wez Furlong
a034730373 docs: clarify about M1 binary for macos 2021-02-03 11:24:41 -08:00