トップ «前の日記(Thu Jan 30 2003) 最新 次の日記(Sun Feb 02 2003)» 編集

よこいまさる日記



Sat Feb 01 2003 [長年日記]

[Emacs] The coding defination in "Local variables".

久々に Emacs のお話。多分、Emacsだけの仕様だとおもうんだけど、ファイルを開くときに「Local Variables:」と書かれた行から「End:」と書かれた行までの間に、そのファイルを編集するのに適切なメジャーモード (mode) や 文字コードセット (coding)の設定ができる。ちなみにそのときには、Perlのスクリプトを UTF-8 で書いており、そのファイルを開くときの文字コードセットを utf-8 にするため、以下のように書いてみた。

Local Variables:
coding: utf-8-unix
End:

これでうまくいくかなぁなんて思っていたんだけど、結果としてはダメ。なぜか coding の部分だけは mode の設定のときと Parse のしかたが違う。以下に lisp/international/mule.el の中にある coding: を Parse する部分のソースを抜粋してみた。

;; If no coding: tag in the head, check the tail.
(when (and tail-found (not coding-system))
  (goto-char tail-start)
  (search-forward "\n\^L" nil t)
  (if (re-search-forward
       "^\\(.*\\)[ \t]*Local Variables:[ \t]*\\(.*\\)$" tail-end t)
.... 以下 略 ....

引用が中途半端なのはお許しいただきたい。この部分を解釈すると、カーソルを後ろのほう (tail-start) に移動させて、^L (0x0c)だけの行を前方検索してそこにカーソル移動させて、Local Variablesの部分を検索するようになっている。そう、原因は "^L" が足りなかっただけだった。なんか仕様がバラバラっていう感じでアレですね。(笑)


2000|10|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|