Mi stavo divertendo aggiungendo qualche consiglio a una funzione:
(advice-add 'executable-find :around
(lambda (f &rest args)
(apply g args)))
;;; ^
Ahi, un errore di battitura. Risolto il problema e valutato di nuovo sopra il codice. Ma ora ho entrambi i consigli "corretti" e "rotti" su quella funzione.
Come posso liberarmene? Dato che è advice-remove
necessario l'oggetto funzione o il consiglio around (che è vuoto qui)?
(Ovviamente posso solo uscire e riavviare, ma c'è un altro modo, vero?)
eq
rispetto alle precedenti, (2) avviso-rimozione confronta la funzione che passi ai consigli finché non trova uno che lo èeq
e lo rimuove, (3) anche se un consiglio-rimuovi utilizzava un test diverso, comeequal
, comunque, non avrebbe funzionato, perché diverse valutazioni di una forma lambda non si sarebberoequal
scambiate. Si scopre che (1) è corretto, ma (2) e (3) sono sbagliati: consiglia di rimuovere gli usiequal
e valutarelambda
due volte lo stesso produceequal
risultati!