Subject: Re: bug#40759: 26.3; Update Leuven-theme in Emacs dev trunk

From: Eli Zaretskii <[email-masked]>
Date: Sat, 25 Apr 2020 11:49:50 +0300

> Date: Fri, 24 Apr 2020 14:09:56 +0200
> From: Fab Rice <[email-masked]>
> Cc: Serghei <[email-masked]>, [email-masked], [email-masked],
>  [email-masked]
> 
> +(defgroup leuven nil
> +  "Leuven theme options.
> +The theme has to be reloaded after changing anything in this group."
> +  :group 'faces)
> +
> +(defcustom leuven-scale-outline-headlines t
> +  "Scale `outline' (and `org') level-1 headlines.
> +This can be nil for unscaled, t for using the theme default, or a scaling
> +number."
> +  :type '(choice
> +          (const :tag "Unscaled" nil)
> +          (const :tag "Default provided by theme" t)
> +          (number :tag "Set scaling"))
> +  :group 'leuven)
> +
> +(defcustom leuven-scale-org-agenda-structure t
> +  "Scale Org agenda structure lines, like dates.
> +This can be nil for unscaled, t for using the theme default, or a scaling
> +number."
> +  :type '(choice
> +          (const :tag "Unscaled" nil)
> +          (const :tag "Default provided by theme" t)
> +          (number :tag "Set scaling")))

We don't have defcustom's in any other theme I see in etc/themes/.
Does 'disable-theme' know how to undo the defcustom's, i.e. makunbound
them so that they are no longer in the name-space? should it?  If so,
I think we should add such a feature, and only after that we will be
able to accept themes that define new user options.

> +(defun leuven-scale-font (control default-height)
> +  "Function for splicing optional font heights into face descriptions.
> +CONTROL can be a number, nil, or t.  When t, use DEFAULT-HEIGHT."
> +  (cond
> +   ((numberp control) (list :height control))
> +   ((eq t control) (list :height default-height))
> +   (t nil)))

Likewise with functions: should 'disable-theme' fmakunbound them?