Stefan Kangas <firstname.lastname@example.org
> --- 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))
> @@ -2552,21 +2540,7 @@ custom-variable-documentation
> 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?