[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#64143: 29.0.60; find-function-search-for-symbol truncates library pa
From: |
Troy Brown |
Subject: |
bug#64143: 29.0.60; find-function-search-for-symbol truncates library path |
Date: |
Sun, 18 Jun 2023 00:45:12 -0400 |
When user-emacs-directory contains "emacs.el" in it's path (e.g.,
"~/.emacs.elpa"), which is much easier these days with the availability
of --init-directory, the find-function-search-for-symbol truncates the
library path after "emacs".
I was experimenting with a different user directory (i.e.,
"--init-directory=~/.emacs.elpa") and was surprised to find out that the
Help system was breaking when using this path. When looking up a symbol
in the Help system (e.g., "C-h f company-mode RET") and then attempting
to visit the source file from the help window (i.e., help-view-source),
if the symbol belongs to an installed package (where the source is
under the "elpa" directory beneath user-emacs-directory), it will
generate the following error message:
Can't find library: /home/troy/.emacs
Toggling "debug-on-error" and repeating the above, I can generate a
backtrace for this as follows:
Debugger entered--Lisp error: (file-error "Can't find library"
"/home/troy/.emacs")
find-library-name("/home/troy/.emacs")
#<subr find-function-search-for-symbol>(company-mode nil
"/home/troy/.emacs.elpa/elpa/company-20230416.2034/company.el")
ad-Advice-find-function-search-for-symbol(#<subr
find-function-search-for-symbol> company-mode nil
"/home/troy/.emacs.elpa/elpa/company-20230416.2034/company.el")
apply(ad-Advice-find-function-search-for-symbol #<subr
find-function-search-for-symbol> (company-mode nil
"/home/troy/.emacs.elpa/elpa/company-20230416.2034/company.el"))
find-function-search-for-symbol(company-mode nil
"/home/troy/.emacs.elpa/elpa/company-20230416.2034/company.el")
help-function-def--button-function(company-mode
"/home/troy/.emacs.elpa/elpa/company-20230416.2034/company.el" nil)
help-view-source()
funcall-interactively(help-view-source)
call-interactively(help-view-source nil nil)
command-execute(help-view-source)
I believe the following snippet of code in
find-function-search-for-symbol is to blame for this:
(when (string-match "\\.emacs\\(.el\\)" library)
(setq library (substring library 0 (match-beginning 1))))
The regex likely should be improved to only match .emacs or .emacs.el at
the end of the path, not in the middle of it.
- bug#64143: 29.0.60; find-function-search-for-symbol truncates library path,
Troy Brown <=