Restart MUFFLE-WARNING
なし。
このrestart
はwarn
によって確立され、 warning
コンディションのハンドラーは warn
に対して警告はすでに実行されており それ以上のアクションが必要ないということを伝える方法を持っています。
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-warningswarn "Situation #1.")
(let ((*all-quiet* nil))
(warn "Situation #2."))
(warn "Situation #3.")))
(2.
>> Warning: Situation #=> (#<SIMPLE-WARNING 42744421> #<SIMPLE-WARNING 42744365>)
dolist (s saved) (format t "~&~A~%" s))
(3.
>> Situation #1.
>> Situation #=> NIL
9.1.4.2. restart
, 9.1.4.2.2. restart
のインターフェイス, invoke-restart
, muffle-warning
(関数), warn
,