Stefan Kangas writes: > --- a/etc/NEWS > +++ b/etc/NEWS > @@ -706,6 +706,10 @@ This file was a compatibility kludge which is no longer needed. > To revert to the previous behavior, > '(setq lisp-indent-function 'lisp-indent-function)' from 'lisp-mode-hook'. > > +** Customize > + > +*** Customize will no longer show obsolete user options. > + Only when customizing a group, it seems. They still show up when using customize-apropos (quite common), customize-saved (for an old setting, it could be somewhat common), or when asking to customize them directly (although that could be less common). I don't know what others think, but perhaps customize-saved should still show them: after all, it is a current user saved setting. > --- a/lisp/cus-edit.el > +++ b/lisp/cus-edit.el > @@ -2505,18 +2505,6 @@ custom-comment-invisible-p > > ;;; The `custom-variable' Widget. > > -(defface custom-variable-obsolete > - '((((class color) (background dark)) > - :foreground "light blue") > - (((min-colors 88) (class color) (background light)) > - :foreground "blue1") > - (((class color) (background light)) > - :foreground "blue") > - (t :slant italic)) > - "Face used for obsolete variables." > - :version "27.1" > - :group 'custom-faces) > - Because of the above, perhaps it's too early to remove it? > @@ -2544,7 +2532,7 @@ custom-variable-documentation > Normally just return the docstring. But if VARIABLE automatically > becomes buffer local when set, append a message to that effect. > Also append any obsolescence information." > - (format "%s%s%s" (documentation-property variable 'variable-documentation t) > + (format "%s%s" (documentation-property variable 'variable-documentation t) > (if (and (local-variable-if-set-p variable) > (or (not (local-variable-p variable)) > (with-temp-buffer > @@ -2552,21 +2540,7 @@ custom-variable-documentation > "\n > This variable automatically becomes buffer-local when set outside Custom. > However, setting it through Custom sets the default value." > - "") > - ;; This duplicates some code from describe-variable. > - ;; TODO extract to separate utility function? > - (let* ((obsolete (get variable 'byte-obsolete-variable)) > - (use (car obsolete))) > - (if obsolete > - (concat "\n > -This variable is obsolete" > - (if (nth 2 obsolete) > - (format " since %s" (nth 2 obsolete))) > - (cond ((stringp use) (concat ";\n" use)) > - (use (format-message ";\nuse `%s' instead." > - (car obsolete))) > - (t "."))) > - "")))) > + ""))) And the same goes for this: if the option is still likely to pop up in some other Custom buffer, then this is useful information we might want to keep showing to the user. > +(defun custom--filter-obsolete-variables (items) > + "Filter obsolete variables from ITEMS." > + (seq-filter (lambda (item) > + (not (and (eq (nth 1 item) 'custom-variable) > + (get (nth 0 item) 'byte-obsolete-variable)))) > + items)) > + Nit: perhaps seq-remove?