Package: emacs;
Reported by: Ivan Kanis <gnu <at> kanis.fr>
Date: Sun, 5 Jun 2011 18:21:01 UTC
Severity: minor
Found in version 23.3
Done: Stefan Monnier <monnier <at> iro.umontreal.ca>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 8803 in the body.
You can then email your comments to 8803 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8803
; Package emacs
.
(Sun, 05 Jun 2011 18:21:01 GMT) Full text and rfc822 format available.Ivan Kanis <gnu <at> kanis.fr>
:bug-gnu-emacs <at> gnu.org
.
(Sun, 05 Jun 2011 18:21:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Ivan Kanis <gnu <at> kanis.fr> To: bug-gnu-emacs <at> gnu.org Subject: 23.3; backtrace should use find-function-source-path to find source Date: Sun, 05 Jun 2011 18:26:28 +0200
1 - create directory ~/source and ~/compile 2 - create the file ~/source/foo.el with the following content: (defun foo () (interactive) (error "foo")) (setq find-function-source-path (list (expand-file-name "~/source"))) (setq debug-on-error t) ;;;; eval the following two expressions ;; (setq load-path (cons (expand-file-name "~/compile") load-path)) ;; (require 'foo)) (provide 'foo) 3 - M-x byte-compile-file 4 - move ~/source foo.elc to ~/compile 5 - in foo.el evaluate the two lines in comment (C-x C-e) 6 - M-x foo should show a backtrace 7 - on the backtrace click on foo You should get the following error: find-library-name: Can't find library /home/ubuntu/compile/foo.el I expect emacs to load foo.el since find-function-source-path is defined. The following trivial patch fixes the problem: --- find-func.el 2011-06-05 18:23:48.097558000 +0200 +++ find-func-ivan.el 2011-06-05 18:24:18.141247000 +0200 @@ -156,6 +156,9 @@ (locate-file library (or find-function-source-path load-path) load-file-rep-suffixes) + (locate-file (file-name-sans-extension (file-name-nondirectory library)) + (or find-function-source-path load-path) + (find-library-suffixes)) (error "Can't find library %s" library))) (defvar find-function-C-source-directory In GNU Emacs 23.3.2 (i686-pc-linux-gnu, GTK+ Version 2.22.0) of 2011-03-16 on tao Windowing system distributor `The X.Org Foundation', version 11.0.10900000 configured using `configure '--prefix=/home/ubuntu/emacs'' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: fr_FR.UTF-8 value of $XMODIFIERS: nil locale-coding-system: utf-8-unix default enable-multibyte-characters: t Major mode: Compilation Minor modes in effect: erc-track-mode: t erc-track-minor-mode: t tracking-mode: t erc-ring-mode: t erc-netsplit-mode: t erc-match-mode: t erc-pcomplete-mode: t erc-button-mode: t erc-fill-mode: t erc-stamp-mode: t erc-autojoin-mode: t erc-spelling-mode: t erc-irccontrols-mode: t erc-noncommands-mode: t erc-scrolltobottom-mode: t diff-auto-refine-mode: t shell-dirtrack-mode: t icomplete-mode: t global-auto-complete-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t Recent input: ) <backspace> C-x C-s <up> <up> <up> <left> <left> <left> <left> <backspace> <backspace> w h e n C-n <tab> C-n <tab> C-n <tab> C-e C-x C-s C-/ C-/ C-/ C-/ C-/ C-a C-k <tab> C-n <tab> C-n <tab> C-n <return> ( p r o v i d e SPC ' f o o ) C-x C-s M-x <up> <return> <return> C-p C-p C-e <backspace> M-x <up> <return> <return> y M-i s M-p M-p <return> C-x b f o <return> <left> <left> <left> <left> <left> <left> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> r e u q <backspace> <backspace> q u i r e SPC C-e <left> <left> <left> <left> <left> <left> ' <right> <right> <right> <right> <right> <right> <backspace> <backspace> <backspace> ) ) C-x C-s M-x <up> <return> <return> <up> <up> C-a ; ; SPC <down> <up> C-k <down> <up> e v a l SPC t h e SPC f o l l o w i n g SPC t o <backspace> w o SPC s e <backspace> <backspace> e x p r e s s i o n s C-n <tab> C-n <tab> C-a <up> <up> ; ; <down> <left> <left> ; ; SPC <down> <left> <left> <left> ; ; SPC C-x C-s M-i s M-p M-p <return> <insert> M-x c o m p i <tab> e C-g C-x b f o <return> M-x <up> <return> <return> M-i s M-p M-p <return> M-k p p <help-echo> <help-echo> <help-echo> M-x C-g M-x b u g - C-g M-x r e p o <tab> r t <tab> b u g <return> C-g C-o M-x b u g - r e p <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> r e p o <tab> r t - e m a <tab> b u g <return> Recent messages: Quit Compiling /home/ubuntu/source/foo.el...done Wrote /home/ubuntu/source/foo.elc History item: 1 History item: 2 Quit [2 times] Making completion list... Quit Making completion list... Load-path shadows: /home/ubuntu/compile/foo hides ~/tmp/foo /home/ubuntu/.emacs.d/misc/whitespace hides /home/ubuntu/emacs/share/emacs/23.3/lisp/whitespace /home/ubuntu/.emacs.d/misc/time hides /home/ubuntu/emacs/share/emacs/23.3/lisp/time /home/ubuntu/.emacs.d/org/org-publish hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-publish /home/ubuntu/.emacs.d/org/org-latex hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-latex /home/ubuntu/.emacs.d/org/org-gnus hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-gnus /home/ubuntu/.emacs.d/org/org-compat hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-compat /home/ubuntu/.emacs.d/org/org-jsinfo hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-jsinfo /home/ubuntu/.emacs.d/org/org-irc hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-irc /home/ubuntu/.emacs.d/org/org-install hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-install /home/ubuntu/.emacs.d/org/org-inlinetask hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-inlinetask /home/ubuntu/.emacs.d/org/org-info hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-info /home/ubuntu/.emacs.d/org/org-indent hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-indent /home/ubuntu/.emacs.d/org/org-id hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-id /home/ubuntu/.emacs.d/org/org-icalendar hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-icalendar /home/ubuntu/.emacs.d/org/org-html hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-html /home/ubuntu/.emacs.d/org/org-habit hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-habit /home/ubuntu/.emacs.d/org/org hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org /home/ubuntu/.emacs.d/org/org-xoxo hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-xoxo /home/ubuntu/.emacs.d/org/org-wl hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-wl /home/ubuntu/.emacs.d/org/org-w3m hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-w3m /home/ubuntu/.emacs.d/org/org-vm hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-vm /home/ubuntu/.emacs.d/org/org-timer hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-timer /home/ubuntu/.emacs.d/org/org-table hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-table /home/ubuntu/.emacs.d/org/org-src hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-src /home/ubuntu/.emacs.d/org/org-rmail hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-rmail /home/ubuntu/.emacs.d/org/org-remember hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-remember /home/ubuntu/.emacs.d/org/org-protocol hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-protocol /home/ubuntu/.emacs.d/org/org-plot hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-plot /home/ubuntu/.emacs.d/org/org-mouse hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-mouse /home/ubuntu/.emacs.d/org/org-mobile hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-mobile /home/ubuntu/.emacs.d/org/org-mhe hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-mhe /home/ubuntu/.emacs.d/org/org-mew hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-mew /home/ubuntu/.emacs.d/org/org-macs hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-macs /home/ubuntu/.emacs.d/org/org-mac-message hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-mac-message /home/ubuntu/.emacs.d/org/org-list hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-list /home/ubuntu/.emacs.d/org/org-freemind hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-freemind /home/ubuntu/.emacs.d/org/org-footnote hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-footnote /home/ubuntu/.emacs.d/org/org-feed hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-feed /home/ubuntu/.emacs.d/org/org-faces hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-faces /home/ubuntu/.emacs.d/org/org-exp hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-exp /home/ubuntu/.emacs.d/org/org-exp-blocks hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-exp-blocks /home/ubuntu/.emacs.d/org/org-docbook hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-docbook /home/ubuntu/.emacs.d/org/org-datetree hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-datetree /home/ubuntu/.emacs.d/org/org-crypt hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-crypt /home/ubuntu/.emacs.d/org/org-colview hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-colview /home/ubuntu/.emacs.d/org/org-clock hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-clock /home/ubuntu/.emacs.d/org/org-bibtex hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-bibtex /home/ubuntu/.emacs.d/org/org-bbdb hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-bbdb /home/ubuntu/.emacs.d/org/org-attach hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-attach /home/ubuntu/.emacs.d/org/org-ascii hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-ascii /home/ubuntu/.emacs.d/org/org-archive hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-archive /home/ubuntu/.emacs.d/org/org-agenda hides /home/ubuntu/emacs/share/emacs/23.3/lisp/org/org-agenda /home/ubuntu/.emacs.d/misc/erc-goodies hides /home/ubuntu/emacs/share/emacs/23.3/lisp/erc/erc-goodies /home/ubuntu/.emacs.d/emms/tq hides /home/ubuntu/emacs/share/emacs/23.3/lisp/emacs-lisp/tq /home/ubuntu/.emacs.d/misc/appt hides /home/ubuntu/emacs/share/emacs/23.3/lisp/calendar/appt /home/ubuntu/.emacs.d/misc/sym-comp hides /home/ubuntu/emacs/share/emacs/23.3/lisp/obsolete/sym-comp Features: (shadow guess-lang emacsbug make-mode log-view ibuf-ext ibuffer ffap etags descr-text info cc-mode cc-fonts cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs cl-specs edebug appt diary-lib diary-loaddefs smiley gnus-async gnus-bcklg gnus-dup gnus-ml disp-table gnus-topic parse-time tls pop3 nnml nndraft nnmh bbdb-gnus bbdb-snarf mail-extr auth-source gnus-agent gnus-srvr gnus-score score-mode nnvirtual nntp gnus-cache gnus-cite cookie1 gnus-fun gnus-msg gnus-art mm-uu mml2015 epg-config mm-view smime dig gnus-sum nnoo gnus-group gnus-undo nnmail mail-source gnus-start gnus-spec gnus-int gnus-range gnus-win message ecomplete rfc822 mml mml-sec password-cache mm-decode mm-bodies mm-encode mailcap mail-parse rfc2231 rfc2047 rfc2045 qp ietf-drums gmm-utils mailheader canlock hashcash gnus gnus-ems nnheader gnus-util netrc mail-utils bbdb-gui bbdb-picture bbdb-com mailabbrev bbdb bookmark org-capture org-mks newcomment w3m-form w3m-symbol w3m-bookmark w3m-tabmenu w3m-session w3m-search w3m doc-view jka-compr image-mode timezone w3m-hist w3m-fb w3m-ems w3m-ccl ccl w3m-favicon w3m-image w3m-proc w3m-util org-wl org-w3m org-vm org-rmail org-mhe org-mew org-irc org-jsinfo org-infojs org-html org-exp ob-exp org-exp-blocks org-agenda org-info org-gnus org-docview org-bibtex org-bbdb org byte-opt bytecomp byte-compile ob-emacs-lisp ob-keys ob-comint ob-tangle ob-ref ob-lob ob-table ob org-footnote org-src org-list org-faces org-compat org-entities org-macs japan-util kkc ja-dic-utl erc-track garak notify dbus-util assoc dbus xml tree-widget elim warnings browse-url cl cl-19 lui tracking incomplete erc-ring erc-netsplit erc-match erc-pcomplete pcomplete erc-button erc-fill erc-stamp erc-join erc-spelling flyspell ispell erc-goodies erc erc-backend erc-compat pp gnus-dired log-edit pcvs-util add-log diff-mode vc-git vc-bzr sha1 hex-util vc-sccs vc-svn vc-cvs vc-rcs vc-dir ewoc vc vc-dispatcher dirtrack ansi-color shell mule-util tabify vc-hg autoinsert noutline outline debug thingatpt find-func icomplete emms-player-mplayer emms-player-simple url-util url-parse url-vars mm-util mail-prsvr format-spec emms-mark emms-info-mp3info emms-tag-editor emms-setup emms-browser sort emms-playlist-sort emms-score emms-cache emms-info later-do emms-playlist-mode emms-source-playlist emms-source-file emms emms-compat swbuff multi-isearch ido uniquify advice advice-preload paren eldoc help-fns init xcscope ivan-w3m ivan-term ivan-slime ivan-re-builder quail help-mode view ivan-org ivan-newsticker ivan-muse ivan-message ivan-japanese ivan-gnus grep compile comint ivan-french easy-mmode ivan-english ivan-emms ivan-elim dired-x dired-aux dired ivan-comint cal-iso cal-menu calendar cal-loaddefs bs ivan-bbdb ivan-anki tex-site ring caps-mode ivan-common-code auto-complete-config auto-complete popup regexp-opt rx cus-edit easymenu cus-start cus-load wid-edit ivan-var ivan-keymap edmacro kmacro ivan-fun ivan-face ivan-load time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd font-setting tool-bar dnd fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar mldrag mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev loaddefs button minibuffer faces cus-face files text-properties overlay md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process dbusbind font-render-setting gtk x-toolkit x multi-tty emacs) -- Ivan Kanis http://kanis.fr Life is not about finding our limitations, it's about finding our infinity. -- Herbie Hancock
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8803
; Package emacs
.
(Mon, 20 Jun 2011 20:58:02 GMT) Full text and rfc822 format available.Message #8 received at 8803 <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: Ivan Kanis <gnu <at> kanis.fr> Cc: 8803 <at> debbugs.gnu.org Subject: Re: bug#8803: 23.3; backtrace should use find-function-source-path to find source Date: Mon, 20 Jun 2011 16:57:24 -0400
> find-library-name: Can't find library /home/ubuntu/compile/foo.el > I expect emacs to load foo.el since find-function-source-path is > defined. The problem here is that we use an absolute file name, rather than a relative one. > @@ -156,6 +156,9 @@ > (locate-file library > (or find-function-source-path load-path) > load-file-rep-suffixes) > + (locate-file (file-name-sans-extension (file-name-nondirectory library)) > + (or find-function-source-path load-path) > + (find-library-suffixes)) > (error "Can't find library %s" library))) But this will still fail for files such as Semantic's which are placed in subdirectories (e.g. loaded with (require 'foo/bar)). We really need to record both the absolute file name and the relative file name so that find-library-name can try both. In the mean time, does the patch below work for you? Stefan === modified file 'lisp/emacs-lisp/find-func.el' --- lisp/emacs-lisp/find-func.el 2011-01-25 04:08:28 +0000 +++ lisp/emacs-lisp/find-func.el 2011-06-20 20:55:50 +0000 @@ -141,6 +141,15 @@ (dolist (suffix (get-load-suffixes) (nreverse suffixes)) (unless (string-match "elc" suffix) (push suffix suffixes))))) +(defun find-library--load-name (library) + (let ((name library)) + (dolist (dir load-path) + (let ((rel (file-relative-name library dir))) + (if (and (not (string-match "\\`\\.\\./" rel)) + (< (length rel) (length name))) + (setq name rel)))) + (unless (equal name library) name))) + (defun find-library-name (library) "Return the absolute file name of the Emacs Lisp source of LIBRARY. LIBRARY should be a string (the name of the library)." @@ -155,6 +164,16 @@ (locate-file library (or find-function-source-path load-path) load-file-rep-suffixes) + (when (file-name-absolute-p library) + (let ((rel (find-library--load-name library))) + (when rel + (or + (locate-file rel + (or find-function-source-path load-path) + (find-library-suffixes)) + (locate-file rel + (or find-function-source-path load-path) + load-file-rep-suffixes))))) (error "Can't find library %s" library))) (defvar find-function-C-source-directory
Stefan Monnier <monnier <at> iro.umontreal.ca>
:Ivan Kanis <gnu <at> kanis.fr>
:Message #13 received at 8803-done <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: Ivan Kanis <gnu <at> kanis.fr> Cc: 8803-done <at> debbugs.gnu.org Subject: Re: bug#8803: 23.3; backtrace should use find-function-source-path to find source Date: Thu, 30 Jun 2011 23:15:59 -0400
> In the mean time, does the patch below work for you? I installed it and assume it's fixed. Please reopen the bug if not. Stefan
Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Fri, 29 Jul 2011 11:24:03 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.