Tue, 14 Jun 2005
CotEditor用のスクリプトを書いてみるそのに
CotEditor用のスクリプトを書いてみる。の続きをもうちょっとだけ。
今まで試してきたスクリプトはどれも、最前面のウィンドウにおいて結果が選択されたままになるのですが、続けてテキストを入力していくのにその状態では都合が悪い場合もあるわけです。…サンプルに、処理後にキャレットを移動するものがありました。
--
property newStr : "TEMPLATE"
--
--
tell application "CotEditor"
if exists front document then
set {loc, len} to range of selection of front document
set numOfMove to count of character of newStr
set contents of selection of front document to newStr
set range of selection of front document to {loc + numOfMove, 0}
end if
end tell
サンプルを元に書いたものを次に挙げます。元ネタはどっかから拾ってきた、Internet Timeを出力するスクリプトです。どこで改行するか、どのようにエスケープするか、どのようにクォートするかとかで悩みました。それにしても、AppleScriptの文法は苦手です…
tell application "CotEditor"
if exists front document then
set {loc, len} to range of selection of front document
set (contents of selection of front document) to (do shell script "/usr/bin/perl -e 'if ($0 eq __FILE__) {
print &Bdate.\"\\n\";
}
sub Bdate
{
local($time) = @_;
local($beat);
$time = $time || time;
local($sec, $min, $hour) = (gmtime($time+60*60*1))[0..2];
$beat = ((($hour * 60 + $min) * 60 + $sec) / 86.4) % 1000;
sprintf(\"@%03d\",$beat);
}
1;'")
set numOfMove to count of character of selection
set range of selection of front document to {Loc + numOfMove, 0}
end if
end tell
大体において、やりたいことが出来そうなのが分りました。