epojava logo

『epojava』

関連URL(ダウンロード/他)

名称URL
epojava epojava
epojava のダウンロード

epojavaの特徴

  epojava.elは、 mule/XEmacs用に作られた拡張java入力支援モードで、
  1. 既存XEmacs/mule に標準装備のjava-modeを継承している。
  2. EPO(The Editing Process Organizer) を標準実装している。
  3. Apatch-Antをサポートしている。
  4. クラス一覧を表示(ファイル間ジャンプ)できる。
  5. メソッド一覧を表示(ファイル内ジャンプ)できる。
  6. ワード検索でファイル間ジャンプできる。
  7. 全行一括インデントができる。
  8. 独自のインデントスタイルを持っている
    (旧来の java-mode では無名インナークラスに対応していない)。
  9. ソースコード整形(美文化)ができる。
  10. menu bar をサポートしている。
  11. 日本発(開発者が日本人で、解説が日本語(重要) ;-)
といった特徴を持つ強力な機能により 快適な開発統合環境を提供いたします。

  本システムはMeadowで開発を行なっており、 windows系のシステムでも Meadowをインストールすれば問題なく動作させることができます。

  簡易なエディターの入力では物足りなくなった方、 うんざりされている方、 ぜひ本システムをお試しくださいませ。

epojavaのキーバインディング

  キーバインドは以下のようになっています。
なお、[prefix]は、通常C-c と読み替えてください(ユーザーが変更できます)。
[prefix] C-t タイプセッタ(EPO 基本機能)
外部プロセスの関数起動を行います。
※ 環境変数ANT_HOME が設定されている場合、 Apatch-Ant を起動できます。
[prefix] ' next-error(EPO 基本機能)
コンパイル時にエラー行を抽出してそこへ移動します。
EPO の基本機能は他にもあります。 詳細は EPO の info を参照してください。

[prefix] b (EPO 拡張機能)
ブロックの補完入力を行います。
※ yatex の [prefix] b (ビギン)と同等機能です。
[prefix] s (EPO 拡張機能)
識別子の補完入力を行います。
※ yatex の [prefix] s (セクション)と同等機能です。
[prefix] l (EPO 拡張機能)
try 型の補完入力を行います。
[prefix] f (EPO 拡張機能)
関数の補完入力を行います。
一度でもクラスビューを開くとクラス一覧に変更になります。
[prefix] u アップデートファイル(EPO Java 拡張機能)
バッファーとして開かれている全ファイルに調査を行い、 ディスクに保存されている内容と違う場合、 ディスクの内容を再読み込みします。
タイプセッタ等により、バッファーの変更がある可能性が あるときに使用してみてください。
また、cvs checkout 後などは便利だと思います。
※ 尚この機能はange-ftp環境だと有効に働きません。
※ また、EUC コードのファイルを開いているときに、 再読み込みしたファイルがSJIS のコードに書き換わっていた場合、 Emacs の種類によっては EUC コードで再読み込みしようとして 文字化けが発生する恐れがあります。注意してください。
C-u [prefix] u キルバッファーファイル(EPO Java 拡張機能)
バッファーとして開かれている全ファイルを 強制的にキルバッファーします。
※ ange-ftp環境の時等で使用してみてください。
[prefix] g クラスビュー(EPO Java 拡張機能)
クラス一覧を開きます (package/import 文上だと対象フォルダを開きます)。
project (検索したい全てのソースファイルのディレクトリ位置) で登録した全てのフォルダをセレクトします。
project の変更は[prefix] a で行なってください。 ClassName の上でこれを押したら一覧が開き、 同一のClassName のところへ移動します。 分からないときは先頭にカーソルは行きます。

クラス一覧で……

クラス一覧起動画面(イメージ)
■Meadow95.exe@----
public class Object {

    private static native void registerNatives();
    static {
[o]-(Unix)-- -L23 Object.java [1] (epocc EPO Encodede-kbd)
jdk:/java/lang/Number.java
jdk:/java/lang/NumberFormatException.java
jdk:/java/lang/Object.java
jdk:/java/lang/OutOfMemoryError.java
jdk:/java/lang/Package.java
[o]S:%% -L1724 * epojava-table * [1] (epojava-table Encodede-kbd)
スペースまたはgまたは eまたはv
カーソル上のメソッド一覧を表示します。
q
閉じます。

■追加項目
  project指定時にフォルダではなく *.jarを指定することができるようになりました。
  *.jarを指定しておくとクラスビューは まず以下のような表示となります。
クラス一覧起動画面(イメージ)その2
■Meadow95.exe@----
……(中略)……
hoge:c:/java2/tomcat/lib/jasper-runtime.jar
tools:c:/java2/lib/tools.jar
jdk:/com/sun/corba/se/ActivationIDL/Activator.java
jdk:/com/sun/corba/se/ActivationIDL/ActivatorHelper.java
jdk:/com/sun/corba/se/ActivationIDL/ActivatorHolder.java
……
[o]S%% -L6 * epojava-table * [2] (epojava-table Encodede-kbd)

  さらに*.jar ファイル上でスペースまたは gまたは eまたはvを入力すると、 以下のような archive-mode が表示されます。
archive-zip-mode
■Meadow95.exe@----
……(中略)……
  drwxrwxrwx         0  17-Aug-2001  20:48:44  jp/ne/ruru/park/ando/anzip/
  -rw-rw-rw-      1099  17-Aug-2001  22:05:08  jp/ne/ruru/park/ando/anzip/ANZip$ANRunnable.class
  -rw-rw-rw-      3010  17-Aug-2001  22:05:08  jp/ne/ruru/park/ando/anzip/ANZip.class
  drwxrwxrwx         0   1-Jan-1980  00:00:00  meta-inf/
  -rw-rw-rw-        45  16-Aug-2001  20:49:34  meta-inf/manifest.mf
- ----------  --------  -----------  --------  -------------------------------------------------
[o](Unix)%% -L10 anzip.jar [1] (Zip-Archive Encodede-kbd)
※ この機能は、Meadow 1.10 では効きませんでした。 Meadow 1.14 で動作を確認しています。 動かないときはこの辺りをまず調査してください。

  また、jp/ne/ruru/park/ando/anzip/ANZip.class の上でリターンキーを押すと、 javap による内容表示を行います。
ANZip.class の閲覧イメージ
■Meadow95.exe@----
Compiled from ANZip.java
public class jp.ne.ruru.park.ando.anzip.ANZip extends java.lang.Object {
    protected static final java.lang.String ENCODE;
    protected static final java.lang.String JAVA_HOME;
    private jp.ne.ruru.park.ando.anzip.ANZip();
    public static void main(java.lang.String[]);
    protected boolean isClassFile(java.lang.String);
    protected void classPrint(java.lang.String, java.lang.String);
    public static java.lang.String change(java.lang.String);
    protected void filePrint(java.lang.String, java.lang.String);
    private class jp.ne.ruru.park.ando.anzip.ANZip. ANRunnable extends java.lang.Object implements java.lang.Runnable
    /* ACC_SUPER bit NOT set */
{
        private final jp.ne.ruru.park.ando.anzip.ANZip this$0;
        private java.io.InputStream in1;
        public jp.ne.ruru.park.ando.anzip.ANZip.ANRunnable(jp.ne.ruru.park.ando.anzip.ANZip,java.io.InputStream);
        public void run();
    }
}
[o]-\-- -L8 ALZip.class (anzip.jar) [1] (epojava-table EPO Archive Encoded-kbd)
※ この機能はjavap を使用するため、 環境変数JAVA_HOMEか、javap にパスが設定されていないと 正常動作しません。また、projectの*.jar ファイルを クラスパスのターゲットとして使用しているので、 projectに多くの *.jar を指定すると、 クラス表示が極めて遅くなります。
[prefix] G (大文字です)メソッドビュー(EPO Java 拡張機能)
自分のクラスのメソッド一覧を表示します。

メソッド一覧で……

メソッド一覧表示画面(イメージ)
■Meadow95.exe@----
0;C:/java2/src/./java/lang/Object.java
11:package java.lang;
23:public class Object {
25:private static native void registerNatives();
[o]S:%% -L1 * epocclib-table * [1] (epocclib-table Encodede-kbd)
jdk:/java/lang/Number.java
jdk:/java/lang/NumberFormatException.java
jdk:/java/lang/Object.java
jdk:/java/lang/OutOfMemoryError.java
jdk:/java/lang/Package.java
[o]S:%% -L1724 * epojava-table * [1] (epojava-table Encodede-kbd)
スペースまたはgまたはe
ファイルを開きカーソル上のメソッド位置へ移動します。
v
ファイルを開きカーソル上のメソッド位置へ移動しますが、 書き込み禁止モード(view-mode)です。
通常のview-modeと同じくq でメソッド一覧へ戻れます。
q
閉じます。
[prefix] d ワードジャンプ(EPO Java 拡張機能)
文字列を検索して その文字列を検出したファイルの一覧を表示します。
  はっきりいって低速ですが fgrep 等の外部コマンドを使用しないので ange-ftp で使用中でも動作します。
  検索の時に入力するメッセージの意味は 以下の通りです。

  • Project :
    検索するときに指定するプロジェクト名。 [prefix] a で内容の表示や編集できます。
  • Search word :
    検索に使用する文字列。

ワード検索で……

ワード検索表示画面(イメージ)
■Meadow95.exe@----
0;c:/home/ando/tmp/ListClass.java
40;C:/java2/demo/applets/Animator/Animator.java
134;C:/java2/demo/applets/ArcTest/ArcTest.java
[o]S:%% -L1 * epocclib-table * [1] (epocclib-table Encodede-kbd)
  キーバインドはメソッド一覧と同じです。
[prefix] a (EPO Java 拡張機能)
クラス一覧を開くためのproject の編集を行ないます。
上記コマンドでフォルダ名が変だとかいう理由で弾かれたときは、 このコマンドで編集してください。
  3.5.5 版から、 変数epojava-table-alistepocc-include の2つを保存するようにしました。
  以前の環境ファイル .epojavarc が使えなくなりますので 注意をお願いいたします (今後このようなことが無いように気をつけます……)。
M-q (EPO Java 拡張機能)
上から順番に全ての行に対して [TAB]を打ったのと同等の効果が得られます。 ちょっとこのコマンドは重いのですが、 人間が打つよりかは速いです。;-)
M-Q (EPO Java 拡張機能)
K&Rスタイルにソースコードを修正/美文化します。
ちょっとこのコマンドは M-q より遥かに重いのですが、 プログラムを作成した最後に一度実行することをお勧めします。
修正規則は以下を参照してください。
[prefix] < (EPO Java 拡張機能)
コメントインします。
[prefix] > (EPO Java 拡張機能)
コメントアウトします。
M-x epojava-per-folder-indent (EPO Java 拡張機能)
指定したフォルダ配下の全てのC ソースコードとヘッダファイルを 開き、インデントを付け直します。
ろくでもない間違ったインデントを検出した場合に一挙に 変更がかけられるので大変便利です。

タイプセッタの追加

  新たにImportScrubber をプロセス起動機能(タイプセッタ)([pre] t)で起動したい。 といった場合、epojava では以下のような文を .emamcs に記述すると [pre] t iで起動することができるようになります。
(setq epojava-append-process-alist
 '((?i (type . version) 
       (command
	"ImportScrubber" "java"
	"-cp"
	"C:\\home\\src\\yatex\\importscrubber\\lib\\importscrubber.jar;C:\\home\\src\\yatex\\importscrubber\\lib\\BCEL.jar"
	"net.sourceforge.importscrubber.ImportScrubber"
	"-root" basename))))
※状況に合わせてクラスパスの変更等行ってください。
※このクラスパスの書き方は Windos 用です。 unix では ~/importscrubber/lib/importscrubber.jar:~/importscrubber/lib/BCEL.jar といった感じになるでしょう。

  また、最新のepoを使用すれば(rsyncで取ってくる必要あり)。 以下のような設定で起動後変更されたファイルがアップデートされます (ange-ftp を使用しているときには使えません)。
(setq epojava-append-process-alist
 '((?i (type . version) 
       (command
	"ImportScrubber" "java"
	"-cp"
	"C:\\home\\src\\yatex\\importscrubber\\lib\\importscrubber.jar;C:\\home\\src\\yatex\\importscrubber\\lib\\BCEL.jar"
	"net.sourceforge.importscrubber.ImportScrubber"
	"-root" basename)
       (posthook epocclib-update-file))))

ando@park.ruru.ne.jp