Мне было весело добавить несколько советов к функции:
(advice-add 'executable-find :around
(lambda (f &rest args)
(apply g args)))
;;; ^
Ой, опечатка. Исправил и снова оценил приведенный выше код. Но теперь у меня есть и «исправленный», и «неправильный» совет по поводу этой функции.
Как мне избавиться от них? Учитывая, что advice-remove
нужен либо объект функции, либо совет вокруг (который здесь пуст)?
(Очевидно, я могу просто выйти и перезапустить, но есть другой способ, не так ли?)
eq
предыдущую, (2) advice-remove сравнивает функцию, которую вы передаете, с советами, пока не найдет один, которыйeq
к нему и удалите это, (3) даже если advice-remove использует другой тест, типаequal
, он все равно не будет работать, потому что разные оценки лямбда-формы не будутequal
друг с другом. Оказывается, (1) правильно, но (2) и (3) неверно: извлекаются рекомендации по удалениюequal
, и двойная оценкаlambda
даетequal
результаты!