|
あくつです。
● (1)
>現状、ファイル名を0カラム目からフルパスで指定出力されるように
>していますので、使えていますが・・・。
えっ、そういうオプションがあるんですか・・・。
● (2)
>パッケージについては、出力先を指定してあげているので、
>問題ありません。
>javacのオプションで、出力先として自分のclassファイルを
>配置するパスを-dで指定します。
ガーン。
現在のディレクトリ( パッケージのルート )をそのまま指定できるんですね。
#知らんかった。いちいち移動していた。
#別なディレクトリに保存するためだけにあるんだと思っていた。(^^ )>>
● (3)
>次はnmakeで対応したいと思ったのですが、カレントディレ
>クトリをうまく指定できなくて・・・。
>バッチファイルをキックしようかな。
>あっ、いいてかも!明日やってみよ。
これって、パッケージのルートに相当するディレクトリを
カレントディレクトリにしたいっていうことですか。#ヾ(^^;)コダワッテル
● (4) 秀丸とカレントディレクトリ。
秀丸から run/runsync/runsync2 を実行するときは、
現在アクティブな秀丸が開いているファイルのあるディレクトリが
カレントディレクトリになります。
たとえば、
D:\lang\java\src\foo\bar\baz\MyApplet.java を開いている場合、
カレントディレクトリは
D:\lang\java\src\foo\bar\baz
です。
秀丸マクロからカレントディレクトリを操作したい場合、
わたしが知っている方法は3通りです。
(A)バッチファイルを経由する。
(B)田楽 DLL を使う。
(C)移動したいディレクトリにあるファイルを開いてアクティブにする。
● (5) 実例。
バッチで充分かも知れませんが、
一応、選択肢として示しておきます。
(B)田楽 DLL を使う。
田楽 DLL は、
http://hidemaru.xaxon.co.jp/lib/macro/index.html
からダウンロードできます。
以下の例は、
package foo.baz.bar; である
D:\lang\java\src\foo\bar\baz\MyApplet.java
のためのメイクファイル
D:\lang\java\src\MyApplet.mak
の実行例。
$$pwd = "D:\\lang\\java\\src";
$$d = hidemarudir + "\\dengakudll.dll";
if( $$d != loaddllfile ){
loaddll $$d;
if( ! result ){ message "failed to load dengakudll.dll"; endmacro; }
}
if( ! dllfunc("SETCURDIR",$$pwd) ){ message "error"; endmacro; }
run "nmake -f MyApplet.mak";
// nmake もたぶん -f。
---------------
(C)移動したいディレクトリにあるファイルを開いてアクティブにする。
##src = hidemaruhandle(0);
##close = 0;
$$mak = "D:\\lang\\java\\src\\MyApplet.mak";
if( $$mak != filename2 ){
##mak = findhidemaru($$mak);
if( ##mak == -1 ){
if( existfile($$mak) ){
openfile $$mak;
// 目障りなら、ステルスモード( hidden mode )で開く。
// openfile "/h " + $$mak;
##close = 1;
}else{
message $$mak + " が無い。"; endmacro;
}
}else{
##mak = hidemaruhandle(##mak);
setactivehidemaru ##mak;
}
}
run "nmake -f MyApplet.mak";
setactivehidemaru ##src;
if( ##close ){
closehidemaruforced ##mak;
}
● (6) パッケージから、移動したい場所を取得するサンプルマクロ。
D:\lang\java\src\foo\bar\baz\MyClass.java
というファイルに、
package foo.bar.baz;
が書いてある。
この MyClass.java がアクティブなときに、
以下のマクロを実行すると、
D:\lang\java\src をカレントディレクトリにして、
コマンドプロンプトが起動します。
// ------------------------------
call get_package_root;
$$cmd = "cmd.exe /k cd " + $DIR;
// $$cmd = "command.com /k cd " + $DIR;
run $$cmd;
endmacro;
get_package_root:
escape; // 選択などの解除。
disabledraw; // 描画禁止。
##cx = x; ##cy = y; // 現在のカーソル位置保存。
$PACKAGE = "";
gofiletop;
searchdown2 "^[ \\t]*package[ \\t]+[0-9A-Za-z_.]+[ \\t]*;", regular;
if( result ){
// パッケージがある場合。
searchdown "kage"; escape; right 4;
searchdown "[0-9A-Za-z_.]+", regular;
$PACKAGE = gettext( seltopx, seltopy, selendx, selendy );
$$src = $PACKAGE + "." + basename2;
##len = strlen(filename2) - strlen($$src);
$DIR = leftstr(filename2, ##len);
}else{
// パッケージが無い場合。
$DIR = directory2;
if( rightstr($DIR, 1) != "\\" ) $DIR = $DIR + "\\";
// 必ず \ をつけておく。
}
escape;
moveto ##cx, ##cy;
return $DIR;
// 秀丸の場合、田楽 DLL と組合わせると楽です。
// call get_package_root;
// if( ! dllfunc("SETCURDIR",$DIR) ){ message "error"; endmacro; }
// run "nmake -f MyApplet.mak";
// では。
|
|