Borrar / eliminar todos los puntos de interrupción

7

¿Existe un mecanismo para borrar todos los puntos de interrupción (eliminar la instrumentación en masa) para evitar la necesidad de ejecutar manualmente eval-defunla definición de cada función instrumentada?

ebpa
fuente
3
El código de edebug-instrument-functionmuestra que la función no está instrumentada si (get symbol 'edebug)es un marcador y la función está instrumentada si (get symbol 'edebug)es una desventaja. Actualmente, su versión de edebug-remove-all-instrumentationevals defuns de funciones no instrumentadas si se han instrumentado antes.
Tobias
@Tobias ¡Gracias por la observación! He actualizado la función.
ebpa

Respuestas:

5

El consenso parece ser que no existe tal función incorporada.

Como los datos de instrumentación de edebug se almacenan en los símbolos de destino, he estado utilizando la siguiente función básica:

(defun ebpa/edebug-remove-all-instrumentation ()
  "Remove all edebug instrumentation by visiting each function
definition and running `eval-defun`."
  (interactive)
  (mapatoms
   (lambda (symbol)
     (when-let (pos (car-safe (get symbol 'edebug)))
       (with-current-buffer (marker-buffer pos)
         (goto-char (marker-position pos))
         (eval-defun nil))))))
ebpa
fuente