misima 秀丸マクロ for SOAP

| | コメント(0) | トラックバック(0)

日本オリンピック代表カタール戦を観ながら,misima 秀丸対応に取り組んだ.秀丸でテキストの選択範囲を,ネットワーク越しに私の misima SOAP サーバに転送し,旧字・旧仮名変換して,帰ってきた結果で書き換えるもの.ホームのカタールが勝負強さを発揮して,見事後半残すところ 13 分で追いつき,逆転,日本が信じられない負け方をした.信じられない勝ち方は見たことがないが.ロスタイムでなんとハンドで PK を献上するなんて,まあ優しい日本人らしいかわいいところか.こんなのでオリンピックに出場できたとしても,よいものだろうか.それはよいとして,秀丸用のマクロができた.

秀丸はマクロ実装において,テキスト選択範囲を外部プログラムの標準入力に渡すことができる.賢明な仕様だと感心した.でも,その文字コードがどうも SJIS のようで,せっかく misima Java SOAP クライアントに食わせることができるのに,UTF-8 を前提としている misima の出力が化けてしまい目的に適わない.秀丸は定評ある優れたエディタではあるが,マクロレベルでのエンコーディングに対する配慮は,Emacs に比べるといまひとつという印象を受ける.

しようがないので,クリップボード経由で外部プログラムとテキストを連絡する方式にした.秀丸も UTF-8 を含むいくつかの文字コードをサポートしている.エンコードの異なる複数の秀丸文書間でコピー&ペーストができないとなるとさすがに使い物にならないので,クリップボードのエンコーディングは Unicode で管理可能な作りになっているようである.

クリップボードからデータを読み取り,misima SOAP 変換をコールし,変換結果をクリップボードにストアする Java プログラムを 1 本書いた.Microsoft Word 用にもともと書きかけていたのですぐできた.これをドライブする簡単な秀丸マクロを書いたら,文字化けせずに変換が成功した.Word 用マクロは結局 Microsoft Office XP Web Services Toolkit により始末したが,クリップボード方式は無駄にならなかった訳である.

ここでもうひとつ障碍が発生.マクロから java プログラムを起動するとどうしても「コマンドプロンプト」の画面が変換中に立ち現れてちょっとみっともない.秀丸のマクロ Tips を検索したら "> nul" でこれを抑止できるような記事を見つけてこれを試してみたが,ダメであった.これまたしようがないので,引数に指定したプログラム (ここでは Java) を,コンソールプログラムとしてでなく,バックグラウンドプロセスとして起動する短いランチャプログラムを C で書いた (下記コード中の misimalaunch).Borland C++ 5.5 の無償お試しコンパイラが役立った.全部 C で書けばよいのだけど,クリップボード,SOAP を操作する Windows アプリを C/C++ で書く気力はいまの私にはない.

以下にできあがった秀丸マクロコードを示す."→" は行の折り返しを示す.

// misima パラメータ: 旧字(UTF-8),旧仮名,用字・用語,単純変換指定
$param = "-kyit -s c ";
 
// 文字列が選択されていないならエラー終了
if (!selecting) {
    message "文字列を選択してください";
    endmacro;
}
 
// クリップボードに切り出し
cut;
 
// misima SOAP サーバコール
// - misimalaunch: コマンドプロンプト画面抑止ランチャ
// - misimaSoapCbClient: Java クリップボード SOAP クライアント
runsync2 "misimalaunch javaw misima.misimaSoapCbClient →
  -u http://yasuda.homeip.net/axis/services/misimaSoapConnector "  → 
  + $param;
 
// 異常終了の場合,対象テキストを戻して終了
if (!result) {
    message "実行に失敗しました";
    paste;
    endmacro;
}
 
// クリップボードの misima 変換結果をペースト
paste;

まだ Java プログラムも C プログラムもプロトタイプなので,misima オプション指定などもう少しチューニングしてから公開するつもりでいる.Windows のエディタとして大きなシェアを持っている秀丸エディタでも,これで misima 変換がサポートできそうである.

次は Mac OS X で人気のある Jedit X 向けに misima SOAP 変換マクロ (AppleScript) に取り組む予定である.AppleScript は Apple Event Manager で SOAP や XML-RPC をサポートしているので,秀丸よりもっと簡単にサポートできると思う.

トラックバック(0)

このブログ記事を参照しているブログ一覧: misima 秀丸マクロ for SOAP

このブログ記事に対するトラックバックURL: http://nox-insomniae.ddo.jp/cgi-bin/mt-tb.cgi/289

Comments


画像の中に見える文字を入力してください。

Profile

ISAO。システムエンジニア。昭和 30 年代を懐かしむオヤジ。ロシアに興味があります。
[more], [About our site]

Notice

この文書はフィクションであり,実在する個人,団体等とは一切関係ありません。

文書の記述内容は無保証です。不適切な表現があればコメントにてご指摘ください。

管理者が公序良俗に反すると判断したコメント,トラックバックは,断りなく削除される場合があります。

Links

About this entry

Written by isao at 2007年10月18日 03:11.

Previous: テニス部バーベキュー大会

Next: Jedit X misima クライアント

Recent Entries in Main Index.
All Entries in Archive Index.

Web Pages

Powered by Movable Type 4.1