|   | 
 ANSI Common Lisp    9 Conditions    9.2 Dictionary of Conditions
 
| 9.2.43  muffle-warning | 
Restart | 
  
 - Data Arguments Required:
 - 
None.
  - Description:
 - 
This restart is established by warn so that handlers
of warning conditions have a way to tell warn 
that a warning has already been dealt with and that no further action is warranted.
  - Examples:
 - 
 (defvar *all-quiet* nil)   *ALL-QUIET*
 (defvar *saved-warnings* '())   *SAVED-WARNINGS*
 (defun quiet-warning-handler (c)
   (when *all-quiet*
     (let ((r (find-restart 'muffle-warning c)))
       (when r 
         (push c *saved-warnings*)
         (invoke-restart r)))))
   CUSTOM-WARNING-HANDLER
 (defmacro with-quiet-warnings (&body forms)
   `(let ((*all-quiet* t)
          (*saved-warnings* '()))
      (handler-bind ((warning #'quiet-warning-handler))
        ,@forms
        *saved-warnings*)))
   WITH-QUIET-WARNINGS
 (setq saved
   (with-quiet-warnings
     (warn "Situation #1.")
     (let ((*all-quiet* nil))
       (warn "Situation #2."))
     (warn "Situation #3.")))
  Warning: Situation #2.
  (#<SIMPLE-WARNING 42744421> #<SIMPLE-WARNING 42744365>)
 (dolist (s saved) (format t "~&~A~%" s))
  Situation #3.
  Situation #1.
   NIL
 
  - See Also:
 - 
Section 9.1.4.2 Restarts,
Section 9.1.4.2.2 Interfaces to Restarts,
invoke-restart,
muffle-warning (function),
warn
  - Allegro CL Implementation Details:
 - 
 None.
  
 |