Subject: Re: bug#55492: 29.0.50; apropos-documentation with universal argument shows an error

From: Lars Ingebrigtsen <[email-masked]>
Date: Wed, 18 May 2022 01:15:47 +0200

Stefan Monnier <[email-masked]> writes:

> What is the value of `lisp-directory` when you get that error?
> What is the actual "<Path_to_emacs>" printed above?
> Where should Emacs find the `simple.elc` file instead?

lisp-directory
=> "/home/larsi/src/emacs/trunk/lisp/"

<Path_to_emacs> up there is probably a misnomer -- it's just the current
directory.

>> Now, in my Emacs that's been running for a few hours, I instead get:
>>
>> (aref (symbol-function 'kill-current-buffer) 4)
>> => ("/home/larsi/src/emacs/trunk/lisp/simple.elc" . 202401)
>
> I suspect that this is because the `simple.elc` was reloaded for some
> reason, which happens to hide the problem.

Right.  Then perhaps the error is just in:

(apropos-documentation-check-elc-file "simple.elc")

It assumes a full file name, and doesn't look into the load path, which
it could trivially do.

But before I fix that -- is (aref (symbol-function 'kill-current-buffer)
4) supposed to be the full file name or just the leaf name?  I imagined
that #$ was supposed to expand to the full file name...  The manual just
says

‘#$’
     The current file name in byte-compiled files (*note Docs and
     Compilation::).  This is not meant to be used in Emacs Lisp source
     files.

which isn't very precise.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no