Giovanni Crisalfi
banner
gicrisf.bsky.social
Giovanni Crisalfi
@gicrisf.bsky.social
(make-bio :work 'dev :grad '(MS . medchem) :lang '(lisp rust))
Revanced 👀
November 11, 2025 at 6:33 PM
Firefox 👀
November 11, 2025 at 6:26 PM
So I kept thinking: what if I reimplement all the logic behind? What if I make it more lispy? Got more and more curious about Indigo's capabilities and ended up here lmao (2/2)
November 9, 2025 at 11:03 AM
Thanks! Rendering was actually my starting fixation: everything started when I wrote tochemfig (github.com/gicrisf/toch...) to render (and edit!) molecules in LaTeX without ever leaving my Emacs buffer; but I was frustrated by having to call a Python dependency via subprocess. (1/2)
GitHub - gicrisf/tochemfig: Make Emacs write chemfig code from molfile or SMILES.
Make Emacs write chemfig code from molfile or SMILES. - gicrisf/tochemfig
github.com
November 9, 2025 at 11:03 AM
This is an early implementation. Core functionality is ready for experimentation, though some features (PKA functions, advanced analysis) still need work.

Any feedback is welcome from anyone at the intersection of #chemistry and #Emacs.

This is the repository: github.com/gicrisf/emac...

(7/7)
GitHub - gicrisf/emacs-indigo: Emacs Lisp bindings for the Indigo cheminformatics library
Emacs Lisp bindings for the Indigo cheminformatics library - gicrisf/emacs-indigo
github.com
November 8, 2025 at 6:54 PM
I'm currently working on a lazy stream abstraction for idiomatic iterator handling, avoiding the need to eagerly copy results into temporary Emacs lists.

I can't wait to show the results, to be honest. (6/7)
November 8, 2025 at 6:54 PM
The installation aspect of Emacs Indigo was a key focus: finally, I reduced it to a simple one-liner that only requires GCC/Make and an Emacs installation with module support.

The build system handles Indigo dependencies automatically (on Linux, at least). (5/7)
November 8, 2025 at 6:54 PM
Current implementation of Emacs Indigo provides:

- Core molecular operations (properties, calculations, format conversions)
- Iterator system for structure traversal
- Rendering and visualization
- Reaction handling and atom mapping
- Format support: SMILES, MOL, CML, reaction SMILES

(4/7)
November 8, 2025 at 6:54 PM
Memory management is handled automatically through `indigo-let*`, a macro that takes care of cleanup when working with persistent molecule handles:

(indigo-let* ((:molecule mol "CCO")
(:atoms atoms mol))
(indigo-map #'indigo-symbol atoms))
;; => ("C" "C" "O")

(3/7)
November 8, 2025 at 6:54 PM
The package provides Emacs Lisp bindings through a native C module.

You can work with molecules directly in Emacs: load structures, convert formats (SMILES, MOL, CML), calculate properties, perform substructure matching, and render visualizations (both in PNG and SVG, yes). (2/7)
November 8, 2025 at 6:54 PM
Thank you, appreciate the support! I'd be happy to have people try out this early implementation and giving me feedbacks: right now, I'm writing a lazy-stream implementation to handle all the iterators idiomatically, avoiding the need to eagerly copy results into temporary Emacs lists
November 8, 2025 at 5:12 PM
minchia veramente
November 7, 2025 at 10:53 AM
It works so well, I can't wait to publish it
November 4, 2025 at 8:10 PM
Want to try it?

No global installation needed, just a couple of CLI commands or few clicks in the wizard. Check the Quickstart paragraph:

github.com/gicrisf/wind...
GitHub - gicrisf/windmenu: A minimalist Windows launcher
A minimalist Windows launcher. Contribute to gicrisf/windmenu development by creating an account on GitHub.
github.com
October 28, 2025 at 5:49 PM
I'd say Iced because of the elm-like state management, but both are cool
August 31, 2025 at 5:28 PM