The function `find-function' fails to find functions which have been
dumped into the executable:
mfabian@blackwell:~$ xemacs -q -vanilla -batch --eval "(find-function
'fill-paragraph)"
The library "/usr/src/packages/BUILD/xemacs-21.4.4/lisp/fill" is not in the
path.
xemacs exiting
.
mfabian@blackwell:~$
it looks like during dumping, the path to these functions in the
directory where XEmacs has been build has been written into the
executable:
mfabian@blackwell:~$ strings /usr/X11R6/bin/xemacs | grep BUILD | grep fill
/usr/src/packages/BUILD/xemacs-21.4.4/lisp/fill.elc
mfabian@blackwell:~$
When this directory is removed later, XEmacs still searches there and
not in the directory where the files have been
installed. `find-function' works fine for all functions which have not
been dumped, it fails only for the ones dumped into the executable.
As a workaround I tried to dump XEmacs again at the final location:
mkdir -p /usr/share/xemacs/21.4.4/src
mkdir -p /usr/share/xemacs/21.4.4/lib-src
cp /usr/lib/xemacs/21.4.4/i386-suse-linux/DOC /usr/share/xemacs/21.4.4/lib-src/
cp /usr/src/packages/BUILD/xemacs-21.4.4/src/temacs /usr/share/xemacs/21.4.4/src/
cp /usr/src/packages/BUILD/xemacs-21.4.4/Installation /usr/share/xemacs/21.4.4/
cd /usr/share/xemacs/21.4.4/src/
./temacs -nd -batch -l ../lisp/loadup.el dump
Loading ../lisp/loadup.el...
Using load-path (/usr/share/xemacs/21.4.4/lisp)
Using module-load-path (/usr/share/xemacs/21.4.4/modules)
Loading very-early-lisp...
Loading /usr/share/xemacs/21.4.4/lisp/dumped-lisp.el...
Loading /usr/share/xemacs/21.4.4/lisp/backquote.elc...
[...]
Loading /usr/share/xemacs/21.4.4/lisp/loadhist.elc...
Loading /usr/share/xemacs/21.4.4/lisp/loaddefs.elc...
Loading site-load...
Loading site-wide packages for dumping...
Loading site-wide packages for dumping...done
Loading disp-table...
Loading site-load ...done
Finding pointers to doc strings...
Finding pointers to doc strings...done
Warning: doc lost for function standard-display-european.
Warning: doc lost for function standard-display-underline.
Warning: doc lost for function standard-display-8bit.
Warning: doc lost for function standard-display-graphic.
Warning: doc lost for function standard-display-ascii.
Warning: doc lost for function make-display-table.
Warning: doc lost for function describe-current-display-table.
Warning: doc lost for function standard-display-default.
Warning: doc lost for function describe-display-table.
Warning: doc lost for function standard-display-g1.
This is usually because some files were preloaded by loaddefs.el or
site-load.el, but were not passed to make-docfile by Makefile.
Loading site-init...
Dumping under the name xemacs
This does indeed remove the above problem, `find-function' now
finds dumped functions like `fill-paragraph' as well. But as can
be seen above, there were warnings about lost doc-strings during
my try to dump again and indeed,
`M-x describe-function <function>'
doesn't show the doc-string of the functions mentioned in
the above warnings any more. I.e. I certainly did something
wrong when trying to dump XEmacs again.
Probably dumping XEmacs again isn't the right strategy to remove
the hard coded paths to the original source directory anyway.
At best this is a silly workaround. Probably I am doing something
seriously wrong.
Do you have any idea how to enable `find-function' to still find
dumped functions like `fill-paragraph' even if the directory where
XEmacs has been built is removed? There must be a `correct' way
to do this.
--
Mike Fabian <mfabian(a)suse.de>
http://www.suse.de/~mfabian
睡眠不足はいい仕事の敵だ。