+;;;; ED
+(defvar *ed-functions* nil
+ "See function documentation for ED.")
+
+(defun ed (&optional x)
+ "Starts the editor (on a file or a function if named). Functions
+from the list *ED-FUNCTIONS* are called in order with X as an argument
+until one of them returns non-NIL; these functions are responsible for
+signalling a FILE-ERROR to indicate failure to perform an operation on
+the file system."
+ (dolist (fun *ed-functions*
+ (error 'extension-failure
+ :format-control "Don't know how to ~S ~A"
+ :format-arguments (list 'ed x)
+ :references (list '(:sbcl :variable *ed-functions*))))
+ (when (funcall fun x)
+ (return t))))
+\f