Groovy 2.2 で強化された groovysh

先日 beta 2 がでた Groovy 2.2 で groovysh (REPL) が強化されているので触れておきます。最近型検査とかかっちりした部分の強化が目立っている Groovy ですが、本来高速に開発できるところが売りな言語なんでこれは良い傾向です。たまたまという噂もありますが。

コード補完がまともになった

Thibault Kruse という方が groovysh の使えなさに憤慨して一気に直してくれました。Groovy はじめたばかりらしいんですが。ありがたい。

パッケージ/クラス名を補完しようとしてこんな悲しいエラーをはいていたのも

groovy:000> new groovy.json.ERROR org.codehaus.groovy.control.MultipleCompilationErrorsException:
startup failed:
groovysh_evaluate: 1: unexpected token:  @ line 1, column 16.
   new groovy.json
                  ^

1 error

ちゃんと補完候補をだしてくれます

groovy:000> import groovy.json.
DateFormatThreadLocal    JsonBuilder              JsonDelegate             JsonException            JsonLexer                JsonOutput               JsonSlurper              JsonToken
JsonTokenType            StreamingJsonBuilder     StreamingJsonDelegate    StringEscapeUtils        *

メソッド補完もこのとおり

groovy:000> Math.m
max(         metaClass(   min(

APIドキュメントを参照できるようになった

コマンドに "doc" が追加されています。これは僕が実装しましたClojure の REPL にある doc / javadoc コマンドが便利だったもんで。

groovy:000> help doc

usage: doc [<class>]

Opens a browser window displaying the doc for the argument.

Groovy の場合 Groovy APIJava 拡張 (GDK) APIJava API の3種類のドキュメントを参照する必要がるのですが、それら全てに対応しています。例えば拡張が入っている java.util.List の場合

groovy:000> doc java.util.List

と打つと GDK と Java 両方のドキュメントのURLを出力しつつ

groovy:000> doc java.util.List
http://docs.oracle.com/javase/1.7.0/docs/api/java/util/List.html
http://groovy.codehaus.org/groovy-jdk/java/util/List.html

ブラウザで それらを開きます。

ブラウザは GROOVYSH_BROWSER 環境変数 、BROWSER 環境変数、デフォルトブラウザの順で決まります。例えば Mac OS X だと

export GROOVYSH_BROWSER="open -a firefox"

としておけば、デフォルトブラウザの代わりに Firefox が使われます。

前述した補完の修正をこのコマンドにも取り入れてあるので補完もちゃんとききます。良いタイミングでした。