「プレーンテキストとしてペースト」の方は
前回ちょっと書いたんですが、今回はやり方をかえて、ExtendScriptっぽくcontentsにぶっこんじゃいましょう。これならクリップボードも書き換えずに済みます。
^!v::
app:=ComObjActive("Illustrator.Application")
sel:=app.Selection
If (ComObjType(sel,"Name")="TextRange"){
cc=%clipboard%
If cc!=
{
sel.Contents:=cc
}
}
Return
んで、これは基本的にテキスト選択時に使用するものってことにする。そうじゃないときは、この同じCtrl+Alt+Vのコマンドを別のペーストに使いましょう。限りあるキーコマンドを大切に。
他にペースト系でキーボードショートカットが欲しかったのと言えば、「現在のレイヤーにペースト」です。私は普段、レイヤーパネルメニューにある「コピー元のレイヤーにペースト」をONにして作業してるので、これをOFFにして、ペーストして、またONに戻すって操作を一発でやりたい。
これをExtendScriptで書くとこんな感じ
app.preferences.setBooleanPreference("layers/pastePreserve",false);
app.paste();
app.preferences.setBooleanPreference("layers/pastePreserve",true);
これをAutoHotkeyスクリプトに書き換えようと思ったのですが、COMオブジェクトにもSetBooleanPreferenceメソッドはたしかにあるのですが、第2引数がBoolean型じゃないと受け付けてくれない(0も"False"もダメ)。そしてなんとAHKスクリプトにはBoolean型が存在しない!
しかたないのでまたDoJavaScriptに登場してもらいます。
^!v::
app:=ComObjActive("Illustrator.Application")
sel:=app.Selection
If (ComObjType(sel,"Name")="TextRange"){
cc=%clipboard%
If cc!=
{
sel.Contents:=cc
}
}
Else
{
js=
(
app.preferences.setBooleanPreference("layers/pastePreserve",false);
app.paste();
app.preferences.setBooleanPreference("layers/pastePreserve",true);
)
app.DoJavaScript(js)
}
Return
できあがりー
これでCtrl+Alt+Vがテキスト選択時には「プレーンテキストとしてペースト」、テキスト非選択時には「現在のレイヤーにペースト」になりました。
PR