[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:17292] Re: man コマンドの挙動



>> On Thu, 5 Jun 2008 08:52:56 +0900
>> ishikawa@xxxxxxxxxxx (ISHIKAWA Mutsumi) said as follows:

>>> ページャで出すときと標準出力に送るときとで挙動が異なっていて、標準出
>>> 力に送るほうがおかしい?

> ということで 差異は col なので、これをおえばいいんじゃないかなーと思い
> ます。

ビンゴ.col.c の該当部分の処理は,以下の通りで,まったくマルチバイト文字
は考慮されていませんでした.

	while ((ch = getchar()) != EOF) {
		if (!isgraph(ch)) {
			switch (ch) {
			case BS:		/* can't go back further */
				if (cur_col == 0)
					continue;
				--cur_col;
				continue;

>> On Thu, 5 Jun 2008 07:44:23 +0900
>> kise@xxxxxxxxxxx (KISE Hiroshi) said as follows:

>一時しのぎだと思いますが、groffのオプションを指定する方法
>    man -Tutf8 man
>とすれば、標準出力からUTF8で出てくるようです。

この方法で,Emacs 上の M-x man RET を使えるようにするには,以下の設定を
~/.emacs に書けば良いようです.

    (setq Man-switches "-Tutf8")
    (defadvice Man-getpage-in-background
      (around debian-manpage-force-utf8 activate compile)
      (let ((locale-coding-system 'utf-8))
        ad-do-it))

col を通ってしまうと BS などが落ちてしまうわけですが,Emacs 付属の
man.el は,BS などを解釈して,強調表示などを行うようにしています.
なので,man.el から使う場合は col を通さない方が良いわけなんです.

というわけで,

(1) bsdmainutils に multibyte character が対応されていないぞと BTS
(2) emacs22 に上記設定相当を組み込むように BTS

するのが正しい道のようです.

-- 
土屋 雅稔 ( TSUCHIYA Masatoshi )