>>> I can't find a standard way of doing this. So instead of using eval-and-compile >>> I'll try to recalculate the value explicitly when variables are customized: >>> >>> (when (or (get 'char-fold-include-base 'customized-value) >>> (get 'char-fold-include-alist 'customized-value) >>> (get 'char-fold-exclude-alist 'customized-value)) >>> (setq char-fold-table (char-fold-make-table))) >> >> Instead of looking at symbol property values, which can make for a >> confusing time when setting variables outside of customize, I think it >> would be nicer to do something like this: >> >> (defcustom char-fold-include-base char-fold--include-base-default >> :initialize #'custom-initialize-changed >> :set (lambda (sym val) >> (set-default sym val) >> ;; FIXME: Maybe delay this until after-init-time, >> ;; to avoid redundant calls to char-fold-make-table. > > I tried different possible values of :initialize, > but not custom-initialize-changed. I'll try this now. I see no problems other than redundant calls to char-fold-make-table when more than one variable is customized. char-fold.el is autoloaded when isearch calls char-fold-to-regexp for the first time, so I'm not sure how after-init-hook could help in this case.