unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: "Štěpán Němec" <stepnem@gmail.com>
To: Stefan Monnier <monnier@IRO.UMontreal.CA>
Cc: 6716@debbugs.gnu.org
Subject: bug#6716: 23.2; Setting `find-function-source-path' has no effect.
Date: Mon, 26 Jul 2010 06:17:34 +0200	[thread overview]
Message-ID: <87zkxeev1d.fsf@gmail.com> (raw)
In-Reply-To: <jwvy6czceoq.fsf-monnier+emacs@gnu.org> (Stefan Monnier's message of "Mon, 26 Jul 2010 01:45:13 +0200")

Stefan Monnier <monnier@IRO.UMontreal.CA> writes:

>> Because `find-library-name' receives as its LIBRARY argument the full
>> path, but doesn't strip the directory part, setting
>> `find-function-source-path' has no effect on symbol finding -- Emacs
>> still tries the path guessed according to load path (which is not
>> correct in case you have the Elisp sources in directory different from
>> the compiled files).
>
> The file name has been changed to a full absolute name to avoid showing
> the wrong file when there's some shadowing going on.  So your patch
> would re-introduce this problem.

I don't think I understand -- setting `f-f-s-p' should provide means to
override the normal load-path search. I don't care if the source I jump
to is really "equivalent" to the version I have loaded (it might not be
anyway -- the symbol definition is often loaded from a byte-compiled file,
whereas the equivalent source file could have been changed since then).
The only thing I care about is to jump to the/a source *I want* (that's
why I set `f-f-s-p') for a symbol I search for. The current behaviour
is broken for any purpose I can think of (other than when the absolute
path is right, which is normally never the case with `f-f-s-p' set).

When you look at the current `find-library-name' definition, it's
_obviously_ wrong to pass an absolute file name to it. It just makes no
sense.

> Also, it may not work for files that were loaded as "foo/bar".  I think
> the load-history needs to be changed to keep track of both the absolute
> file name and the name used to load the file
> (i.e. "/bla/bla/foo/bar.elc" and "foo/bar").  Then in
> find-function-source-path we will first try for /bla/bla/foo/bar.el and
> when that fails we can fall back on searching for foo/bar.el.

I assume you meant `find-library-name', not `find-function-source-path'
in the last sentence.

I don't know if my fix is the best way to do it, but it fixes the bug
for me now and from your reply I'm not able to understand why it should
not be installed (for now, at least) or what concrete alternatives you
suggest (changing `load-history' implementation does not sound like
something that would be done any time soon -- or are you (or anybody)
going to do it?).


  Štěpán

>
>
>         Stefan
>
>
>> This simple change seems to fix it for me:
>
>> diff --git a/lisp/emacs-lisp/find-func.el b/lisp/emacs-lisp/find-func.el
>> index 216d91b..f704c63 100644
>> --- a/lisp/emacs-lisp/find-func.el
>> +++ b/lisp/emacs-lisp/find-func.el
>> @@ -150,10 +150,10 @@ (defun find-library-name (library)
>>    (if (string-match "\\.el\\(c\\(\\..*\\)?\\)\\'" library)
>>        (setq library (replace-match "" t t library)))
>>    (or 
>> -   (locate-file library
>> +   (locate-file (file-name-nondirectory library)
>>  		(or find-function-source-path load-path)
>>  		(find-library-suffixes))
>> -   (locate-file library
>> +   (locate-file (file-name-nondirectory library)
>>  		(or find-function-source-path load-path)
>>  		load-file-rep-suffixes)
>>     (error "Can't find library %s" library)))
>
>
>> Regards,
>
>>   Štěpán





  reply	other threads:[~2010-07-26  4:17 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-24 11:56 bug#6716: 23.2; Setting `find-function-source-path' has no effect Štěpán Němec
2010-07-25 23:45 ` Stefan Monnier
2010-07-26  4:17   ` Štěpán Němec [this message]
2010-07-26  4:51     ` Štěpán Němec
2010-07-26 10:23     ` Stefan Monnier
2010-07-26 11:20       ` Štěpán Němec
2010-07-26 21:44         ` Stefan Monnier
2010-07-27 10:07           ` Štěpán Němec
2010-07-27 11:57             ` Stefan Monnier
2010-07-26 21:40 ` MON KEY
2010-07-27  9:39   ` Štěpán Němec
2010-07-28  1:38     ` MON KEY
2022-02-13 10:02 ` Lars Ingebrigtsen
2022-02-15 14:50   ` Štěpán Němec
2022-02-17 11:33     ` Lars Ingebrigtsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87zkxeev1d.fsf@gmail.com \
    --to=stepnem@gmail.com \
    --cc=6716@debbugs.gnu.org \
    --cc=monnier@IRO.UMontreal.CA \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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).