[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#44598: [PATCH] Do not show obsolete options in customize
From: |
Eli Zaretskii |
Subject: |
bug#44598: [PATCH] Do not show obsolete options in customize |
Date: |
Fri, 13 Nov 2020 09:40:52 +0200 |
> Cc: eliz@gnu.org
> From: Stefan Kangas <stefan@marxist.se>
> Date: Thu, 12 Nov 2020 15:56:24 -0500
>
> In a recent discussion on emacs-devel,[1]
You mean this one:
https://lists.gnu.org/archive/html/emacs-devel/2020-09/msg01617.html
> > IMO, we shouldn't show obsolete options at all in a Custom buffer, for
> > the same reason why we remove them from the manuals.
>
> How about the attached patch?
Thanks, some comments:
> +** Customize
> +
> +*** Customize will no longer show obsolete user options.
This is too general, it sounds like those options will not be shown
even if the user types "M-x customize-variable" to explicitly
customize an obsolete option. That's not what the patch does, does
it?
> -(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)
You are removing the face, but then how will we display obsolete
options when the user actually asks to customize them by name?
> +(defun custom--filter-obsolete-variables (items)
> + "Filter obsolete variables from ITEMS."
This doesn't say what kind of object is ITEMS expected to be.
> + (seq-filter (lambda (item)
> + (not (and (eq (nth 1 item) 'custom-variable)
> + (get (nth 0 item) 'byte-obsolete-variable))))
> + items))
Do we really need the power of seq.el here? wouldn't mapcar do the job
nicely, since we have a simple list here? OTOH, if you do use seq.el,
why seq-filter and not seq-remove?
> +(ert-deftest cus-edit-tests-customize-group/no-obsolete ()
> + "Check that obsolete variables do not show up."
> + (save-window-excursion
> + (unwind-protect
> + (progn
> + (customize-group 'cus-edit-tests)
> + (should-not (search-forward "Cus Edit Testvar Obsolete" nil t)))
> + (when-let ((buf (get-buffer "*Customize Group: Cus Edit Tests*")))
> + (kill-buffer buf)))))
This test will fail when we remove the obsolete option, right? How
can we come up with a test that doesn't suffer from such maintenance
problems?