« ブラウン管最高 | トップページ | 「きめうち」 »

2009年11月 4日 (水)

Yash 2 その 144

幾つかのシェルのコマンド補完機能を、特に補完のしかたの設定法の観点で調べてみたが、どれも本質的に大きな差異はないように見受けられた。

補間の方法を complete というコマンドで指定することと、補完するコマンドに応じて特定のスクリプトを実行して補完候補を生成するという方針はどのシェル (bash, zsh, tcsh, fish) も採用している。違いがあるとすれば候補生成スクリプトを実行するのがサブシェルか本体シェルかという点だ。候補生成に必要な情報をキャッシュしたりするためには本体シェルで実行した方が都合が良いが、スクリプトが何が不具合を起こした時の対処のしやすさではサブシェルの方が勝れる。

ところで今一番俺が気にしている問題は、補完候補とともに表示する説明メッセージの多言語対応の方法である。Zsh や fish ではオプションを補完する際に、候補の一覧としてオプション名のみならずオプションの簡単な説明も表示するようになっている。オプションを選ぶのに便利な機能だが、残念ながら説明は全部英語で表示される。この説明は補完の設定や候補生成を行うスクリプトによって指定されるのだが、zsh や fish ではユーザが使っている言語によって説明の言語を変えるということは難しそうだ。

こういうメッセージを多言語対応させるには gettext ライブラリなどを使うことになるが、yash がライブラリを呼ぶのか、スクリプトに多言語対応を任せるのか、検討する必要がある。そもそも gettext ライブラリは予めメッセージカタログをコンパイルしておかなければならないので、スクリプト言語にはなじまないかもしれない。よって、gettext のような既存のライブラリを使うのか、yash 独自の多言語対応を実装するのかも検討すべき点である。

|

« ブラウン管最高 | トップページ | 「きめうち」 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: Yash 2 その 144:

« ブラウン管最高 | トップページ | 「きめうち」 »