diff --git a/src/ui/batch.lisp b/src/ui/batch.lisp index 824b2a0..2c723d3 100644 --- a/src/ui/batch.lisp +++ b/src/ui/batch.lisp @@ -116,26 +116,26 @@ (defun main (args) (let ((subcommand (first args)) (subcommand-args (cdr args))) - (cond - ((probe-file subcommand) - ; execute default command for a file - (%perform-command :COMPLETE (list subcommand))) - ((or (not (scan "[a-zA-Z]+" subcommand)) - (> (length subcommand) 9)) - (%stdout "malformed command: ~A~%" subcommand) - (help)) - (t - (handler-case - (let* ((command-name - (intern (string-upcase subcommand) - (find-package "KEYWORD"))) - (available-command + (handler-case + (cond + ((probe-file subcommand) + ; execute default command for a file + (%perform-command :COMPLETE (list subcommand))) + ((or (not (scan "[a-zA-Z]+" subcommand)) + (> (length subcommand) 9)) + (%stdout "malformed command: ~A~%" subcommand) + (help)) + (t + (let* ((command-name + (intern (string-upcase subcommand) + (find-package "KEYWORD"))) + (available-command (compute-applicable-methods #'%perform-command (list command-name subcommand-args)))) - (if available-command - (%perform-command command-name subcommand-args) - (%stdout "unimplemented command: ~A~%" subcommand))) - (condition (con) - (%stdout "unhandled condition occurred: ~A~%quit~%" con))))))) + (if available-command + (%perform-command command-name subcommand-args) + (%stdout "unimplemented command: ~A~%" subcommand))))) + (condition (con) + (%stdout "unhandled condition occurred: ~A~%quit~%" con)))))