ヘルプ機能を強化

zshにおいてM-hを押すとコマンドをmanする機能がある。実際はrun-helpコマンドが実行され、デフォルトではmanにaliasされている。しかし、zsh組み込みコマンドでは使えなかったりして不便だ。しかし、以下の作業をしてあげれば組み込み関数やmanのないコマンドにも対応できる。まずはコマンドを実行する。~/src/zsh-4.3.2はzshのソースを展開したディレクトリだ。

mkdir ~/zsh/help
cd ~/zsh/help
man zshall | colcrt - | perl ~/src/zsh-4.3.2/Util/helpfiles

Debian GNU/Linuxの場合はhelpfilesスクリプトはhelpfiles.gzになっているので、以下のようにする。=(〜)はコマンドの出力結果を格納した一時ファイルに展開される便利なzsh記法だ。

すると~/zsh/help以下に組み込みコマンドのヘルプがわんさか出てくる。zshのmanpageをperlで処理して生成しているのでバージョンアップしても簡単にヘルプに反映できる。もちろん、manpageのないコマンドのヘルプを自分で追加しておくといい。

man zshall | colcrt - | perl =(zcat /usr/share/doc/zsh/examples/Util/helpfiles.gz)

そして、以下を.zshrcに追記する。環境によってはunaliasをunfunctionに変える必要があるかもしれない。Debian GNU/Linuxの場合はすでにautoloadされているので(/etc/zsh/zshrc参照)HELPDIRの設定だけでよい。

unalias run-help
autoload run-help
HELPDIR=~/zsh/help

実はDebian GNU/Linuxの場合デフォルトで組み込みコマンドのヘルプを用意しているのだが、上記のコマンドを使ったほうがより強力だ。run-help zleしてみればわかるが、デフォルトのままでは「zle See the section `Zle Builtins' in zshzle(1).」のつれない一言で終わってしまう。だから自分でヘルプを生成したほうがいい。だったらdebianizeするときに最初からやってくれよ。

ヘルプファイルの登録方法

ついでだからヘルプファイルを簡単に登録する関数を用意しておこう。

install-zshhelp () {
    local dest=$HELPDIR/`basename "$1"`
    "$@" >& $dest
}

install-zshhelp の後にヘルプ表示のコマンドラインを指定すればよい。たとえばrcovならば、

install-zshhelp rcov --help

といった具合だ。

フォントエラーでXが立ち上がらない

apt-get upgradeしたからか、Xが立ち上がらなくなった。etch使ってるくせにいまだにXFree86なんか使ってるからかもしれないけど…。1年ちょっと前にX.orgにしたら描画速度ががたっと落ちたからそれ以来避けている。xengineが10000くらいだからこれで十分だし、わざわざ新しいのにする意味を感じない。もっと描画速度が上がるのだったら乗り換えてもいいかな…

/etc/X11/XF86Config-4でFilesセクションのFontPathを適切に設定すれば起動するようになった。いつのまにか/usr/lib/X11/fontsから/usr/share/X11/fontsへ場所が変わっていた。俺のシステムでは古いパッケージも混在しているようで完全には統一されていない。

Section "Files"
	FontPath	"unix/:7100"			# local font server
	# if the local font server has problems, we can fall back on these
	FontPath	"/usr/lib/X11/fonts/misc"
	FontPath        "/usr/share/fonts/X11/misc"
	FontPath	"/usr/lib/X11/fonts/cyrillic"
	FontPath	"/usr/share/X11/fonts/100dpi/:unscaled"
	FontPath	"/usr/share/X11/fonts/75dpi/:unscaled"
	FontPath	"/usr/share/X11/fonts/Type1"
	FontPath	"/usr/lib/X11/fonts/CID"
	FontPath	"/usr/lib/X11/fonts/Speedo"
	FontPath	"/usr/share/X11/fonts/100dpi"
	FontPath	"/usr/share/X11/fonts/75dpi"
EndSection