アップルスクリプトベースのAutomatorサービスがいくつかあります。たとえば、Launch Emacs With Selected File
:
tell application "Finder"
set selectedDirectory to (quoted form of POSIX path of (target of window 1 as alias))
set selectedItem to (quoted form of POSIX path of (the selection as alias))
tell application "Terminal"
tell window 1
do script "cd " & selectedDirectory & " && emacs " & selectedItem
end tell
activate
end tell
end tell
キーボードショートカットCtrl-E
に割り当てて、数か月使用しています。
しかし、サービスはかなり不安定です。私のマシンであるOSX10.8を実行しているMacBookProが通常の負荷で、他のタスクに応答し、ターミナルがすでに実行されている場合、次のすべてが発生する可能性があります。
Workflow encountered an error
などが表示されます。Finder->Services->Launch ...
にアクセスする必要があります。サービスが非常に不安定である理由は何ですか? (まあ、これは私の唯一の不安定なサービスではありません。実際、私が作成したすべてのサービスは非常に不安定です...)よろしくお願いします。
4.約10%の確率で、エラーメッセージ
Workflow encountered an error
などが表示されます。
10.7および10.8のバグ があり、Finderはselectionプロパティを取得するときに新しいウィンドウを無視します。新しいFinderウィンドウを開いていくつかの項目を選択し、AppleScriptEditorでtell app "Finder" to selection
を実行すると、最前面のウィンドウ(または空のリスト)の後ろのあるウィンドウで選択された項目が表示されます。
回避策の1つは、フォーカスを別のアプリケーションに移動して戻すことです。
activate application "SystemUIServer"
tell application "Finder"
activate
set d to POSIX path of (target of Finder window 1 as alias)
set f to POSIX path of (item 1 of (get selection) as alias)
end tell
set cmd to "cd " & quoted form of d & " && emacs " & quoted form of f
tell application "Terminal"
try
set w to window 1 where visible is true and busy is false
do script cmd in w
set frontmost of w to true
on error
do script cmd
end try
activate
end tell
または、この場合、サービスの入力として選択を取得することもできます。
5.約10%の確率で、ショートカットがまったく応答しません(別のファイルが強調表示されるだけですが、ショートカットの競合はまったくありません)。サービスを利用するには、
Finder->Services->Launch ...
にアクセスする必要があります。
これは別のバグが原因である可能性があります。メニューバーからサービスメニューにカーソルを合わせるまで、Automatorサービスのショートカットが機能しない場合があります。ただし、回避策はわかりません。
FastScriptsまたは 他の方法でスクリプトにショートカットを割り当てる に切り替えてみてください。 Automatorサービスが実行されるまでに短い(おそらく0.1〜0.5秒)遅延もあります。