find-restart (original) (raw)
ANSI Common Lisp 9 Conditions
9.2 Dictionary of Conditions
9.2.33 find-restart | Function |
---|
Syntax:
find-restart identifier &optional condition
restart
Arguments and Values:
identifier - a non-nil symbol, or a restart.
condition - a condition object, or nil.
Description:
find-restart searches for a particular restart in the current dynamic environment.
When condition is non-nil, only those _restarts_are considered that are either explicitly associated with that condition, or not associated with any condition; that is, the excluded _restarts_are those that are associated with a non-empty set of conditions of which the given condition is not an element. If condition is nil, all restarts are considered.
If identifier is a symbol, then the innermost (most recently established) applicable restart with that name is returned.nil is returned if no such restart is found.
If identifier is a currently active restart, then it is returned. Otherwise, nil is returned.
Examples:
(restart-case
(let ((r (find-restart 'my-restart)))
(format t "~S is named ~S" r (restart-name r)))
(my-restart () nil))
#<RESTART 32307325> is named MY-RESTART
NIL
(find-restart 'my-restart)
NIL
Affected By:
Existing restarts.
restart-case, restart-bind, with-condition-restarts.
See Also:
Notes:
(find-restart identifier) ==(find identifier (compute-restarts) :key :restart-name)
Although anonymous restarts have a name of nil, the consequences are unspecified if nil is given as an identifier. Occasionally, programmers lament that nil is not permissible as an_identifier_ argument. In most such cases, compute-restartscan probably be used to simulate the desired effect.
Allegro CL Implementation Details:
None.