[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
vc making coding system nil, latexenc not protecting
From: |
Karl Berry |
Subject: |
vc making coding system nil, latexenc not protecting |
Date: |
Mon, 24 Sep 2007 08:37:04 -0500 |
Nate Eldredge (cc'd) reported a bug in emacs-22.1 when checking out
(C-x v v) an LaTeX file from RCS (exact recipe below); namely, getting
(wrong-type-argument arrayp nil)
There seem to be two problems, one in latexenc.el and one somewhere in VC.
The first is just a matter of defensive programming. Nate tracked down
the error to the call of coding-system-base near the end of
lisp/international/latexenc.el:
(coding-system-base ;Disregard the EOL part of the CS.
(with-current-buffer latexenc-main-buffer
(or coding-system-for-write buffer-file-coding-system))))
Both coding-system-for-write and buffer-file-coding-system are nil, and
thus coding-system-base throws the error. It seems it would be
desirable to avoid the call and hence the error in this case -- if I
take out the call, for testing, everything goes through fine. Or else
to change coding-system-base to be a no-op if its arg is nil. I don't
know which would be better.
The second question is why both those variables are nil in the first
place. After visiting the file, but before running CTRL-x v v,
buffer-file-coding-system is undecided-unix. So somewhere within
vc-next-action it got set to nil. I could not find where. (Aside: too
bad edebug doesn't have watchpoints.) Help? coding-system-for-write is
always nil in this scenario, so it's not a factor.
Thanks for any help, and to Nate for his sleuthing.
Karl
Here is the recipe to reproduce the error; put the attached
template.tex,v file in the current directory first.
$ co template.tex # with co -l, the error does not happen
$ emacs-22.1 -Q template.tex
CTRL-x v v
(observe arrayp error)
template.tex,v
Description: Binary data
- vc making coding system nil, latexenc not protecting,
Karl Berry <=