java-scrapbook - Java のコード片を実行する

1 説明

Java のコード片を実行します。

ちょっとしたコードの実行結果を知りたい場合に便利です。 名前からもわかるとおり Eclipse にある ScrapBook のぱくりです。

2 できること

3 これからやるかもしれないこと

4 インストール

NetInstaller でインストールした場合は 3 以降を、 NetInstaller + ni-autoload を使っている人は 4 以降で OK です。

  1. アーカイブをダウンロードします。

    <URL:http://miyamuko.s56.xrea.com/xyzzy/archives/java-scrapbook.zip>

  2. アーカイブを展開して、$XYZZY/site-lisp 配下にファイルをコピーします。
  3. ~/.xyzzy または $XYZZY/site-lisp/siteinit.l に以下のコードを追加します。

    ;; java-scrapbook
    (require "java-scrapbook")
  4. 設定を反映させるため xyzzy を再起動してください。

    ※siteinit.l に記述した場合には再ダンプが必要です。

  5. 実行したいコード片をリージョンで指定して M-x java-scrapbook-region 、 または M-x java-scrapbook-oneliner M-x java-scrapbook-display でミニバッファから一行入力して実行します。

    例: システムプロパティを表示する例 (java-scrapbook-oneliner で入力)。

    System.getProperties().list(System.out);

5 リファレンス

5.1 関数

java-scrapbook-current-kill
kill ring の文字列を java コード片として実行します。
java-scrapbook-clipboard
クリップボードの文字列を java コード片として実行します。
java-scrapbook-buffer
バッファ全体を Java コードを実行します。
java-scrapbook-region
リージョンの Java コードを実行します。
java-scrapbook-oneliner
ミニバッファから Java のコードを一行入力して実行します。
java-scrapbook-display

ミニバッファから Java の式を一行入力してその評価結果を表示します。

入力した値はそのまま System.out.println の引数に渡します。 よって入力するのは Java の式である必要があります。 (= セミコロンはいらない)

5.2 変数

*java-scrapbook-template*

生成するソースファイルのテンプレートを指定します。

テンプレートは以下の引数を与えられ format されます。

  1. import 宣言のリスト

    *java-scrapbook-import-list* で指定したリストです。

  2. コード片中に書いてある import 宣言のリスト
  3. クラス名
  4. 実行する Java コード片
*java-scrapbook-import-list*

import 宣言のリストです。

デフォルトは Java 1.4 の java. で始まり AWT と Applet 以外のパッケージです。

Java 1.2 or 1.3 を利用している人は以下のようにしてください。

(setf *java-scrapbook-import-list* *java-scrapbook-java1.3-import-list*)

新しく追加する場合は以下のようにしてください。

(pushnew "javax.accessibility.*" *java-scrapbook-import-list* :test #'equal)
(pushnew "javax.crypto.*" *java-scrapbook-import-list* :test #'equal)
*java-scrapbook-java1.3-import-list*
*java-scrapbook-java1.4-import-list*
それぞれ Java 1.2/1.3 と Java1.4 の import 宣言のリストです。
*java-scrapbook-substitute-alist*

生成する Java コードの置換リストです。

デフォルトでは sout と serr がそれぞれ System.out.println と System.err.println に置換されるように なっています。

新しく追加する場合は以下のようにしてください。

(pushnew '("regexp" . "replacement") *java-scrapbook-substitute-alist*)

例:

(pushnew '("ae" . "assertEquals") *java-scrapbook-substitute-alist*)
*java-scrapbook-keep-file-p*

生成した Java ファイルを保存・削除を決定するフラグです。

生成したファイルを削除しないなら以下のように non-nil を指定してください。

(setq *java-scrapbook-keep-file-p* t)

生成先は環境変数 %Temp% 配下(たぶん)の Scrap_〜.book というディレクトリです。

デフォルトは nil (削除する)です。

*java-scrapbook-source-buffer-name*
*java-scrapbook-javac-buffer-name*
*java-scrapbook-java-buffer-name*

それぞれ生成したソースコード、コンパイル結果、実行結果を 書き込むバッファ名です。

デフォルトはすべて同じで *Java Scrap* です。

*java-scrapbook-java-command*
*java-scrapbook-javac-command*

Java の実行コマンドとコンパイルコマンドを指定します。

文字列以外を指定すると適当に文字列に変換します。 関数を指定した場合 funcall するので動的に値を変更できます。

*java-scrapbook-before-java-hook*
*java-scrapbook-before-javac-hook*

なんとなく用意したフックです。 プリプロセッサに通したいとか ajc したいとかに使えるかも。

それぞれ java コマンドの前と javac コマンドの前に run-hook-with-args-while-success で実行します。 フックが nil を返すとその時点ですべての実行を中断します。

フックの引数は次のとおりです。

  1. 生成したソースファイルの絶対パス
  2. クラス名
*java-scrapbook-search-eclipse-classpath-p*

Eclipse の .classpath ファイルを読み込むかどうかを指定します。 nil を指定した場合、読み込みません。

.classpath の検索はカレントディレクトリから上位に探します。

*java-scrapbook-classpath*

クラスパスを指定します。 デフォルト値は環境変数 CLASSPATH の値です。

*java-scrapbook-search-eclipse-classpath-p* non-nil を指定した場合 Eclipse の .classpath ファイルを読み込んでクラスパスの 先頭に追加します。

*java-scrapbook-erase-output-buffer*
javac コマンドや java コマンド実行前にバッファの内容を削除する場合 t (デフォルト nil)。

6 ライセンス

java-scrapbook は修正 BSD ライセンスに基づいて利用可能です。

Copyright (C) 2003-2004 MIYAMUKO Katsuyuki. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

1 Redistributions of source code must retain the above copyright notice,
  this list of conditions and the following disclaimer as the first lines
  of this file unmodified.

2 Redistributions in binary form must reproduce the above copyright
  notice, this list of conditions and the following disclaimer in the
  documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.