(face-try-color-list): Don't rely on errors from using

a color that the server can't really support.
This commit is contained in:
Richard M. Stallman 1994-02-15 22:38:00 +00:00
parent aa67090401
commit 6a588f9a70

View file

@ -862,26 +862,34 @@ selected frame."
;; That can't fail, so any subsequent elements after the t are ignored.
(defun face-try-color-list (function face colors frame)
(if (stringp colors)
(funcall function face colors frame)
(if (or (and (not (x-display-color-p)) (not (string= colors "gray")))
(= (x-display-planes) 1))
nil
(funcall function face colors frame))
(if (eq colors t)
(invert-face face frame)
(let (done)
(while (and colors (not done))
(if (cdr colors)
;; If there are more colors to try, catch errors
;; and set `done' if we succeed.
(condition-case nil
(progn
(if (eq (car colors) t)
(invert-face face frame)
(funcall function face (car colors) frame))
(setq done t))
(error nil))
;; If this is the last color, let the error get out if it fails.
;; If it succeeds, we will exit anyway after this iteration.
(if (eq (car colors) t)
(invert-face face frame)
(funcall function face (car colors) frame)))
(if (and (stringp (car colors))
(or (and (not (x-display-color-p))
(not (string= (car colors) "gray")))
(= (x-display-planes) 1)))
nil
(if (cdr colors)
;; If there are more colors to try, catch errors
;; and set `done' if we succeed.
(condition-case nil
(progn
(if (eq (car colors) t)
(invert-face face frame)
(funcall function face (car colors) frame))
(setq done t))
(error nil))
;; If this is the last color, let the error get out if it fails.
;; If it succeeds, we will exit anyway after this iteration.
(if (eq (car colors) t)
(invert-face face frame)
(funcall function face (car colors) frame))))
(setq colors (cdr colors)))))))
;; If we are already using x-window frames, initialize faces for them.