On 24 Apr 2024, at 3:39, Didier Verna wrote:
> François-René ÐVB Rideau écrivait:
>
>> What are the methods defined by asdf-flv?
>
> In order to support file local variables, ASDF-FLV does this:
>
> (defmethod asdf:perform :around
> ((operation asdf:load-op) (file asdf:cl-source-file))
> "Establish new dynamic bindings for file-local variables."
> (progv *file-local-variables*
> (mapcar #'symbol-value *file-local-variables*)
> (call-next-method)))
>
> (defmethod asdf:perform :around
> ((operation asdf:compile-op) (file asdf:cl-source-file))
> "Establish new dynamic bindings for file-local variables."
> (progv *file-local-variables*
> (mapcar #'symbol-value *file-local-variables*)
> (call-next-method)))
>
>
> The problem, of course, is that loading ASDF-FLV will override any
> existing method with the same signature, and conversely, anything else
> loaded afterward will override ASDF-FLV.
>
> ASDF-FLV could subclass ASDF:CL-SOURCE-FILE and specialize only on that
> subclass, but that would defeat its pervasiveness and make it more
> difficult to have multiple extensions working together. Hence Robert's
> idea of mixins. My own idea was to have exported operations use a
> special method combination allowing multiple methods with the same
> signature.
The one thing that worries me about that is that I don't know how well all the supported lisp implementations handle defining new method combinations.
But otherwise I agree that this would be an appropriate thing to do.