bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#74504: 31.0.50; Wrong source directory in *Help*


From: Stefan Monnier
Subject: bug#74504: 31.0.50; Wrong source directory in *Help*
Date: Mon, 25 Nov 2024 18:26:12 -0500
User-agent: Gnus/5.13 (Gnus v5.13)

> 1. Build Emacs
> 2. Run src/emacs -Q
> 3. In the *scratch* buffer say M-x cd /tmp
>    (/tmp here is just an arbitrary directory that is not the Emacs
>    sources directory)
> 4. C-h f make-overlay
>    Now the first line in the *Help* buffer says:
>    "make-overlay is a primitive-function in ‘C source code’."
>    So far so good.
> 5. Switch to the *Help* buffer and type s, this finds buffer.c
> 6. Switch back to the *Help* buffer and type g
>    The first line in *Help* now says:
>    "make-overlay is a primitive-function in ‘/tmp/src/buffer.c’."
>                                              ^^^^^ <-- Wrong!

Hmm... my code assumed the file was always absolute, but apparently
that's not always the case.

The patch below seems to give us back the previous behavior, but maybe
we should change some other part of the code so
`help-fns-short-filename` is not used at all for the C sources (since
it's specifically trying to give a name relative to `load-path`, which
is nonsensical for our C files).


        Stefan


diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index c87c86bae84..266cf8eb4a9 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -1052,7 +1052,8 @@ help-fns--radix-trees
   "Cache of radix-tree representation of `load-path'.")
 
 (defun help-fns--filename (file)
-  (let ((f (abbreviate-file-name (expand-file-name file))))
+  (let ((f (abbreviate-file-name
+            (if (file-name-absolute-p file) (expand-file-name file) file))))
     (if (file-name-case-insensitive-p f) (downcase f) f)))
 
 (defun help-fns--radix-tree (dirs)






reply via email to

[Prev in Thread] Current Thread [Next in Thread]