[OS X TeX] Emacs 22.92, %! and TeXShop
Jens Noeckel
noeckel at uoregon.edu
Fri Jan 26 00:12:45 EST 2007
On Jan 25, 2007, at 8:49 PM, Jens Noeckel wrote:
>
> On Jan 25, 2007, at 6:49 PM, Stephen Moye wrote:
>
>> On Jan 25, 2007, at 9:10 PM, Jens Noeckel wrote:
>>
>>>
>>> On Jan 25, 2007, at 5:41 PM, Stephen Moye wrote:
>>>
>>>> On Jan 25, 2007, at 8:34 PM, Stephen Moye wrote:
>>>>
>>>>> I just started using emacs 22.92 -- I have been using emacs
>>>>> 22.50. Unlike v22.50, when I open a TeXShop TeX file with emacs
>>>>> 22.92, it is opened as a PostScript file. I imagined that it
>>>>> had something to do with the first line of the file:
>>>>>
>>>>> %!TEX TS-program = latex
>>>>>
>>>>> Sure enough, I went digging using
>>>>>
>>>>> C-h v auto-mode-alist
>>>>>
>>>>> and found a line in files.el:
>>>>>
>>>>> ("%![^V]" . ps-mode)
>>>>>
>>>>> in addition to what I expected:
>>>>>
>>>>> ("\\.[tT]e[xX]\\'" . tex-mode)
>>>>>
>>>>> So emacs is looking inside the file to make a better guess
>>>>> about what kind of file it is. I tried changing
>>>>>
>>>>> ("%![^V]" . ps-mode)
>>>>>
>>>>> to
>>>>>
>>>>> ("%![^VT]" . ps-mode)
>>>>>
>>>>> but that did not work.
>>>>>
>>>>> I really like emacs 22.nn, but this is a bit of a bother. Can I
>>>>> put something in my .emacs file to counter this unwanted
>>>>> cleverness? I know that I can put
>>>>>
>>>>> %-*-latex-*-
>>>>>
>>>>> as the first line of the file and both emacs and TeXShop will
>>>>> be happy, but that seems an unnecessary complication.
>>>>>
>>>>> Any suggestions? Or, alternatively, where else should I more
>>>>> appropriately post this query?
>>>>>
>>>>> Thank you for any insights.
>>>>
>>>> Sorry, but I should have mentioned that I am using emacs under X11.
>>>>
>>>>
>>>>
>>>> Stephen
>>>>
>>>
>>> Stephen,
>>> not knowing what exactly is in your .emacs already, I would
>>> suggest adding the line
>>>
>>> (setq auto-mode-alist (cons '("\\.tex$" . tex-mode)
>>> auto-mode-alist))
>>>
>>> as close to the end of .emacs as possible (so that it doesn't get
>>> overridden by other associations - the order of these things
>>> matters).
>>>
>>> Jens
>>
>> I placed the line you suggested at the very end of my .emacs file
>> (which has very little in it), but a TeX file with %! at the top
>> still opened as a PostScript file.
>>
>> I am puzzled. Shouldn't the extension take precedence over
>> anything else? Surely a .tex file is almost certainly not going to
>> be a PostScript file...
>>
>> Anyway, thank you for the suggestion though.
>>
>> Stephen
>>
>> PS I did make the discovery that if the first line of the TeX file
>> is empty and the *second* line begins with %! then the emacs
>> mechanism is fooled and the file opens in TeX mode. Hmmmm...
>
>
> Ah, I just saw in the documentation that the magic-mode-alist takes
> precedence over the auto-mode-alist. I had not encountered this
> problem before, but I can reproduce it now with Carbon Emacs from
> fink. Here is something that fixes the problem: if you put this
> line in your .emacs, it will be stricter about what it considers as
> postscript:
>
> (mapc (lambda (pair) (if (eq (cdr pair) 'ps-mode) (setcar pair '"%!
> PS[^V]"))) magic-mode-alist)
>
> Now you have to have %!PS at the start to make it a PS file. What
> this code does is simply to search the magic-mode-alist for the ps-
> mode definition and replace the condition for recognizing it. This
> worked for me - hope it solves your problem, too.
>
> Jens
>
One more change:
to avoid an error when using other emacs versions that don't define
magic-mode-alist, enclose everything in an if statement:
(if (fboundp 'magic-mode-alist)
(mapc (lambda (pair) (if (eq (cdr pair) 'ps-mode) (setcar pair '"%!PS
[^V]"))) magic-mode-alist))
I think that should cover everything now...
Jens
------------------------- Helpful Info -------------------------
Mac-TeX Website: http://www.esm.psu.edu/mac-tex/
TeX FAQ: http://www.tex.ac.uk/faq
List Archive: http://tug.org/pipermail/macostex-archives/
List Reminders & Etiquette: http://www.esm.psu.edu/mac-tex/list/
More information about the MacOSX-TeX
mailing list