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 '(accented 3d)
.
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.