changeset 59872:d7da3e10bfef

(list-faces-display): Add optional argument.
author Richard M. Stallman <rms@gnu.org>
date Thu, 03 Feb 2005 06:47:16 +0000
parents 83af8894e534
children f69e6bb9b8fc
files lisp/faces.el
diffstat 1 files changed, 17 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/faces.el	Thu Feb 03 04:28:21 2005 +0000
+++ b/lisp/faces.el	Thu Feb 03 06:47:16 2005 +0000
@@ -1143,15 +1143,26 @@
 ;; conflict with Lucid, which uses that name differently.
 
 (defvar help-xref-stack)
-(defun list-faces-display ()
+(defun list-faces-display (&optional regexp)
   "List all faces, using the same sample text in each.
 The sample text is a string that comes from the variable
-`list-faces-sample-text'."
-  (interactive)
+`list-faces-sample-text'.
+
+If REGEXP is non-nil, list only those faces with names matching
+this regular expression.  When called interactively with a prefix
+arg, prompt for a regular expression."
+  (interactive (list (and current-prefix-arg
+                          (read-string "List faces matching regexp: "))))
   (let ((faces (sort (face-list) #'string-lessp))
-	(face nil)
 	(frame (selected-frame))
 	disp-frame window face-name)
+    (when (> (length regexp) 0)
+      (setq faces
+            (delq nil
+                  (mapcar (lambda (f)
+                            (when (string-match regexp (symbol-name f))
+                              f))
+                          faces))))
     (with-output-to-temp-buffer "*Faces*"
       (save-excursion
 	(set-buffer standard-output)
@@ -1164,9 +1175,7 @@
 	   "\\[help-follow] on a face name to customize it\n"
 	   "or on its sample text for a description of the face.\n\n")))
 	(setq help-xref-stack nil)
-	(while faces
-	  (setq face (car faces))
-	  (setq faces (cdr faces))
+	(dolist (face faces)
 	  (setq face-name (symbol-name face))
 	  (insert (format "%25s " face-name))
 	  ;; Hyperlink to a customization buffer for the face.  Using
@@ -1208,6 +1217,7 @@
 	    (copy-face (car faces) (car faces) frame disp-frame)
 	    (setq faces (cdr faces)))))))
 
+
 (defun describe-face (face &optional frame)
   "Display the properties of face FACE on FRAME.
 Interactively, FACE defaults to the faces of the character after point