Idea: Simplification of user options
A few user options have grown to become quite complex, with a lot of repetition. Take
modus-themes-mode-line for example, you have 3d/moody, borderless, and accented. Every time a new option is added, the number of legal values is multiplied.
I would like to propose converting user options like these from the cross-product of options, into sets of attributes. Last year, I suggested something along these lines for mu4e, which in the previous example would simplify the type down to
'(set :greedy t (choice (const :tag "No box effects, which are optimal for use with the `moody' library" moody) (const :tag "Three-dimensional style for the active mode line" 3d)) (const :tag "With colored background" borderless) (const :tag "With colored background" accented))
I set this specific variable to
'accented-3d, which would then become
I have not implemented any code yet, as I wanted to hear what you think about the suggestion. This would probably also require some transitional code, to convert old values to sets, so there would be a short-term increase in code and complexity, but the hope would be better long-term flexibility.