commands += BasicCommands.newAlias("openIdea", """eval sys.process.Process("open" :: "/Applications/IntelliJ IDEA 13 CE.app" :: Nil).!""")
- Mac限定です。他のOSでも、openに相当するOSのコマンド(?)があって、固定のアプリのpathわかればいけるのではないでしょうか。
- .sbtrcでやろうとしたら、エスケープの関係で面倒だったので、 ~/.sbt/0.13/build.sbt に書くようにしました。
- 上記のようにすれば、グローバルでも、それぞれのプロジェクト毎でも、build.sbtやBuild.scalaでalias追加できます。
追記
プロジェクトも開けるようにできるらしい、という情報もらった。便利だ。ポイントは
- Contents/MacOS/ideaを直接呼ぶ場合は、openをつけない
- そうすると、processを ! で走らせるとブロックしてしまうので、runなどブロックしない他の方法で走らせる*1 https://github.com/scala/scala/blob/v2.10.4/src/library/scala/sys/process/ProcessBuilder.scala#L219
でしょうか?つまり以下ようになる
commands += BasicCommands.newAlias( "openIdea", s"""eval sys.process.Process("/Applications/IntelliJ IDEA 13 CE.app/Contents/MacOS/idea" :: "${(baseDirectory in LocalRootProject).value}" :: Nil).run()""" )
*1:更に言うと、引数なしのrunだとログが同じコンソールにでるので、それが邪魔だったら、引数つけてログは他のところに出すようにすると良い