Giovanni Crisalfi
banner
gicrisf.bsky.social
Giovanni Crisalfi
@gicrisf.bsky.social
(make-bio :work 'dev :grad '(MS . medchem) :lang '(lisp rust))
Still have to update the readme, but the tests and changelog have lots of examples you can replicate in your own org buffer by just installing and loading the package:
github.com/gicrisf/emac...
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 19, 2025 at 11:16 PM
Now, every Indigo object has its own `indigo-with-<object>` macro for resource management and every iterator is wrapped in a stream abstraction that can be composed by mapping, folding, filtering, all without unnecessary intermediate lists (and when you do want them, just indigo-stream-collect them)
November 19, 2025 at 11:16 PM
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