From: kaiquekandykoga Date: 2022-09-18T22:20:26+00:00 Subject: [ruby-core:109953] [Ruby master Feature#19010] Follow up of #18996: Support changing irb's autocompletion background Issue #19010 has been updated by kaiquekandykoga (Ka��que Koga). I agree and support your arguments. Thank you for the detailed explanation and the reline's reference. ---------------------------------------- Feature #19010: Follow up of #18996: Support changing irb's autocompletion background https://bugs.ruby-lang.org/issues/19010#change-99203 * Author: st0012 (Stan Lo) * Status: Open * Priority: Normal ---------------------------------------- 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: #### TL;DR - Have `dark`/`bright` themes in `irb` - Use `dark` theme by default because a bright dropdown in dark background is more uncomfortable to read than a dark dropdown in bright background. - `irb` will pass per-colour configuration to `reline` too. So users can still configure individual colours if they want to. ### 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/bright) for users to choose: **Theme`:dark`** Bright terminal - dark theme Dark terminal - dark theme **Theme `:bright`** Bright terminal - bright theme Dark terminal - bright theme **Default** In terms of default, I think `dark` is better than `bright`. Because when in a bright terminal, seeing a dark dropdown isn't so troubling. But when in a dark terminal, seeing a large bright 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/bright, 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_BRIGHT_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: