[#109844] [Ruby master Feature#18996] Proposal: Introduce new APIs to reline for changing dialog UI colours — "st0012 (Stan Lo)" <noreply@...>

Issue #18996 has been reported by st0012 (Stan Lo).

14 messages 2022/09/07

[#109850] [Ruby master Feature#19000] Data: Add "Copy with changes method" [Follow-on to #16122 Data: simple immutable value object] — "RubyBugs (A Nonymous)" <noreply@...>

Issue #19000 has been reported by RubyBugs (A Nonymous).

42 messages 2022/09/08

[#109905] [Ruby master Bug#19005] Ruby interpreter compiled XCode 14 cannot build some native gems on macOS — "stanhu (Stan Hu)" <noreply@...>

Issue #19005 has been reported by stanhu (Stan Hu).

28 messages 2022/09/15

[#109930] [Ruby master Bug#19007] Unicode tables differences from Unicode.org 14.0 data and removed properties since 13.0 — "nobu (Nobuyoshi Nakada)" <noreply@...>

Issue #19007 has been reported by nobu (Nobuyoshi Nakada).

8 messages 2022/09/17

[#109937] [Ruby master Feature#19008] Introduce coverage support for `eval`. — "ioquatix (Samuel Williams)" <noreply@...>

Issue #19008 has been reported by ioquatix (Samuel Williams).

23 messages 2022/09/17

[#109961] [Ruby master Bug#19012] BasicSocket#recv* methods return an empty packet instead of nil on closed connections — "byroot (Jean Boussier)" <noreply@...>

Issue #19012 has been reported by byroot (Jean Boussier).

8 messages 2022/09/20

[#109985] [Ruby master Feature#19015] Language extension by a heredoc — "ko1 (Koichi Sasada)" <noreply@...>

Issue #19015 has been reported by ko1 (Koichi Sasada).

14 messages 2022/09/22

[#109995] [Ruby master Bug#19016] syntax_suggest is not working with Ruby 3.2.0-preview2 — "hsbt (Hiroshi SHIBATA)" <noreply@...>

Issue #19016 has been reported by hsbt (Hiroshi SHIBATA).

9 messages 2022/09/22

[#110097] [Ruby master Feature#19024] Proposal: Import Modules — "shioyama (Chris Salzberg)" <noreply@...>

SXNzdWUgIzE5MDI0IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IHNoaW95YW1hIChDaHJpcyBTYWx6YmVy

27 messages 2022/09/27

[#110119] [Ruby master Bug#19026] Add `Coverage.supported?(x)` to detect support for `eval` coverage flag. — "ioquatix (Samuel Williams)" <noreply@...>

SXNzdWUgIzE5MDI2IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGlvcXVhdGl4IChTYW11ZWwgV2lsbGlh

10 messages 2022/09/28

[#110133] [Ruby master Bug#19028] GCC12 Introduces new warn flags `-Wuse-after-free` — "eightbitraptor (Matthew Valentine-House)" <noreply@...>

SXNzdWUgIzE5MDI4IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGVpZ2h0Yml0cmFwdG9yIChNYXR0aGV3

8 messages 2022/09/28

[#110145] [Ruby master Misc#19030] [ANN] Migrate lists.ruby-lang.org to Google Groups — "hsbt (Hiroshi SHIBATA)" <noreply@...>

SXNzdWUgIzE5MDMwIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGhzYnQgKEhpcm9zaGkgU0hJQkFUQSku

12 messages 2022/09/29

[#110154] [Ruby master Bug#19033] One-liner pattern match as Boolean arg syntax error — "baweaver (Brandon Weaver)" <noreply@...>

SXNzdWUgIzE5MDMzIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGJhd2VhdmVyIChCcmFuZG9uIFdlYXZl

7 messages 2022/09/30

[ruby-core:109952] [Ruby master Bug#19010] Follow up of #18996: Support changing irb's autocompletion background

From: "st0012 (Stan Lo)" <noreply@...>
Date: 2022-09-18 21:30:26 UTC
List: ruby-core #109952
Issue #19010 has been updated by st0012 (Stan Lo).


kaiquekandykoga (Ka鱈que Koga) wrote in #note-1:
> Perhaps keeping the current irb's colors as one alternative

`irb` doesn't have a theme at the moment. The colours we see are `reline`'s default values for the dialog UI. And it's not a complete set of configurations either. `reline` only sets background colours of items, but not the foreground (text) colours. That's why it works for some users but not others (like me), depends on the text colours of their themes.

You can learn more about `reline`'s colour APIs in #18996 

> Some people use other colors than black or white for terminals, like blue for instance, so having a few themes thinking about that can help.

People can have dozens or even hundreds of different background colours, so it's not possible for `irb` to have themes to nicely match them. And it's not the purpose of themes either. It's to provide acceptable colour contrasts to help users read the content.

> About the default color. I like to use autocompletion, but I know that some people dislike having enabled autocompletion by default. So if irb start showing the autocompletion only if a theme is set, there is not need to think about a default color.

I disagree with this. People usually don't look up a tool's features proactively. So if we disabled it, it's likely that most users won't even know about it. And this very helpful feature will end up benefit a lot fewer users than it could have helped.

What we should do instead, is to 

1. Reduce the things that make people dislike it as much as we can (like improving the colours)
2. Make it easy to disable the feature

So even if some users disabled it now, at least they now this feature exists and there are people improving it. It's way better than having most people unaware of it IMO.


----------------------------------------
Bug #19010: Follow up of #18996: Support changing irb's autocompletion background
https://bugs.ruby-lang.org/issues/19010#change-99200

* Author: st0012 (Stan Lo)
* Status: Open
* Priority: Normal
* Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN
----------------------------------------
If the APIs proposed in #18996 (or similar ones) are accepted, we'll be able to configure `irb`'s autocompletion dialog colors.

And for the `irb` side, I want to propose 2 levels of configurations:

### 1. Theme selection

Consider most users don't care about individual colors if the text are readable and roughly match with the terminal background, I want to provide 2 basic themes (dark/light) for users to choose:


**Theme`:dark`**

<img width="40%" alt="Light terminal - dark theme" src="https://user-images.githubusercontent.com/5079556/180603528-8a8b60d1-6a1e-4be8-9c18-5e73cae7a24c.png">

<img width="40%" alt="Dark terminal - dark theme" src="https://user-images.githubusercontent.com/5079556/180603526-3618f181-fff3-45c5-b925-061110366adf.png">

**Theme `:light`**


<img width="40%" alt="Light terminal - light theme" src="https://user-images.githubusercontent.com/5079556/180603529-0d8a24af-3d93-4573-afbd-0d354b3145cc.png">

<img width="40%" alt="Dark terminal - light theme" src="https://user-images.githubusercontent.com/5079556/180603527-4d0fcbf7-fbd5-4099-ac78-9236f8b8c782.png">

**Default**

In terms of default, I think `dark` is better than `light`. Because when in a light terminal, seeing a dark dropdown isn't so troubling. But when in a dark terminal, seeing a large light dropdown can bring discomfort to eyes.

Side note: It's possible to detect the terminal's background color from an xterm-compatible terminal emulator ([example gist](https://gist.github.com/blueyed/c8470c2aad3381c33ea3)), so `irb` may automatically assign themes based on users' terminal theme. But we still need to pick a default as the fallback.

**Interface for theme selection**

If we think it's possible to introduce more themes than just dark/light, we can expose the API as 

```rb
IRB.conf[:DIALOG_THEME] = theme_name
```

If we don't consider introducing other themes, we can make it a toggle for the non-default theme, like 

```rb
IRB.conf[:USE_LIGHT_THEME] = true
```


### 2. Per-color configurations

For users who want to configure individual colors, we should also provide options on the `irb` side, like 

```rb
IRB.conf[:dialog_default_bg_color] = :black
```

This prevents directly exposing `reline`'s API to normal `irb` users.


**I implemented the ideas in this [proof of concept PR](https://github.com/ruby/irb/pull/380).**

---Files--------------------------------
Screenshot_20220918_135231.png (70.8 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread