mg-5.0.1.3

約3年ぶりにmg の新バージョンをリリースする。ファイルのダウンロードや、そもそも mg が何だかわからなくて、かつ何だか知りたい人は以下のリンクをどうぞ。

http://www.srekcah.org/~utashiro/perl/scripts/mg/

最近、翻訳の仕事をしているのだが、原文をテキストでもらっているので、それに訳文を加える形で作業をしている。訳語を確認するために、以前のテキストを検索することがよくあるが、原文にも出てくる言葉を探そうとするとマッチしすぎて不便である。

そこで、検索対象の範囲を制限するためのオプションを追加した。--exclude オプションでパターンを指定すると、そのパターンにマッチする部分は検索の対象からはずれるのである。あっても出てこないだけで、テキストの中には残っているので、行番号がずれるようなことはない。

たとえば、

mg --exclude '(?s)/\*.*?\*/' if *.c
のようにすると、C のコメント以外の部分からだけ if を探すことができる。逆に --include にすれば、コメントからだけ検索する。

これは大変便利なのだが、このオプションを使おうとすると、手で入力するのはあまり現実的ではない。ましてや、emacsgrep コマンドから使うのは大変。そこで、ユーザが自分自身で新しいオプションを定義できるようにしてみた。ホームディレクトリの .mgrc にオプション定義を書いておくと起動時に読んでくれる。これで複雑なオプションも簡単に使うことができるようになった。

さらに、--exlucde--include のオプションには、パターンだけでなくて関数も指定することができて、複雑なパターンは自分でプログラムを書いて範囲を生成する。実際、翻訳原稿の処理などはパターンで指定できるほど単純ではないので、プログラムを書くのである。このプログラムもやはり .mgrc に書くことができる。

実は blog を始めてみたのは、日記を書きたいからなんかじゃない。リリースしたプログラムなどの話題をするのに、メールよりもうまくできるんじゃないだろうかという目論見があったからだ。メーリングリストを使おうとしてみたが、これはどうもうまくいかなかった。理由は、作者が頑張らないせいだとは思うのだが。メーリングリストの内容を web で公開するというのも好きではない。だったら、最初から公開されている場所で議論すべきだというのがぼくの考え。個人宛のメールだと共有情報としての価値がないし、他の人が答えてくれれば、その方が助かる。さて、今度はどうなるか?