すべて戻す

2021年1月20日 (水) 21:08時点におけるSukemaru (トーク | 投稿記録)による版 (修正版。ZIP書庫を追加。)


以下のマクロは、いずれもループ処理で Undo 操作を連続実行させるものなので、「無限ループ」防止のために「3秒」の初期値で制限時間を設定してあります。

※ 完全に元に戻りきらなかった場合は、念のためもう一度実行してみてください。

Mery で開いたまま他のエディタなどで編集・上書き保存してから Mery 側での「読み直しますか?」の確認ダイアログで「はい」を選んで読み直ししてしまった場合には元に戻すことができません。


ダウンロード

ダウンロード >> 「ファイル:すべて戻す.zip」(アイコン入り)

  • すべて戻す.js
  • もっとたくさん元に戻す.js


すべて戻す

最後に保存したときの状態まで「元に戻す (Undo)」を連続試行します。

[ファイル] メニュー >> [読み直し] >> [自動選択] するのと同じ結果になるとおもいますが、このマクロで元に戻した内容は「やり直し (Redo)」可能です。
また、このマクロは『無題』タブでも利用できます。

ソースコード
#title   = "すべて戻す"
#tooltip = "最後に保存したときの状態まで戻す"
// #icon = "undo_more.ico"

// ---------- ▼ 設定項目 ▼ ----------

// ■ 「無限ループ」防止のため制限時間
var limit = 3000;	// 単位: ミリ秒

// ---------- ▲ 設定項目 ▲ ----------

var d = editor.ActiveDocument;
var undoCount = 0,  restart = new Date(),  elpased;
limit = ( limit > 0 ) ? limit : 3000;

do {
  d.Undo();  undoCount ++;
  elpased = new Date() - restart;	// 経過時間(ミリ秒)
} while ( ! d.Saved && elpased < limit );

Status = " ... " + undoCount + " 回 UNDO しました。  [ "
+ ( elpased / 1000 ).toFixed( 3 ).replace( /\./, ". " ) + " 秒 ]";


もっとたくさん元に戻す

「最後に保存したときの状態」よりも前の「Mery で開いたときの状態」まで元に戻したい場合は、こちらのマクロをご利用ください。

ソースコード
#title = "もっとたくさん元に戻す"
#tooltip = "Mery で開いたときの状態まで元に戻す"
// #icon = "restore[5].ico"

// ---------- ▼ 設定項目 ▼ ----------

// ■ 「無限ループ」防止のため制限時間
var limit = 3000;	// 単位: ミリ秒

// ---------- ▲ 設定項目 ▲ ----------

var d = editor.ActiveDocument;
var undoCount = 0,  restart = new Date(),  elpased;
limit = ( limit > 0 ) ? limit : 3000;

d.Saved = false;
do {
  d.Undo();  undoCount ++;
  elpased = new Date() - restart;	// 経過時間(ミリ秒)
} while ( elpased < limit );

Status = " ... " + undoCount + " 回 UNDO しました。  [ "
+ ( elpased / 1000 ).toFixed( 3 ).replace( /\./, ". " ) + " 秒 ]";


メモ

このマクロは、「コンパクトメニュー」マクロ用の独自コマンドとしてつくった機能を単独マクロとして改編したものです。 単独版の「すべて戻す」マクロにするにあたり、制限時間を任意に変更するための設定項目を追加してあります。


  • 2021/01/20
制限時間の設定値が反映されず3秒固定になってしまっていたミスを修正。
スポンサーリンク