Subject: Feature request: defcustom inherit type

From: Devin Homan <[email-masked]>
Date: Fri, 27 Sep 2013 22:20:03 -0800

I think that it would be useful for client code to be able to create defcustom variables that
inherit their type properties from another defcustom variable so that changes in the provided code
are reflected in the client.  This would allow client code to create defcustom's that are used as
temporary, dynamic bindings that the user can customize without having to worry about additions to
the accepted types in the provided code.

For example, in the provided source there is:

(defcustom foo-bar "A" "Doc." :group foo :type '(string))

(defun foo-smash () "Doc." (message "%s" foo-bar))

(provide 'foo)

then the client code can have:

(require 'foo)

(defcustom cat-thing1 "B" "Doc." :group cat :type '(inherit foo-bar))

(defcustom cat-thing2 "C" "Doc." :group cat :type '(inherit foo-bar))

(let ((foo-bar cat-thing1)) (foo-smash))

(let ((foo-bar cat-thing2)) (foo-smash))

So if the maintainer of 'foo' decides to add an additional type, such as integer, then that change
will automatically be shown in 'cat'.