[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