On 24 November 2010 09:46, Robert Goldman rpgoldman@sift.info wrote:
1- you should probably be using (default-directory) instead of *default-pathname-defaults*
I will modify the code accordingly.
Scratch that. You should be using *default-pathname-defaults*, but to save work, bind it to (default-directory) around the call to inherit-source-registry in flatten-source-registry.
2- why not bind *default-pathname-defaults* instead of a new variable? NB: that would change the meaning of default-directory - may or may not be a good thing.
I'd rather not do that, unless you think it's really important. I like having the distinctive *here-directory* special because it's guaranteed not to mutate parts of the state that I don't understand. I am not confident that by modifying *d-p-d* I won't break something elsewhere.
I could be persuaded to kill the new variable in favor of using *d-p-d*, but I'm not persuaded yet...
3- you can wrap the whole body of process-source-registry (pathname &key ...) in a (let ((*proper-variable* (pathname-directory-pathname pathname))) ...)
I wasn't confident of what would happen in the third branch of the COND --- the one with
(inherit-source-registry inherit :register register)
if I did that. If you're sure I won't mess something up that way, I'll make the change. I'm looking at the test suite, and I'm pretty sure I could bork ASDF by messing up I-S-R without the test suite noticing.
You're totally right, my suggestion was wrong on point 2, because of your point 3 below. We probably want to a- distinguish "here" (relative to config file) from "default" (something global set by the user). b- reset "here" to "default" when processing something that's not a file, around the body of inherit-source-registry.
Happy Thanksgiving! Good luck on your travels!
Happy Turkeygeddon!
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] Comparing oneself with Galileo or Einstein is certainly good for the ego — provided one refrains from going into too much detail. — John McCarthy