]> git.eshelyaron.com Git - emacs.git/commitdiff
Use a widget for the face link in Customize buffers
authorLars Ingebrigtsen <larsi@gnus.org>
Fri, 18 Sep 2020 11:28:12 +0000 (13:28 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Fri, 18 Sep 2020 11:28:12 +0000 (13:28 +0200)
* doc/lispref/customize.texi (Common Keywords): Document it.

* lisp/cus-edit.el (custom-face-value-create): Use a widget
instead of a button so that TAB works (bug#20664).

* lisp/wid-edit.el (face-link): New widget.
(widget-face-link-action): New action.

doc/lispref/customize.texi
lisp/cus-edit.el
lisp/wid-edit.el

index c35444f58170efe4a3dc123f8710239fb41945e3..8591247079577b16394ea4a8fd5176b55ec3cd3d 100644 (file)
@@ -124,6 +124,11 @@ Link to the documentation of a variable; @var{variable} is a string
 which specifies the name of the variable to describe with
 @code{describe-variable} when the user invokes this link.
 
+@item (face-link @var{face})
+Link to the documentation of a face; @var{face} is a string which
+specifies the name of the face to describe with @code{describe-face}
+when the user invokes this link.
+
 @item (custom-group-link @var{group})
 Link to another customization group.  Invoking it creates a new
 customization buffer for @var{group}.
index 9626b3cf810698b5cb05765dabd7b33367e45795..a62b623c44f3349b491f48baad6f55300d7674a6 100644 (file)
@@ -3571,9 +3571,13 @@ the present value is saved to its :shown-value property instead."
             buttons)
       ;; Face name (tag).
       (insert " ")
-      (insert-text-button tag
-                          'action (lambda (&rest _x)
-                                    (find-face-definition symbol)))
+      (push (widget-create-child-and-convert
+             widget 'face-link
+            :button-face 'link
+             :tag tag
+             :action (lambda (&rest _x)
+                       (find-face-definition symbol)))
+            buttons)
       (insert
        (cond ((eq custom-buffer-style 'face) " ")
             ((string-match-p "face\\'" tag)   ":")
index 5ac52777f8462edbeb1c90d3421440768cdc28ca..13d850a57f547753c984ac29ebef7eeb43c83be0 100644 (file)
@@ -1917,6 +1917,16 @@ If END is omitted, it defaults to the length of LIST."
   "Show the variable specified by WIDGET."
   (describe-variable (widget-value widget)))
 
+;;; The `face-link' Widget.
+
+(define-widget 'face-link 'link
+  "A link to an Emacs face."
+  :action 'widget-face-link-action)
+
+(defun widget-face-link-action (widget &optional _event)
+  "Show the variable specified by WIDGET."
+  (describe-face (widget-value widget)))
+
 ;;; The `file-link' Widget.
 
 (define-widget 'file-link 'link