Function: edebug--strip-instrumentation

edebug--strip-instrumentation is a byte-compiled function defined in edebug.el.gz.

Signature

(edebug--strip-instrumentation FRAMES)

Documentation

Return a new list of backtrace frames with instrumentation removed.

Remove frames for Edebug's functions and the lambdas in edebug-enter wrappers. Fill in the def-name, before-index and after-index fields in both FRAMES and the returned list of deinstrumented frames, for those frames where the source code location is known.

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/edebug.el.gz
(defun edebug--strip-instrumentation (frames)
  "Return a new list of backtrace frames with instrumentation removed.
Remove frames for Edebug's functions and the lambdas in
`edebug-enter' wrappers.  Fill in the def-name, before-index
and after-index fields in both FRAMES and the returned list
of deinstrumented frames, for those frames where the source
code location is known."
  (let (skip-next-lambda def-name before-index after-index results
        (index (length frames)))
    (dolist (frame (reverse frames))
      (let ((new-frame (copy-edebug--frame frame))
            (fun (edebug--frame-fun frame))
            (args (edebug--frame-args frame)))
        (cl-decf index)
        (pcase fun
          ('edebug-enter
	   (setq skip-next-lambda t
                 def-name (nth 0 args)))
          ('edebug-after
           (setq before-index (if (consp (nth 0 args))
                                  (nth 1 (nth 0 args))
                                (nth 0 args))
                 after-index (nth 1 args)))
          ((pred edebug--symbol-not-prefixed-p)
           (edebug--unwrap-frame new-frame)
           (edebug--add-source-info new-frame def-name before-index after-index)
           (edebug--add-source-info frame def-name before-index after-index)
           (push new-frame results)
           (setq before-index nil
                 after-index nil))
          (`(,(or 'lambda 'closure) . ,_)
	   (unless skip-next-lambda
             (edebug--unwrap-frame new-frame)
             (edebug--add-source-info frame def-name before-index after-index)
             (edebug--add-source-info new-frame def-name before-index after-index)
             (push new-frame results))
	   (setq before-index nil
                 after-index nil
                 skip-next-lambda nil)))))
    results))