changeset 15884:ea80dae13b2f

(modify-face): Handle nil as stipple value. (internal-face-interactive-stipple): New function. (set-face-stipple): Use internal-face-interactive-stipple.
author Richard M. Stallman <rms@gnu.org>
date Mon, 19 Aug 1996 16:31:27 +0000
parents 9eb4a4ea23c6
children 67d9f8e91688
files lisp/faces.el
diffstat 1 files changed, 38 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/faces.el	Sun Aug 18 20:30:29 1996 +0000
+++ b/lisp/faces.el	Mon Aug 19 16:31:27 1996 +0000
@@ -178,7 +178,7 @@
 
 If the optional FRAME argument is provided, change only
 in that frame; otherwise change each frame."
-  (interactive (internal-face-interactive "stipple"))
+  (interactive (internal-face-interactive-stipple "stipple"))
   (internal-set-face-1 face 'background-pixmap pixmap 6 frame))
 
 (defalias 'set-face-background-pixmap 'set-face-stipple)
@@ -237,7 +237,8 @@
 	  (old-stipple-string
 	   (if (stringp (face-stipple (intern face)))
 	       (face-stipple (intern face))
-	     (prin1-to-string (face-stipple (intern face)))))
+	     (if (face-stipple (intern face))
+		 (prin1-to-string (face-stipple (intern face))))))
 	  (new-stipple-string
 	   (modify-face-read-string
 	    face old-stipple-string
@@ -247,12 +248,13 @@
 	  ;; This makes the assumption that a pixmap file name
 	  ;; won't start with an open-paren.
 	  (stipple
-	   (if (string-match "^(" new-stipple-string)
-	       (read new-stipple-string)
-	     new-stipple-string))
-	  (bold-p	(y-or-n-p (concat "Set face " face " bold ")))
-	  (italic-p	(y-or-n-p (concat "Set face " face " italic ")))
-	  (underline-p	(y-or-n-p (concat "Set face " face " underline ")))
+	   (and new-stipple-string
+		(if (string-match "^(" new-stipple-string)
+		    (read new-stipple-string)
+		  new-stipple-string)))
+	  (bold-p	(y-or-n-p (concat "Should face " face " be bold ")))
+	  (italic-p	(y-or-n-p (concat "Should face " face " be italic ")))
+	  (underline-p	(y-or-n-p (concat "Should face " face " be underlined ")))
 	  (all-frames-p	(y-or-n-p (concat "Modify face " face " in all frames "))))
      (message "Face %s: %s" face
       (mapconcat 'identity
@@ -357,7 +359,34 @@
 			       default))))
     (list face (if (equal value "") nil value))))
 
-
+(defun internal-face-interactive-stipple (what)
+  (let* ((fn (intern (concat "face-" what)))
+	 (prompt (concat "Set " what " of face"))
+	 (face (read-face-name (concat prompt ": ")))
+	 (default (if (fboundp fn)
+		      (or (funcall fn face (selected-frame))
+			  (funcall fn 'default (selected-frame)))))
+	 ;; If the stipple value is a list (WIDTH HEIGHT DATA),
+	 ;; represent that as a string by printing it out.
+	 (old-stipple-string
+	  (if (stringp (face-stipple face))
+	      (face-stipple face)
+	    (if (null (face-stipple face))
+		nil
+	      (prin1-to-string (face-stipple face)))))
+	 (new-stipple-string
+	  (read-string
+	   (concat prompt " " (symbol-name face) " to: ")
+	   old-stipple-string))
+	 ;; Convert the stipple value text we read
+	 ;; back to a list if it looks like one.
+	 ;; This makes the assumption that a pixmap file name
+	 ;; won't start with an open-paren.
+	 (stipple
+	  (if (string-match "^(" new-stipple-string)
+	      (read new-stipple-string)
+	    new-stipple-string)))
+    (list face (if (equal stipple "") nil stipple))))
 
 (defun make-face (name)
   "Define a new FACE on all frames.