|
TAKA です。
>>やりたいことは、ワーク用に新規ファイルを開いておき、そこで一
>>時的な作業を行い、作業した内容を元の秀丸に戻したいと思ってい
>>ます。
>>その時に、新規ファイルにはアクティブな秀丸と同一内容の設定で
>>作業を行いたいのです。
>>すべての情報が反映されれば、将来、秀丸に新しい機能が追加され
>>てもそれも自動的に反映されるため、マクロの修正もいりませんし。
>
>そんなことなら、
>わざわざ、現在の設定をマクロとかで用意しなくても、
>同じ拡張子の一時編集用ファイルを用意した方が手っ取り早いのでは?
>(マクロでやるなら、拡張子を判定して、対応する一時編集用ファイルを開くだけ)
はい、これは最終手段として考えています。
拡張子を取得するためには、「filename」等でファイル名を取得後、
拡張子を取得する必要がありますが、3つ問題があります。
[その1]
最初の「filename」でヌルが返ってくる場合があります。
このヌルが返ってくる場合には、私が認識しているものには2つあ
りまして、無題とgrepの結果があります。無題については、「共通」
の設定を使用すればいいので、ワークファイルを新規と作成すれば
いいのですが、「grepの結果」は判断する術が現状ではないので、
(マクロ作者フォーラムでも話題になりましたが)、無題同様にワー
クファイルを新規と作成するしか方法がありません。(本当は
「grepの設定」にしたいです)
[その2]
ファイル名から拡張子を正確に取得するためには、ファイル名の後
ろから「.」を調べてそれ以降を拡張子とする必要があります。
(ロングファイル名には、「.」が使用できるため)
そのためには、以下のようなコールバック関数を毎回用意する必要
があります。
#ファイル名関連キーワードに拡張子でもあれば、少しは楽になり
ます。
##これも、要望として出してもいいとは思っています。
###要望がすでにあったかも。
// 文字列の後方から文字列を検索するコールバック(ここから)
strstr2:
##rc = -1;
$$wk = $$1;
while( 1 )
{
##pos = strstr( $$wk, $$2 );
if( ##pos == -1 )
{
break;
}
##rc = ##rc + ##pos + 1;
$$wk = rightstr( $$wk, strlen( $$wk ) - ##pos - 1 );
}
return ##rc;
// 文字列の後方から文字列を検索するコールバック(ここまで)
[その3]
拡張子を決めたとして、ワークファイルのファイル名を既に存在し
ないものにしないといけません。
方法はいろいろあると思いますが、多分作らないだろうなというフ
ァイル名をワークファイルとする方法。
もっと厳密にするために、そのファイル名にループ処理で連番をつ
けながら、それが存在するかどうかをチェックして、存在しなけれ
ば、そのファイル名を採用する。
もっと厳密にするなら、そのファイルが保存されていないが、秀丸
で新規に作成中かもしれないので、それもチェックする。
以上のように、「同じ拡張子の一時編集用ファイル」を作成しよう
と思うと、ここまで考えないといけません。
#最終手段を使用する時には、ここまではしないとは思いますが
何にしろ、最終手段の方法は、完璧でもありませんし、面倒である
と思っています。
情報ありがとうございました。
|
|