[PATCH] emacs: fix notmuch-search-line-faces defcustom
Mark Walters
markwalters1009 at gmail.com
Sat Oct 15 02:40:48 PDT 2016
In commit 2a7b11b064233afc4feead876fa396e3c18a6b91 the default value
for notmuch-search-line-faces was changed so that it didn't match the
specification in the corresponding defcustom. This meant that it was
difficult for the user to customize this variable as they got a type
mismatch error.
Note anyone who had already customised this variable would not see
this bug as their customisation would match the defcustom.
---
Getting this defcustom to work was quite tricky, so please could
people test: just try M-x customize-variable notmuch-search-line-faces
and see if a custom widget displays correctly (in particular that it
doesn't complaine about a type mismatch.
For testing devel/try-emacs-mua -q (or -Q) is useful (which seems to
be fine) so I am particularly interested in whether people's existsing
customisations break the defcustom widget.
I could not persuade the custom-edit-face widget to respect the :tag
property so had to do create a new widget. Anyway, this seems to fix
the defcustom so that the new default value, and previously customised
values all work.
I am not certain this is better than just reverting 2a7b -- even with
the above the customisation for notmuch-search-line-faces is more
complex (to the user as well as in the code)
Finally, the docstring says that a list of faces is also allowed. I
believe that is true but making that work with the customize widget
would be horrible. I think we should remove the documentation for it
from the defcustom and just put a lisp comment in the source code --
if the user wants to set it with a "setq" then they can read the
actual source.
Best wishes
Mark
emacs/notmuch.el | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/emacs/notmuch.el b/emacs/notmuch.el
index 2834d44..d00c21a 100644
--- a/emacs/notmuch.el
+++ b/emacs/notmuch.el
@@ -670,9 +670,16 @@ of the result."
(goto-char (point-min))
(forward-line (1- notmuch-search-target-line)))))))))
+(define-widget 'notmuch--custom-face-edit 'lazy
+ "Custom face edit with a tag Edit Face"
+ ;; I could not persuage custom-face-edit to respect the :tag
+ ;; property so create a widget specially
+ :tag "Manually specify face"
+ :type 'custom-face-edit)
+
(defcustom notmuch-search-line-faces
- '(("unread" 'notmuch-search-unread-face)
- ("flagged" 'notmuch-search-flagged-face))
+ '(("unread" . notmuch-search-unread-face)
+ ("flagged" . notmuch-search-flagged-face))
"Alist of tags to faces for line highlighting in notmuch-search.
Each element looks like (TAG . FACE).
A thread with TAG will have FACE applied.
@@ -690,7 +697,9 @@ matching tags are merged, with earlier attributes overriding
later. A message having both \"deleted\" and \"unread\" tags with
the above settings would have a green foreground and blue
background."
- :type '(alist :key-type (string) :value-type (custom-face-edit))
+ :type '(alist :key-type (string)
+ :value-type (radio (face :tag "Face name")
+ (notmuch--custom-face-edit)))
:group 'notmuch-search
:group 'notmuch-faces)
--
2.1.4
More information about the notmuch
mailing list