unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Failing to advice `require'
@ 2012-08-20 15:30 Sebastien Vauban
  2012-08-21  0:12 ` Barry Margolin
  0 siblings, 1 reply; 5+ messages in thread
From: Sebastien Vauban @ 2012-08-20 15:30 UTC (permalink / raw)
  To: help-gnu-emacs-mXXj517/zsQ

Hello,

I tried to advice the require function, in order to get:

- performance information (load time)
- call graph of `require'

with the following code:

--8<---------------cut here---------------start------------->8---
  (defvar my/require-depth 0)

  (defadvice require (around require-around activate)
    "Leave a trace of packages being loaded."
    (let ((feature (ad-get-arg 0))
          (filename (ad-get-arg 1))
          (noerror (ad-get-arg 2))
          (prefix (concat (make-string (* 2 my/require-depth) ? ) "+-> ")))
      (setq my/require-depth (1+ my/require-depth))
      (cond ((featurep feature)
             (message "(info) %sRequiring `%s'... already loaded"
                      prefix feature)
             )
            (t
             (let ((my/time-start))
               (message "(info) %sRequiring `%s'..." prefix feature)
               (setq my/time-start (float-time))
               ad-do-it
               (message "(info) %sRequiring `%s'... %s (loaded in %.2f s)"
                        prefix feature
                        (locate-library (symbol-name feature))
                        (- (float-time) my/time-start))
               )))
      (setq my/require-depth (1- my/require-depth))))
--8<---------------cut here---------------end--------------->8---

It works quite well, except for the following case:

--8<---------------cut here---------------start------------->8---
;; Requiring `auth-source'...
;; (info)  +-> Requiring `password-cache'... d:/home/sva/Downloads/emacs/site-lisp/gnus/lisp/password-cache.elc (loaded in 0.11 s)
;; (info)  +-> Requiring `mm-util'... already loaded
;; (info)  +-> Requiring `gnus-util'... already loaded
;; (info)  +-> Requiring `eieio'... already loaded [2 times]
;; byte-code: eieio not found in `load-path' or gnus-fallback-lib/ directory.
--8<---------------cut here---------------end--------------->8---

Guess what? `eieio' is in my default load path, in my GNU Emacs 24.1.1
(i386-mingw-nt5.1.2600) of 2012-06-02 on MARVIN on Windows XP.

Do you have any idea why it's failing?

Best regards,
  Seb

-- 
Sebastien Vauban


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-08-21 14:01 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-20 15:30 Failing to advice `require' Sebastien Vauban
2012-08-21  0:12 ` Barry Margolin
2012-08-21  7:24   ` Sebastien Vauban
2012-08-21  9:19     ` Sylvain Rousseau
2012-08-21 14:01     ` Barry Margolin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).