Lorgnette is a framework for augmenting code editors with malleable code projections, i.e., alternative representations that are bidirectionally linked to pieces of code (or even runtime data!) and can be created and modified by the users of the code editor. Lorgnette is a research prototype, currently targeting code editors that run in webpages, such as the Monaco editor and CodeMirror.
You can try out some of Lorgnette's projections by visiting the online playground environment (link below). At the moment, projections cannot be modified from within the playground itself. If you'd like to modify existing projections or specify your own, please clone the repository, modify the code according to the instructions below, and run your own build locally!
Try Lorgnette's playground in your browser! 🎮
TODO.
TODO.
Lorgnette was developed by Camille Gobert as part of his Ph.D. in the ex)situ team at Inria and Paris-Saclay university. If you are interested in reading more about Lorgnette and the motivations behind this work, check out the following publication:
Lorgnette: Creating Malleable Code Projections (Gobert & Beaudouin-Lafon, UIST 2023).
To cite Lorgnette, please cite the publication above. You can use the following BibTeX entry:
@inproceedings{gobert2023lorgnette,
author = {Gobert, Camille and Beaudouin-Lafon, Michel},
title = {Lorgnette: Creating Malleable Code Projections},
year = {2023},
booktitle = {Proceedings of the 36th Annual ACM Symposium on User Interface Software and Technology},
articleno = {71},
numpages = {16},
series = {UIST '23},
location = {San Francisco, CA, USA},
publisher = {ACM},
address = {New York, NY, USA},
doi = {10.1145/3586183.3606817}
}
The code of Lorgnette is released under the MIT license. You can freely use and adapt it, and we'd be glad to hear about it if you do!
However, keep in mind that the licenses of some of Lorgnette's dependencies may be more restrictive, especially regarding some of the React components used to create user interfaces for projections. If this matters to you, be sure to check the licences of the dependencies listed in package.json
.