![](https://secure.gravatar.com/avatar/f280fbf7764035c257f907cf2223eac0.jpg?s=120&d=mm&r=g)
I have committed an experimental branch called "srcmap" that contains an implementation of source mappings for Parenscript. By "source mappings" I mean a way of associating the text extent (start and end position in PS source code) of PS forms with the corresponding positions in generated JS code. There's a more detailed description in the commit message (053e9d4). Note that this Lispy form-based approach is not the same as the line-based approach of the Google/Mozilla source map spec. I believe it ought to be fairly easy to transform this format into that one, but have not done that work yet. Since this implementation had to modify the compiler every place that forms are transformed along the path from PS input to JS output, it has a fairly large footprint in the codebase (though not as large as you might expect: less than 200 lines of code were added, and only about 100 in the core compiler). Doing this work I ran into a bunch of places in the code where minor refactoring would help, as well as a handful of bugs. I kept all of that carefully separate from the source map commit itself, and have pushed it in the form of about a half-dozen commits onto master. That way the work of maintaining the srcmap branch until the day (if ever) that it is merged into master will at least be limited to relevant parts of the code. One of those commits was to move BIND out of deprecation hell and into lib/ps-loop.lisp. Since LOOP isn't deprecated and it relies on BIND, this seems the best place for BIND to live for now; especially since LOOP itself deviates from CL about as much as BIND does. Daniel