Red Hat Bugzilla – Bug 41976
XEmacs can't be quitted after visiting an Info node below the root
Last modified: 2007-04-18 12:33:23 EDT
Description of Problem:
After visiting any info node other than the info directory, you can't quit XEmacs
(except by killing the process),
Steps to Reproduce:
1. Start xemacs
2. Type C-h i to get into the info browser
3. Select any node
4. Type C-x C-c to quit Emacs.
It won't quit at this stage, but gives an error.
It should quit.
Exactly what error do you get? I have no problems here...
I get "wrong argument type: stringp, nil"
I just found that I need the following minimal .emacs to get the problem:
'(fast-lock-mode t nil (fast-lock)))
This can be auto-generated from M-x customize fast-lock, by switching fast-lock
to on, so it's not just my elisp hackery!
It still doesn't happen here (with a .emacs file containing only the lines above).
Well, it happens to me with such a .emacs file (only those two lines) on two
different machines running RH 7.1. In case you're not copying me *exactly*, try:
1. Start XEmacs with the above .emacs file.
2. C-h i to start info
3. Visit the AUCTeX node (for me that's the first one in the menu).
4. Press C-x C-c.
That's what gets me the error I reported. If I remove the setting from my full
.emacs file, or start XEmacs without a .emacs file, I don't get the problem.
The exact xemacs packages and versions I have are:
OK, I can reproduce it now. It doesn't happen for root...
Here is the traceback:
Signaling: (wrong-type-argument stringp nil)
mapcar(fast-lock-save-cache (#<buffer "*info*"> #<buffer "*scratch*"> #<buffer
" *Minibuf-0*"> #<buffer " *Echo Area*"> #<buffer " *pixmap conversion*">
#<buffer " *load*"> #<buffer " *Message-Log*"> #<buffer " *Info-tmp*"> #<buffer
" *info tag table*">))
I have reported the bug to the xemacs developers (M-x report-emacs-bug).
And the reason is that xemacs wants to save a .flc file to the info directory.
Root can do this, other users can't.
This is odd, as in my normal .emacs file, I also have the line
'(fast-lock-cache-directories (quote ("~/.emacs-flc")))
in my customizations, so it shouldn't be trying to save into any other directory
in the first place.
I think I have found the cause of this problem (or at least another related
problem): when the hook is run to save the fast-lock cache, buffer-file-truename
is nil, so fast-lock can't construct the file name under which to save the
cache. Presumably buffer-file-truename wasn't nil when fast-lock mode was
originally entered (which is how it decides whether to use fast-lock or not).
I've reported the bug with this additional information to the XEmacs developers.
Reproduced still with xemacs-21.4.12.
By the way, I recommend using lazy-lock-mode rather than fast-lock-mode.
lazy-lock-mode works well for me.
Closed following comment 8. Thanks.
Actually, afaict this is fixed in 21.4.14 at least.