From: "st0012 (Stan Lo)" Date: 2022-09-18T21:30:26+00:00 Subject: [ruby-core:109952] [Ruby master Bug#19010] Follow up of #18996: Support changing irb's autocompletion background 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`** Light terminal - dark theme Dark terminal - dark theme **Theme `:light`** Light terminal - light theme Dark terminal - light theme **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: