(defun cd (new)
(flet ((%cd (new-directory)
(if (probe-file new-directory)
(return-from cd
(setf *default-pathname-defaults* (truename new-directory)))
(cerror "Try again" 'no-such-directory :ad new-directory))))
(fw.lu:retry-once (is-retry)
(let ((new-directory (make-pathname :directory (append (pathname-directory *default-pathname-defaults*)
(list new))
:defaults *default-pathname-defaults*)))
(restart-case (%cd new-directory)
(use-value (value)
:test (lambda (_) _ is-retry)
:report (lambda (stream)
(format stream "Use specified value."))
:interactive read-evaluated-form
(setf new value)))))))
(defun ls (&optional pattern)
(if pattern
(directory pattern)
(directory "*.*")))
(defun rm (file)
(unless (listp file)
(setf file (list file)))
(mapcar #'delete-file file))