🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.editor.mule
Article #120

Re: html-helper-modeでのbuffer-file-coding-systemの設定

#120
From: Seiichi Namba
Date: Tue, 29 May 2001 10:29
82 lines
4109 bytes
難波です。

KANEMATSU Shin'ya <kane@lp.nm.fujitsu.co.jp> さん writes:

> 「buffer-file-coding-system」でなく「coding」と指定していたのがマズかっ
> たようです。

確かに、

> %%% mode: outline-minor

などという表記が許されることを考えるとなんとなくそんな風に書けそうにも
思えますね。さらに、さっきのテストファイルを

<!
Local Variables:
mode: html-helper
outline-minor-mode: t
mode: auto-fill
junkvar: qwer
buffer-file-coding-system: sjis-dos
version-control: never
End:
>

などとして観察してみたのですが、やはりこのあたりにはちょっとした癖がある
ようです(ソースを追ったわけではなく、観察だけなので不正確かもしれませんが)。

 (0) コロンの左側は任意の buffer-local な変数名シンボルとして扱われる。が、
 (1) minior mode については outline-minor-mode: t などという表記でも
     うまくいく(、場合がある、だけかもしれません)。が、
 (2) major mode については mode: xxxx と書く必要がある。

という感じのようです。また、

buffer-file-coding-system: sjis-dos

と書いておく方式にはそれなりの穴があるかもしれませんね。たとえば、こう書く
だけで save する時の buffer-file-coding-system の値が保証されるわけでなない
ですから(find-file した時に違う値になっている事は考えられる訳で)。

…別の案としては、次のようなコマンドを使うんですかね。

(defun sjis-html-find-file (file)
  (interactive "Fsjis-html-file: ")
  (let ((html-helper-mode-hook
	 '((lambda () (setq buffer-file-coding-system 'sjis-dos)))))
    (find-file file)))

これもゼロから書き初める時しか有効じゃないか…。つまり、
間違って既に euc でセーブされているものは再度セーブしなおす操作が
無ければ救えない訳だし…。

セーブする時の coding-system を自動的にある(デフォルトとは違う)値に保
証するのって結構面倒ですね…。ええと…。

save-buffer-hook てのはあったっけ(もちろん、save-buffer-hook 的なもの
を利用するのであれば他のモードの事も考慮したコードを書く必要があります
ね)…。

捜せば hook は何かありそうですが、あまり時間を使いたくない時はテキトー
に自分でコマンドを書いてしまってもいいかも。

(defun html-save-buffer (&optional args)
  (interactive "P")
  (hack-local-variables)
  (save-buffer args))
(define-key html-helper-mode-map "\C-x\C-s" 'html-save-buffer)

こうすれば少しは確実かな。つまり、後は編集中のいずれかの段階で

buffer-file-coding-system: xxxx

書くのを励行する、という事にすれば (hack-local-variables) を介して
その値を save-buffer の時の値に伝達することができます。

…ここまで書いて思い出した。advice.el を使う方が一般的かしら?
こっちはどなたか別の方にお任せします。

-- 
難波清一@東京西東京市 (http://www.asahi-net.or.jp/~pi9s-nnb/)
NAMBA Seiichi <sn@asahi-net.email.ne.jp>
Technical Details
Message-ID: <9evtmf$4nq$1@sn.asahi-net.email.ne.jp>
Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!canoe.uoregon.edu!logbridge.uoregon.edu!newsfeed.media.kyoto-u.ac.jp!onodera-news!yynet.tama.tokyo.jp!nf.asahi-net.or.jp!not-for-mail
References: <yftbsodx9zh.fsf@toya.lp.nm.fujitsu.co.jp> <9ev217$j2a$1@sn.asahi-net.email.ne.jp> <yftzobwwya5.fsf@toya.lp.nm.fujitsu.co.jp>

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 10eba4,303b1f0aa21bcc0c
X-Google-Attributes: gid10eba4,public
X-Google-ArrivalTime: 2001-05-29 03:30:20 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!canoe.uoregon.edu!logbridge.uoregon.edu!newsfeed.media.kyoto-u.ac.jp!onodera-news!yynet.tama.tokyo.jp!nf.asahi-net.or.jp!not-for-mail
From: Seiichi Namba <sn@asahi-net.email.ne.jp>
Newsgroups: fj.editor.mule
Subject: Re: html-helper-modeでのbuffer-file-coding-systemの設定
Date: 29 May 2001 19:29:35 +0900
Organization: Smoke
Message-ID: <9evtmf$4nq$1@sn.asahi-net.email.ne.jp>
References: <yftbsodx9zh.fsf@toya.lp.nm.fujitsu.co.jp> <9ev217$j2a$1@sn.asahi-net.email.ne.jp> <yftzobwwya5.fsf@toya.lp.nm.fujitsu.co.jp>
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-2022-jp
Content-Transfer-Encoding: 8bit
Lines: 82
NNTP-Posting-Host: h200208.ppp.asahi-net.or.jp
X-Trace: 991132215 news3.asahi-net.or.jp 14354 61.114.200.208
X-Complaints-To: ap-net@asahi-net.or.jp