GNU bug report logs -
#1343
[PATCH] trace package
Previous Next
Full log
View this message in rfc822 format
Severity: wishlist
Tags: patch
[ resent from
http://lists.gnu.org/archive/html/emacs-devel/2008-11/msg00347.html ]
trace.el has functions trace-function and trace-function-background,
which allows to add function or macro for tracing. Sometimes it is
useful to trace a bunch of functions in one package, like it is done
in elp.el (Emacs Lisp Profiler), but trace.el lacks this
facility. This patch introduces 3 functions to help with package
tracing: trace-package, trace-package-background and untrace-package.
Index: lisp/emacs-lisp/trace.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/emacs-lisp/trace.el,v
retrieving revision 1.22
diff -p -u -w -r1.22 trace.el
--- lisp/emacs-lisp/trace.el 10 Jun 2008 16:08:46 -0000 1.22
+++ lisp/emacs-lisp/trace.el 10 Nov 2008 19:40:37 -0000
@@ -153,6 +153,7 @@
;;; Code:
(require 'advice)
+(require 'cl)
(defgroup trace nil
"Tracing facility for Emacs Lisp functions."
@@ -297,6 +298,37 @@ was not traced this is a noop."
(ad-do-advised-functions (function)
(untrace-function function)))
+(macrolet ((defun-trace-package (name background doc)
+ `(defun ,name (prefix &optional buffer)
+ ,doc
+ (interactive
+ (list
+ (completing-read "Prefix of package to trace: " obarray)
+ (read-buffer "Output to buffer: " trace-buffer)))
+ (if (zerop (length prefix))
+ (error "Tracing all Emacs functions would render Emacs unusable"))
+ (dolist (fun (mapcar 'intern (all-completions prefix obarray 'fboundp t)))
+ (trace-function-internal fun buffer ,background)))))
+ (defun-trace-package trace-package nil
+ "Traces all functions which start with PREFIX. Trace output going to BUFFER.
+For example, to trace all TRACE functions, do the following:
+
+ \\[trace-package] RET trace- RET")
+ (defun-trace-package trace-package-background t
+ "Traces all functions which start with PREFIX. Trace output going quietly
+to BUFFER. For example, to trace all TRACE functions, do the following:
+
+ \\[trace-package] RET trace- RET"))
+
+(defun untrace-package (prefix)
+ "Untraces all functions which start with PREFIX, and possibly activates
+all remaining advice."
+ (interactive
+ (list
+ (completing-read "Prefix of package to untrace: " obarray)))
+ (dolist (fun (mapcar 'intern (all-completions prefix obarray 'trace-is-traced t)))
+ (untrace-function fun)))
+
(provide 'trace)
;; arch-tag: cfd170a7-4932-4331-8c8b-b7151942e5a1
--
wbr, Vitaly
This bug report was last modified 2 years and 274 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.