2003-05-14 [長年日記]

引数付きアクション

スクリプトからアクションを起動するときに引数を渡せるようにしました。アクション側での対応が必要なので試したのはまだこれだけなんですけど。

editFrameWindow.invokeAction("EditMoveCharRight", true);

このようにするとエディットビューで選択しながら右に一文字キャレットが移動します(Shift+右矢印と同じ)。

バージョン情報

バージョン情報を埋め込むようにしました。いつもバージョン情報の更新を忘れるので、今回はビルド時に自動で埋め込まれるように変更してみました。とはいっても、元々のバージョン情報をアップデートするのを忘れたらやっぱりダメなんですが。

ビルド番号は管理が面倒なので日付を使おうと思っていたのですが、VERSIONINFOリソースでは一桁あたり16bitしか使えないので日付だとオーバーフローしてしまいました。一応連番にしてみましたが、やはり分かりにくいので何とかしたいところですね。

バージョン情報 (2)

ビルド番号はやはり日付から生成することにして、(((year - 2000) << 11) | (month << 7) | (day << 2) | ex)とすることにしました。ぱっと見が分かりにくいのが難点ですが、手で管理するよりは良いのではないかと。ちなみにexの2ビットは、下手打って一日に二回以上ビルドする羽目になったときのためのものです。

シェルスクリプトでビットシフト

上のビルド番号を生成するのに、最初はperlかrubyでやろうと思っていたのですが、調べてみたらbashでビットシフトが出来ることが分かったので以下のようにしてしまいました。

echo $((`date +%y` << 11 | `date +%m` << 7 | `date +%d` << 2 | $EX))

素の/bin/shだと動かなくなってしまいましたが、cygwin限定なのでまあよいでしょう。

$とか()とかが入ったシェルスクリプトをmakefile中に書こうとすると、何をどうやってエスケープすべきなのかが分からなくなってきますね。殆ど試して動いたからOKみたいなノリです。