すべて戻す

提供:MeryWiki
2020年6月1日 (月) 19:39時点におけるSukemaru (トーク | 投稿記録)による版 (ページを作成)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動


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

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

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


すべて戻す

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

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

ソースコード

#title = "すべて戻す"
#tooltip = "最後に保存したときの状態まで戻す"

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

// ■ 「無限ループ」防止のため制限時間
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 < 3000 );

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


もっとたくさん元に戻す

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

ソースコード

#title = "もっとたくさん元に戻す"
#tooltip = "Mery で開いたときの状態まで元に戻す"

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

// ■ 「無限ループ」防止のため制限時間
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 < 3000 );

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


メモ

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

スポンサーリンク