[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:30501] Re: xemacs21 で日本語 man ページが表示できない
山下 純司といいます。
emacs20 の M-x man による日本語 manpage の表示の件についてです。
まず man コマンドは出力先が端末ではなくても、環境変数 PAGER で指定され
たコマンドあるいは /usr/bin/pager にパイプを繋げるようです。
# 簡単に確認するには man man | more & ps
これが emacs20 M-x man の結果が PAGER の設定や /usr/bin/pager の実体が
何であるかに依存する理由です。
# 話題になってないかもしれませんが、私自身が不思議に思ってたので。
pager が lv だと emacs20 でもとりあえず日本語が表示できるのは
おそらく lv のデフォルト出力コーディングシステムが iso-2022-jp なので
emacs20 のコーディングシステムの自動判定が間違えることないからでしょう。
pager が more や less の場合、この自動判定がうまく働かないのは
おそらく ^H (バックスペース) が原因だと思うのですが、他に
default-process-coding-system や process-coding-system-alist の値、
はたまた M-x man の途中でなんらかの理由によるエラーが起こり途中で処理が
終わってしまっている、などが考えられます。
以前 理由を突き止めたはずなんですが すでに記憶にありません。
^H^H が表示されてしまうのは、emacs20 の man.el が emacs20 的 *一文字*
につき ^H は一個だと仮定していて、日本語 man の伝統である(?) 日本語一
文字(二バイト) に ^H^H を出力することに対応していないからです。
emacs21 の man.el は ^H^H を考慮していることは確認しました。
私は ~/.emacs に以下のような記述をして対処してました。
これで pager が何であるかによらず日本語 manpage が問題なく表示できるは
ずです。
(and (eq debian-emacs-flavor 'emacs20)
(eval-after-load "man"
'(setq Man-filter-list (append Man-filter-list
'(("nkf" "" "-e")
("tr" "" "-s '\\b'"))))))
以上
--
山下 純司 mailto:ysjj@xxxxxxxxxxxx