diff lisp/wid-edit.el @ 227:0e522484dd2a r20-5b12

Import from CVS: tag r20-5b12
author cvs
date Mon, 13 Aug 2007 10:12:37 +0200
parents 6c0ae1f9357f
children 966663fcf606
line wrap: on
line diff
--- a/lisp/wid-edit.el	Mon Aug 13 10:11:42 2007 +0200
+++ b/lisp/wid-edit.el	Mon Aug 13 10:12:37 2007 +0200
@@ -586,8 +586,9 @@
   (setq prompt (format "[%s] %s" (widget-type widget) prompt))
   (setq widget (widget-convert widget))
   (let ((answer (widget-apply widget :prompt-value prompt value unbound)))
-    (unless (widget-apply widget :match answer)
-      (error "Value does not match %S type." (car widget)))
+    (while (not (widget-apply widget :match answer))
+      (setq answer (signal 'error (list "Answer does not match type"
+					answer (widget-type widget)))))
     answer))
 
 (defun widget-get-sibling (widget)
@@ -1704,7 +1705,7 @@
 		      doc-text)
 		     buttons))))
 	  (t
-	   (error "Unknown escape `%c'" escape)))
+	   (signal 'error (list "Unknown escape" escape))))
     (widget-put widget :buttons buttons)))
 
 (defun widget-default-button-face-get (widget)
@@ -2434,7 +2435,7 @@
 			     (widget-create-child-value
 			      widget type (car (cdr chosen)))))))
 	       (t
-		(error "Unknown escape `%c'" escape)))))
+		(signal 'error (list "Unknown escape" escape))))))
      ;; Update properties.
      (and button child (widget-put child :button button))
      (and button (widget-put widget :buttons (cons button buttons)))
@@ -2614,7 +2615,7 @@
 		(unless chosen
 		  (widget-apply child :deactivate)))
 	       (t
-		(error "Unknown escape `%c'" escape)))))
+		(signal 'error (list "Unknown escape" escape))))))
      ;; Update properties.
      (when chosen
        (widget-put widget :choice type))
@@ -2898,7 +2899,7 @@
 				 widget type value))
 		  (setq child (widget-create-child widget type))))
 	       (t
-		(error "Unknown escape `%c'" escape)))))
+		(signal 'error (list "Unknown escape" escape))))))
      (widget-put widget
 		 :buttons (cons delete
 				(cons insert
@@ -3402,8 +3403,9 @@
 	(goto-char (point-min))
 	(let ((answer (read buffer)))
 	  (unless (eobp)
-	    (error "Junk at end of expression: %s"
-		   (buffer-substring (point) (point-max))))
+	    (signal 'error
+		    (list "Junk at end of expression"
+			  (buffer-substring (point) (point-max)))))
 	  answer)))))
 
 (define-widget 'restricted-sexp 'sexp