範囲選択部分を他のファイルへ抜き出しNo.07917
でがらし さん 15/11/22 20:43
 
 ファイルをxyzzyで印刷するために、下記のマクロを作っています。論理行単位で
範囲選択をしているときは、その部分だけを印刷させたいのですが、その部分がうま
く行きません。最初に開いていたファイルがtmp.txtに置き換わり、xyzzyにはファイ
ルの全体が渡ります。どこが悪いのか、ご教示下さい。

====
//PX.MAC:xyzzyで印刷

 setcompatiblemode 0x00000050;

#main = hidemaruhandle(0); // 現秀丸のハンドル

#x = x; #y = y;

#sel = selecting;  // 範囲指定状態の取得
if(#sel){      // 範囲指定ならば

selectline 1;
copy;
openfile "/h";
paste;      // 貼り付け
saveas "d:\\tmp.txt";

#sub = hidemaruhandle(0); // 新規秀丸のハンドル

    setactivehidemaru #main;
    closehidemaruforced #sub;

run "c:\\tool\\xyzzy\\xyzzy.exe -p d:\\tmp.txt";//印刷起動

 } else {

run "c:\\tool\\xyzzy\\xyzzy.exe -p %f";//印刷起動
 }

moveto #x, #y;

endmacro;
====


[ ]
RE:07917 範囲選択部分を他のファイルへ抜No.07919
山紫水明 さん 15/11/22 22:19
 
 でがらしさん,

> ファイルをxyzzyで印刷するために、下記のマクロを作っています。論理行単
>位で範囲選択をしているときは、その部分だけを印刷させたいのですが、その
>部分がうまく行きません。最初に開いていたファイルがtmp.txtに置き換わり、
>xyzzyにはファイルの全体が渡ります。どこが悪いのか、ご教示下さい。

 秀丸エディタのユーザーでなおかつxyzzyの起動オプションを知っている人で
ないとコメントできないでしょうね。
 範囲選択状態で「ファイル」→「印刷」でそのまま印刷できるのですが,なぜ
それで具合が悪いか説明された方がいいでしょう。

                    山紫水明

[ ]
RE:07919 範囲選択部分を他のファイルへ抜No.07920
でがらし さん 15/11/22 22:27
 
山紫水明さん、こんばんは。

 xyzzy -p

 は、指定されたファイルを印刷する(編集画面を開かない)というオプションです。
その後にファイル名(%fは編集中のファイル)を置くと、そのファイルを印刷します。
秀丸の印刷機能を使わないのは、秀丸パブリッシャーも含めて、ヘッダーなどの設定
をうまく使いこなせないせいです。

 xyzzyは1つの例です。問題は秀丸以外のプログラムに処理させるために、ファイル
の一部を範囲選択して、それを他のプログラムに渡すマクロの組み方がわからないと
いうことです。

[ ]
RE:07917 範囲選択部分を他のファイルへ抜No.07921
h-tom さん 15/11/22 22:34
 

h-tom です。

特に問題なさそうですけどね。

>最初に開いていたファイルがtmp.txtに置き換わり、xyzzyにはファイ
>ルの全体が渡ります。
という事から、

>openfile "/h";
の部分で、なぜか"openfile" が失敗していて、現状のファイルのまま、
>paste;      // 貼り付け
>saveas "d:\\tmp.txt";
していると思いますけど、置き換わったファイルには"paste"されている
のでしょうか?

新規秀丸エディタを開く部分で、非表示をやめて、閉じる前に"message文"
を追加し、ちゃんと新規秀丸エディタが開いているか確認してみては
どうでしょう?

[ ]
RE:07920 範囲選択部分を他のファイルへ抜No.07923
山紫水明 さん 15/11/23 08:25
 
 でがらしさん,

> xyzzyは1つの例です。問題は秀丸以外のプログラムに処理させるために、フ
> ァイル>の一部を範囲選択して、それを他のプログラムに渡すマクロの組み方
> がわからないと>いうことです。

 こちらにはxyzzyがないので,
run "c:\\tool\\xyzzy\\xyzzy.exe -p d:\\tmp.txt";//印刷起動
の前に
message "ok";
endmacro;
の2行を入れて試して見ました。
 メッセージはきちんと出て,d:\\tmp.txtの内容は選択範囲が反映されていま
すから,マクロは正しく動いていると思われます。後はそれがxyzzyに渡ってい
ないことでしょうから,起動時のオプションの表記方法かなと思いました。

                    山紫水明
                    SANSHISUIMEI

[ ]
RE:07921 openfile "/h" を newfile に変No.07924
でがらし さん 15/11/23 09:37
 
 h-tomさん、おはようございます。

 ご指摘にヒントを得て、openfile "/h" を newfile に変えたところ、希望通りの
動きをするようになりました。うまく行かないときは、手動でコピペしていたので、
とても便利になりました。ありがとうございました。

 openfile /hではほかにも、ときどき、想定外の挙動に頭をひねることがありまし
た。よくわからないことが起こることがあるようです。


[ ]
RE:07923 お礼No.07925
でがらし さん 15/11/23 09:43
 
 コメント、ありがとうございます。

 h-tomさんへのレスに記載したように、openfile "/h" を newfile に変えたところ、
うまく行きました。隠れファイルの利用では何度か、悩まされたことがありましたが、
条件を特定することができません。

 今回の場合は、d:\\tmp.txt が生成されて、そこへ選択範囲がコピペされていれば
いいわけですが、その途中の openfile "/h" を d:\\tmp.txt に変えるあたりでうま
くいかなくなるようです。

 まずはお礼まで申し上げます。

[ ]
RE:07925 お礼No.07926
山紫水明 さん 15/11/23 10:52
 
 でがらしさん,

openfile "/h";
if(result == false ) newfile;
とすれば,確実性があがるかもしれまんね。

                    山紫水明

[ ]
RE:07926 お礼No.07927
でがらし さん 15/11/23 14:02
 
 了解です。隠しファイルを使うのは気が進まなくなりましたが、何かで使うことが
あれば、ご教示のコードを入れるようにします。

 ありがとうございました。

[ ]