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 ?
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))))))
edebug-instrument-function
zeigt, 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 vonedebug-remove-all-instrumentation
evals nicht instrumentierte Funktionen, sofern diese zuvor instrumentiert wurden.Antworten:
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:
quelle