On Mon, Jan 24, 2011 at 5:41 AM, Matthew Mondor <email@example.com>
I tested again with the new changes and the same test code, however I
now see a line printed about the top level, and am unable to do
anything to trigger the printing of an error if I type in invalid
arguments. The message I get: Top level in: #<process TOP-LEVEL>.
Let me try to explain it better. In your former example you had two levels of argument checking: the one in your code (process-command-args) and the one performed again by si:top-level. That was the reason why redefining locally *help-file* did not work.
In the new version si:top-level does not invoke process-command-args. The only argument processing will happen at the beginning. If you wish to signal an error due to missing or wrong arguments, then you have to customize the value that you give to process-command-args.
Alternatively, if all the arguments you need are ECL's, then invoke (SI:TOP-LEVEL T) instead of (SI:TOP-LEVEL).