Shuhei KOBAYASHI <shuhei(a)aqua.ocn.ne.jp> writes:
一方, XEmacs の場合には,
`coding:' は src/file-coding.c の `determine_real_coding_system' で,
`mode:' と残りの `-*-...-*-' は lisp/files.el の `hack-local-variables-
prop-line' で処理されます.
`set-auto-coding-1' は `-*- coding:...' といった文字列を探すようになって
いるため, それ以前に他の `-*-...-*-' が存在しても処理できてしまいます.
一方, `determine_real_coding_system' は最初の `-*-' に続く `coding:...'
を処理するようになっています. したがって, gnus.texi のような場合には,
XEmacs では (iso-8859-1 に変更しても) coding: は処理されないはずです.
;; ちなみに, この 2 つの関数は `-*-' が閉じているかどうかは調べません.
Martin さんのおかげで、-*- が閉じているかどうかを調べるよう
になっていると思います。
> 1. find-file すると、
> File mode specification error: (void-function texinfo-*--mode)
> というエラーになる。
`texinfo'-mode ではなく `texinfo-*-'-mode になるのは, XEmacs の
`hack-local-variables-prop-line' の処理が甘い(複数の `-*-...-*-' が連続
していると, 正規表現の greediness により 3 つ目の `-*-' まで match して
しまう)ためのようです.
;; やはり XEmacs の files.el は修正の必要があると思います:-p
単純に non greedy match をするようにしました。:-)
--
Yoshiki Hayashi