Mercurial > emacs
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.