Löschen / Entfernen aller Haltepunkte

7

Gibt es einen Mechanismus zum Löschen aller Haltepunkte (massenweise Instrumentierung entfernen), um zu vermeiden, dass eval-defundie Definition der einzelnen instrumentierten Funktionen manuell ausgeführt werden muss ?

ebpa
quelle
3
Der Code von edebug-instrument-functionzeigt, dass die Funktion nicht instrumentiert ist, wenn (get symbol 'edebug)es sich um einen Marker handelt, und dass die Funktion instrumentiert ist, wenn (get symbol 'edebug)es sich um einen Nachteil handelt. Derzeit enthält Ihre Version von edebug-remove-all-instrumentationevals nicht instrumentierte Funktionen, sofern diese zuvor instrumentiert wurden.
Tobias
@Tobias Danke für die Beobachtung! Ich habe die Funktion aktualisiert.
Ebpa

Antworten:

5

Es scheint Konsens darüber zu bestehen, dass keine solche Funktion eingebaut ist.

Da edebug-Instrumentierungsdaten auf den Zielsymbolen gespeichert sind, verwende ich die folgende Grundfunktion:

(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
quelle