]> git.eshelyaron.com Git - emacs.git/commitdiff
characters.el: remove repetition in glyphless-char-display-control
authorRobert Pluim <rpluim@gmail.com>
Wed, 1 Dec 2021 16:11:07 +0000 (17:11 +0100)
committerRobert Pluim <rpluim@gmail.com>
Wed, 1 Dec 2021 16:30:35 +0000 (17:30 +0100)
* lisp/international/characters.el (glyphless-char-display-method):
New custom widget for the different options for displaying glyphless
characters.
(glyphless-char-display-control): Use 'glyphless-char-display-method'.

lisp/international/characters.el

index 9e0cc88d804171f1843551a637c23bfaa2872834..3b8924f50350f65ac6e36315d808c37176eefe80 100644 (file)
@@ -1576,6 +1576,19 @@ option `glyphless-char-display'."
     (set-char-table-range chartable (cons from to) method)))
 
 ;;; Control of displaying glyphless characters.
+(define-widget 'glyphless-char-display-method 'lazy
+  "Display method for glyphless characters."
+  :group 'mule
+  :format "%v"
+  :value 'thin-space
+  :type
+  '(choice
+    (const :tag "Don't display" zero-width)
+    (const :tag "Display as thin space" thin-space)
+    (const :tag "Display as empty box" empty-box)
+    (const :tag "Display acronym" acronym)
+    (const :tag "Display hex code in a box" hex-code)))
+
 (defcustom glyphless-char-display-control
   '((format-control . thin-space)
     (variation-selectors . thin-space)
@@ -1619,41 +1632,11 @@ function (`update-glyphless-char-display'), which updates
   :version "28.1"
   :type '(alist :key-type (symbol :tag "Character Group")
                :value-type (symbol :tag "Display Method"))
-  :options '((c0-control
-             (choice :value thin-space
-                      (const :tag "Don't display" zero-width)
-                     (const :tag "Display as thin space" thin-space)
-                     (const :tag "Display as empty box" empty-box)
-                     (const :tag "Display acronym" acronym)
-                     (const :tag "Display hex code in a box" hex-code)))
-            (c1-control
-             (choice :value thin-space
-                      (const :tag "Don't display" zero-width)
-                     (const :tag "Display as thin space" thin-space)
-                     (const :tag "Display as empty box" empty-box)
-                     (const :tag "Display acronym" acronym)
-                     (const :tag "Display hex code in a box" hex-code)))
-            (format-control
-             (choice :value thin-space
-                      (const :tag "Don't display" zero-width)
-                     (const :tag "Display as thin space" thin-space)
-                     (const :tag "Display as empty box" empty-box)
-                     (const :tag "Display acronym" acronym)
-                     (const :tag "Display hex code in a box" hex-code)))
-            (variation-selectors
-             (choice :value thin-space
-                      (const :tag "Don't display" zero-width)
-                     (const :tag "Display as thin space" thin-space)
-                     (const :tag "Display as empty box" empty-box)
-                     (const :tag "Display acronym" acronym)
-                     (const :tag "Display hex code in a box" hex-code)))
-            (no-font
-             (choice :value hex-code
-                      (const :tag "Don't display" zero-width)
-                     (const :tag "Display as thin space" thin-space)
-                     (const :tag "Display as empty box" empty-box)
-                     (const :tag "Display acronym" acronym)
-                     (const :tag "Display hex code in a box" hex-code))))
+  :options '((c0-control glyphless-char-display-method)
+            (c1-control glyphless-char-display-method)
+            (format-control glyphless-char-display-method)
+            (variation-selectors glyphless-char-display-method)
+            (no-font (glyphless-char-display-method :value hex-code)))
   :set 'update-glyphless-char-display
   :group 'display)