--- /dev/null
+(define-module (lang elisp internals trace)
+ #:export (trc trc-syms trc-all trc-none))
+
+(define *syms* #f)
+
+(define (trc-syms . syms)
+ (set! *syms* syms))
+
+(define (trc-all)
+ (set! *syms* #f))
+
+(define (trc-none)
+ (set! *syms* '()))
+
+(define (trc . args)
+ (let ((sym (car args))
+ (args (cdr args)))
+ (if (or (and *syms*
+ (memq sym *syms*))
+ (not *syms*))
+ (begin
+ (write sym)
+ (display ": ")
+ (write args)
+ (newline)))))
+
+;; Default to no tracing.
+(trc-none)