Мені було весело, додаючи поради до функції:
(advice-add 'executable-find :around
(lambda (f &rest args)
(apply g args)))
;;; ^
О, друкарська справа. Виправлено і знову оцінено вищезгаданий код. Але тепер у мене є обидві, "виправлені" і "зламані" поради навколо цієї функції.
Як я можу позбутися від них? Враховуючи, що advice-removeпотрібен або об’єкт функції, або поради навколо (який тут порожній)?
(Очевидно, що я можу просто кинути і перезапустити, але є інший спосіб, чи не так?)
eqпопередню, (2) порада-видалення порівнюватиме функцію, яку ви передаєте її порадам, поки не знайде той, який єeqйому, і видаліть це (3), навіть якщо порада для видалення використовувала інший тест, як-отequal, він все одно не буде працювати, оскільки різні оцінки лямбда-форми не будутьequalміж собою. Виявляється, що (1) є правильним, але (2) та (3) помиляються: поради щодо видалення використанняequalта оцінювання одного і того жlambdaдвічі даютьequalрезультати!