「文書が変更されていなければ変更マークを消す」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
Noah (トーク | 投稿記録)
編集の要約なし
MSY-07 (トーク | 投稿記録)
SyntaxHighlightにcopyの追加
 
(2人の利用者による、間の17版が非表示)
1行目: 1行目:
= 概要 =
このマクロは[https://www.haijin-boys.com/software/mery/mery-3-0-0#15 Mery Ver 3.0.0]で追加された「『元に戻す』で変更していない状態まで戻したときに変更マーク (*) を消す」と同機能です。
このプラグインを導入すると、文書を変更した際、保存済みデータと一致したときに変更マーク(タブに表示される「*」マーク)を自動的に消すことができます。


[[少し便利な Undo/Redo]]のプラグイン版ですが、マクロと比べて下記の違いがあります。
== 概要 ==
Meryでは一度編集してUndo等で元の状態に戻しても、変更マーク(タブに表示される「*」マーク)が消えない仕様になっています。このマクロを使用すると、結果変更されていないタブの変更マークを消すことができます。


* Undo/Redo以外にも対応
[[少し便利な Undo/Redo]]でもUndo/Redoのタイミングで変更マークを消すことができますが、Undo/Redoの度に変更されているかチェックするには私のPCでは少し重かったため任意のタイミングで実行できるように切り出しました。
** 1文字入力してBackSpaceで削除して元と同じ状態になっても変更マークが消えます。
* サイズが大きいファイルのときの動作が早い
** 変更の都度ファイルを読み込まず、キャッシュしているため、サイズが大きいファイルのときの動作が早いです。
* メモリの消費量が上がる
** 内部でキャッシュしているため、その分メモリを消費します。


= 動作環境 =
== 注意事項 ==
下記のランタイムがインストールされている必要があります。
[[includeライブラリ]]のIO.jsを使用しています。このマクロを使用する前にincludeライブラリをダウンロードし、Macrosフォルダ内に配置してください。
* .NET Framework 4.5 以降
Windows 8以降であれば.NET Framework 4.5以降が標準でインストールされているはずですので、インストールは不要です(多分)。


Windows 10 Home 64bit(1803)とMery 2.8.4の32bit/64bitで動作確認を行っております。<br>
== ソースコード ==
Windows 10以外でもVista, 7, 8であれば.NET Framework 4.5を利用できますので、動くかもしれません。<br>
<syntaxhighlight lang="javascript" copy>
Windows XPは.NET Framework 4.5の対応が打ち切られていますので、動作対象外です。
#title = "文書が変更されていなければ変更マークを消す"
#include "include/IO.js"


= ダウンロード =
// チェックする文書の最大文字数。マイナスを指定すると無制限。
;64ビット版
var maxLength = 10000000;
:[[ファイル:CheckModified-x64-1.0.0.zip]]
;32ビット版
:[[ファイル:CheckModified-x86-1.0.0.zip]]


= インストール =
for (var e = new Enumerator(editor.documents); !e.atEnd(); e.moveNext()) {
ダウンロードしたファイルを解凍して出てくるPluginsフォルダの中身すべてをMeryのPluginsフォルダに配置してください。
var d = e.item();
// 保存済みならスキップ
if (d.Saved) {
continue;
}
// 未保存はスキップ
if (!d.FullName) {
continue;
}
// サイズ制限
if (maxLength > 0 && d.Text.length > maxLength) {
continue;
}
// テキストのロード
var loadText = IO.LoadFromFile(d.FullName, d.Encoding);
// 一致していれば変更マークを消す
if (loadText === d.Text) {
d.Saved = true;
}
}
</syntaxhighlight>


= 使い方 =  
== 変更履歴 ==
インストール直後はプラグインが有効になっていますので、普段の同じようにMeryをお使いください。<br>
* 1.0.0 (2019-03-03)
文書を変更した際、元の文書から変更されていなければタブに表示される「*」マークを自動的に消します。<br>
<br>
このプラグインを無効化する場合は、[ツール(T)] -> [プラグイン] -> [文書が変更をチェック]を選択してチェックが付いていない状態にしてください。
このプラグインを再度有効化する場合は、[ツール(T)] -> [プラグイン] -> [文書が変更をチェック]を選択してチェックが付いている状態にしてください。
 
= オプション =
;チェックする文書の最大文字数
:チェックする文書の最大文字数を指定します。編集している文書が指定した文字数以上の場合、変更されたかどうかのチェックをしません。マイナスを指定すると無制限です(初期値)。動作が重い場合やメモリ消費量を抑えたい場合は値を指定してください。
;遅延時間
:高速化のために遅延処理を入れています。動作が重い場合は値を増やしてみてください。その代わりに大きくすると、変更マークが消すのにかかる時間が増えます。
 
= 更新履歴 =
* 1.0.0 : 2019/09/08
** 初版
** 初版

2025年6月30日 (月) 01:05時点における最新版

このマクロはMery Ver 3.0.0で追加された「『元に戻す』で変更していない状態まで戻したときに変更マーク (*) を消す」と同機能です。

概要[編集]

Meryでは一度編集してUndo等で元の状態に戻しても、変更マーク(タブに表示される「*」マーク)が消えない仕様になっています。このマクロを使用すると、結果変更されていないタブの変更マークを消すことができます。

少し便利な Undo/RedoでもUndo/Redoのタイミングで変更マークを消すことができますが、Undo/Redoの度に変更されているかチェックするには私のPCでは少し重かったため任意のタイミングで実行できるように切り出しました。

注意事項[編集]

includeライブラリのIO.jsを使用しています。このマクロを使用する前にincludeライブラリをダウンロードし、Macrosフォルダ内に配置してください。

ソースコード[編集]

#title = "文書が変更されていなければ変更マークを消す"
#include "include/IO.js"

// チェックする文書の最大文字数。マイナスを指定すると無制限。
var maxLength = 10000000;

for (var e = new Enumerator(editor.documents); !e.atEnd(); e.moveNext()) {
	var d = e.item();
	// 保存済みならスキップ
	if (d.Saved) {
		continue;
	}
	// 未保存はスキップ
	if (!d.FullName) {
		continue;
	}
	// サイズ制限
	if (maxLength > 0 && d.Text.length > maxLength) {
		continue;
	}
	// テキストのロード
	var loadText = IO.LoadFromFile(d.FullName, d.Encoding);
	// 一致していれば変更マークを消す
	if (loadText === d.Text) {
		d.Saved = true;
	}
}

変更履歴[編集]

  • 1.0.0 (2019-03-03)
    • 初版
スポンサーリンク