<div>I have committed an experimental branch called "srcmap" that contains</div><div>an implementation of source mappings for Parenscript.</div><div><br></div><div>By "source mappings" I mean a way of associating the text extent</div>

<div>(start and end position in PS source code) of PS forms with the</div><div>corresponding positions in generated JS code. There's a more detailed</div><div>description in the commit message (053e9d4).</div><div><br>

</div><div>Note that this Lispy form-based approach is not the same as the</div><div>line-based approach of the Google/Mozilla source map spec. I believe</div><div>it ought to be fairly easy to transform this format into that one, but</div>

<div>have not done that work yet.</div><div><br></div><div>Since this implementation had to modify the compiler every place that</div><div>forms are transformed along the path from PS input to JS output, it</div><div>has a fairly large footprint in the codebase (though not as large as</div>

<div>you might expect: less than 200 lines of code were added, and only</div><div>about 100 in the core compiler). </div><div><br></div><div><div>Doing this work I ran into a bunch of places in the code where minor</div>
<div>
refactoring would help, as well as a handful of bugs. I kept all of</div><div>that carefully separate from the source map commit itself, and have</div><div>pushed it in the form of about a half-dozen commits onto master. That</div>

<div>way the work of maintaining the srcmap branch until the day (if ever)</div><div>that it is merged into master will at least be limited to relevant</div><div>parts of the code. One of those commits was to move BIND out of</div>

<div>deprecation hell and into lib/ps-loop.lisp. Since LOOP isn't</div><div>deprecated and it relies on BIND, this seems the best place for BIND</div><div>to live for now; especially since LOOP itself deviates from CL about</div>

<div>as much as BIND does.</div></div><div><br></div><div>Daniel</div>