I've seen many unhygienic macros (found the hard way) and written some myself out of laziness. It's a nice idea to encourage safer lazy macro writing. I prefer a hat ^ prefix as it is easier to read, rather than a dollar $ suffix which seems muddled to my eye. I found no evidence of symbols with a ^ prefix in the Emacs code base or in the elpa packages I use so would risk less conflict than $ which I have seen around. I'd highlight these hat-prefixed symbols in some nice new font-lock face. (defmacro sm/test (x y) (with-uninterned-symbols `(let ((^foo ,x) (^bar ,y)) (list :args `(,^foo . ,^bar) :add (+ ^foo ^bar) :sub (- ^foo ^bar) :mul (* ^foo ^bar) :div (/ ^foo ^bar))))) -Stephane On Sat, Feb 8, 2025 at 3:30 AM Tassilo Horn wrote: > Eli Zaretskii writes: > > >> Would there be interest in adding something like that to Elisp? > > > > I'm very hesitant to extend the Emacs Lisp language with such > > features, when this can be had for a price of a simple function call. > > We have enough magic names and punctuation characters already, and > > they get in the way of code readability. > > In my opinion, readability is the key point of the feature. With the > regular "declare the locals you need to introduce beforehand and then > splice them into the expansion" approach, the distinction between locals > and spliced-in macro args gets lost. With the suggested > with-uninterned-symbols macro, it's clear that foo$ is a local defined > in the expansion while ,foo is something from "the outside". > > I'm not booked on the $-suffix, though. It's just easy to type, stands > out a bit and usually isn't used in the wild. > > Bye, > Tassilo > > > >