[ruby-core:109949] [Ruby master Bug#19010] Follow up of #18996: Support changing irb's autocompletion background
From:
"st0012 (Stan Lo)" <noreply@...>
Date:
2022-09-18 14:18:14 UTC
List:
ruby-core #109949
Issue #19010 has been reported by st0012 (Stan Lo). ---------------------------------------- Bug #19010: Follow up of #18996: Support changing irb's autocompletion background https://bugs.ruby-lang.org/issues/19010 * 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).** -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:[email protected]?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>