Thanks for valuable comments. Take a look at latest commit:
https://bitbucket.org/budden/budden-tools/src/3cc8612a622055a4ac58be7f496c50...
Most of dead code is deleted.
It looks like what you are building is an extension to ASDF that hooks it into an editor (perhaps specifically the lispworks IDE?). Is that correct?
I've done a patch. decorate-function and decorate-macro are used to apply patches to some parts of asdf.
I use lispworks-tools in Lispworks IDE and swank in SBCL. It is very likely that the code will work in SLIME for every lisp implementation, but I didn't test it.
Also, you might want to split this into modifications/extensions to ASDF and code that interfaces to the Lispworks IDE.
Maybe. This is just a proof of concept. If it can be accepted to master branch of asdf, I'll try to rework it as needed. If not, I can use it as is.
- It is very poor taste to use special variables and redefine
functions to access the current component.
Maybe, but my design goals were: 1. Minimum effort. 2. Maximum portability. 3. Minimum code impact so that I can support the tool if it is not accepted into core of asdf.
Extracting data from error condition seem to be more complex and non-portable. First of all, I know no portable way to access debugger stack. SWANK might help, but task can be rather complicated.
add a restart that doesn't even do the editing for you when it could, why don't you define a handler that adds a restart and re-signals?
What I've done is not so stupid. When we want to edit, re-signalling is unnecessary.
In fact we need context-dependent debugger command in this case, not a handler or restart.
But there is no cross-implementation way to add debugger commands. Also we can't alter "help" command in a debugger so that we could inform the user of an existence of our "edit" command.
Fake restart is just a portable approximation to this desired behaviour.
Maybe I should also issue a warning on the restart like "This restart does nothing. Please read the restart's message".
is not possible, it might make sense to add a restart to ASDF itself, which would actually call the editor instead of hint at it, and where the editor, not the component, is the special variable that the user can thereby customize.
Maybe adding some hook for editing is a good idea. But again, we can discuss it only if we discuss embedding such a tool into asdf itself. What I have now is sufficient for me.
- Do NOT use keywordize and string-equal, use coerce-name and string=.
You're introducing subtle incompatibility in your semantics.
Ok, I changed code of of-system. For M-. symbol seem to be necessary and keywordize is the best thing I can do. Any other ideas?
- I don't see why ASDF needs a special recognition for a package-file;
there is no way whatsoever that this is useful, and not every system is organized this way, anyway. By contrast, see package-inferred-system.
package-file and of-system are irrelevant for current discussion, we can just ignore them for now. I didn't planned to "advertise" them, I simply keep all asdf-related stuff in one file :)