Gibt es einen Mechanismus zum Löschen aller Haltepunkte (massenweise Instrumentierung entfernen), um zu vermeiden, dass eval-defun
die Definition der einzelnen instrumentierten Funktionen manuell ausgeführt werden muss ?
Gibt es einen Mechanismus zum Löschen aller Haltepunkte (massenweise Instrumentierung entfernen), um zu vermeiden, dass eval-defun
die Definition der einzelnen instrumentierten Funktionen manuell ausgeführt werden muss ?
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:
(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.