内容を維持して(新規)(更新)状態にするNo.10470
tkmr.akhs さん 24/11/14 12:26
 
 以下のようなマクロを作成しております。

このマクロを実行すると、「削除されたファイルの確認」メッセージ ウィンドウが
表示されますが、自動で「内容を維持して(新規)(更新)状態にする」ボタンを押した
状態にしたいです。

マクロで実現可能でしょうか。

----------------------------------------------------------

// 一時フォルダのパス取得
$temp_root = getenv("TEMP");

// 作業用フォルダーのパス構築
$temp_dir = $temp_root + @"\hidemaru_openastemplate_" + str(tickcount);

// 作業用ファイルのパス構築
$temp_file = $temp_dir + @"\" + basename2;

// 古い作業用フォルダーの削除
runex "CMD /C DEL /f \"" + $temp_root + @"\hidemaru_openastemplate_*" + "\"",
 0, 0, "", 0, "", 0, "", 0, "", 2, 1;

// 作業用フォルダーの作成
runex "CMD /C MKDIR \"" + $temp_dir + "\"", 1, 0, "", 0, "", 0, "", 0, "", 2,
 1;

// 作業用フォルダーに現在のファイルをコピー
runex "CMD /C COPY \"" + filename + "\" \"" + $temp_file + "\"", 1, 0, "", 0,
 "", 0, "", 0, "", 2, 1;

// 作業用ファイルを開く
openfile $temp_file;

// 作業用ファイルを消す
runex "CMD /C DEL /f \"" + $temp_file + "\"", 0, 0, "", 0, "", 0, "", 0, "",
 2, 1;

// 作業用フォルダーを消す
runex "CMD /C DEL /f \"" + $temp_dir + "\"", 0, 0, "", 0, "", 0, "", 0, "",
2, 1;

// 内容を維持して(新規)(更新)状態にする
// どうやる??

[ ]
RE:10470 内容を維持して(新規)(更新)状態No.10471
こみやんま さん 24/11/14 13:58
 
提示されてるマクロの中で、
最後に「作業用フォルダ」も消しちゃってるから、
作業用フォルダ云々は実は全く目的とは関係ないんですかね?

単純に「今開いているファイルのテキスト」を
「新規のまだファイル名がついていない状態」としたい、
ということなのかな?

setstaticvariable "totaltext", gettotaltext(), -1;

closenew;

insert getstaticvariable("totaltext", -1);


[ ]
RE:10471 内容を維持して(新規)(更新)状態No.10472
tkmr.akhs さん 24/11/14 14:18
 
返信ありがとうございます。

MS Office のファイルの 右クリック ⇒ 新規 のような、「あるファイルを基として
新規ファイルを作成する」ようなことがしたいと思い試行錯誤しております。

- タブのタイトルは元のファイル名が判るものにしたい
- Ctrl + S で不用意に元のファイルを上書きしたくないが、編集可能な状態とした
い (起動オプション /r は不適)
- 最終的には、レジストリをいじって右クリック メニューに登録し、このマクロを
起動オプションで指定する予定

[ ]
RE:10470 内容を維持して(新規)(更新)状態No.10473
igus さん 24/11/14 14:28
 
//テキスト保存するよ.mac

selectall;copy;
$temp_root = getenv("TEMP");
$temp_dir = $temp_root + @"\hidemaru_openastemplate_" + str(tickcount);
$temp_file = $temp_dir + @"\" + basename2;
runex "CMD /C MKDIR \"" + $temp_dir + "\"", 1, 0, "", 0, "", 0, "", 0, "", 2,
 1;
//$temp_fileを消しておく
runex "CMD /C DEL /f "+$temp_file;
openfile $temp_file;
paste;
endmacro;

[ ]
RE:10472 内容を維持して(新規)(更新)状態No.10474
こみやんま さん 24/11/14 14:55
 
多分

$title = gettitle(0);
$basename = basename;

setstaticvariable "totaltext", gettotaltext(), -1;

closenew;

insert getstaticvariable("totaltext", -1);

title $title, 0;
title $basename, 3;
title -1, 0;
title -1, 3;

みたいになってくるんじゃないでしょうか。
(本来のクローンみたいなテキストに対して、ファイル実体を与えてよいのか、ファ
イル実体を与えるべきではないのかで実装がかわってくるかとおもいます)

上のはあくまで「ファイル実体は与えないが、さも元のファイルであるかのように振
る舞った場合」の例ですかねぇ。

とはいえ、上記例ではファイル実体は存在せず、実体はあくまで(新規・無題)であ
るため、ファイルを保存しようとした際には、新規ファイルであるかのような振る舞
いにはなりますが。

レジストリというか、秀丸外から起動する際には、
hidemaru.exe でファイルを引数としつつ上記マクロも引数で実行すれば、
それっぽい感じにはなるんじゃないでしょうか。


[ ]
RE:10474 内容を維持して(新規)(更新)状態No.10476
tkmr.akhs さん 24/11/14 15:11
 
ありがとうございます! まさにやりたいことができています。
しばらくこのマクロを使用してみます。


[ ]
RE:10476 内容を維持して(新規)(更新)状態No.10478
こみやんま さん 24/11/14 16:08
 
>しばらくこのマクロを使用してみます。

「元のファイル種類の強調表示や設定」など
「見た目上」真似ておきたい、
ということであれば、configset 系を追加しておけばよいかと思います。

$title = gettitle(0);
$basename = basename;
$configset = currentconfigset; // 追加
setstaticvariable "totaltext", gettotaltext(), -1;

closenew;
insert getstaticvariable("totaltext", -1);
configset $configset; // 追加
title $title, 0;
title $basename, 3;
title -1, 0;
title -1, 3;


[ ]