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

提供: MeryWiki
ナビゲーションに移動 検索に移動
Noah (トーク | 投稿記録)
新規作成
 
Noah (トーク | 投稿記録)
編集の要約なし
1行目: 1行目:
= 概要 =
= 概要 =
Meryでは一度編集してUndo等で元の状態に戻しても、変更マーク(タブに表示される「*」マーク)が消えない仕様になっています。
このプラグインを導入すると、文書を変更した際、保存済みデータと一致したときに変更マーク(タブに表示される「*」マーク)を自動的に消すことができます。
このマクロを使用すると、結果変更されていないタブの変更マークを消すことができます。


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


= 注意点 =
* Undo/Redo以外にも対応
[[includeライブラリ]]のIO.jsを使用しています。
** 1文字入力してBackSpaceで削除して元と同じ状態になっても変更マークが消えます。
このマクロを使用する前に[[includeライブラリ]]をダウンロードし、Macrosフォルダ内に配置してください。
* サイズが大きいファイルのときの動作が早い
** 変更の都度ファイルを読み込まず、キャッシュしているため、サイズが大きいファイルのときの動作が早いです。
* メモリの消費量が上がる
** 内部でキャッシュしているため、その分メモリを消費します。


= ソースコード =
= 動作環境 =
下記のランタイムがインストールされている必要があります。
* .NET Framework 4.5 以降
Windows 8以降であれば.NET Framework 4.5以降が標準でインストールされているはずですので、インストールは不要です(多分)。


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


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


for (var e = new Enumerator(editor.documents); !e.atEnd(); e.moveNext()) {
= インストール =
var d = e.item();
ダウンロードしたファイルを解凍して出てくるPluginsフォルダの中身すべてをMeryのPluginsフォルダに配置してください。
// 保存済みならスキップ
 
if (d.Saved) {
= 使い方 =
continue;
インストール直後はプラグインが有効になっていますので、普段の同じようにMeryをお使いください。<br>
}
文書を変更した際、元の文書から変更されていなければタブに表示される「*」マークを自動的に消します。<br>
// 未保存はスキップ
<br>
if (!d.FullName) {
このプラグインを無効化する場合は、[ツール(T)] -> [プラグイン] -> [文書が変更をチェック]を選択してチェックが付いていない状態にしてください。
continue;
このプラグインを再度有効化する場合は、[ツール(T)] -> [プラグイン] -> [文書が変更をチェック]を選択してチェックが付いている状態にしてください。
}
 
// サイズ制限
= オプション =
if (maxLength > 0 && d.Text.length > maxLength) {
;チェックする文書の最大文字数
continue;
:チェックする文書の最大文字数を指定します。編集している文書が指定した文字数以上の場合、変更されたかどうかのチェックをしません。マイナスを指定すると無制限です(初期値)。動作が重い場合やメモリ消費量を抑えたい場合は値を指定してください。
}
;遅延時間
// テキストのロード
:高速化のために遅延処理を入れています。動作が重い場合は値を増やしてみてください。その代わりに大きくすると、変更マークが消すのにかかる時間が増えます。
var loadText = IO.LoadFromFile(d.FullName, d.Encoding);
// 一致していれば変更マークを消す
if (loadText === d.Text) {
d.Saved = true;
}
}
</source>


= 更新履歴 =
= 更新履歴 =
* 2019/03/03 初版
* 1.0.0 : 2019/09/08
** 初版

2019年9月8日 (日) 16:00時点における版

概要

このプラグインを導入すると、文書を変更した際、保存済みデータと一致したときに変更マーク(タブに表示される「*」マーク)を自動的に消すことができます。

少し便利な Undo/Redoのプラグイン版ですが、マクロと比べて下記の違いがあります。

  • Undo/Redo以外にも対応
    • 1文字入力してBackSpaceで削除して元と同じ状態になっても変更マークが消えます。
  • サイズが大きいファイルのときの動作が早い
    • 変更の都度ファイルを読み込まず、キャッシュしているため、サイズが大きいファイルのときの動作が早いです。
  • メモリの消費量が上がる
    • 内部でキャッシュしているため、その分メモリを消費します。

動作環境

下記のランタイムがインストールされている必要があります。

  • .NET Framework 4.5 以降

Windows 8以降であれば.NET Framework 4.5以降が標準でインストールされているはずですので、インストールは不要です(多分)。

Windows 10 Home 64bit(1803)とMery 2.8.4の32bit/64bitで動作確認を行っております。
Windows 10以外でもVista, 7, 8であれば.NET Framework 4.5を利用できますので、動くかもしれません。
Windows XPは.NET Framework 4.5の対応が打ち切られていますので、動作対象外です。

ダウンロード

64ビット版
ファイル:CheckModified-x64-1.0.0.zip
32ビット版
ファイル:CheckModified-x86-1.0.0.zip

インストール

ダウンロードしたファイルを解凍して出てくるPluginsフォルダの中身すべてをMeryのPluginsフォルダに配置してください。

使い方

インストール直後はプラグインが有効になっていますので、普段の同じようにMeryをお使いください。
文書を変更した際、元の文書から変更されていなければタブに表示される「*」マークを自動的に消します。

このプラグインを無効化する場合は、[ツール(T)] -> [プラグイン] -> [文書が変更をチェック]を選択してチェックが付いていない状態にしてください。 このプラグインを再度有効化する場合は、[ツール(T)] -> [プラグイン] -> [文書が変更をチェック]を選択してチェックが付いている状態にしてください。

オプション

チェックする文書の最大文字数
チェックする文書の最大文字数を指定します。編集している文書が指定した文字数以上の場合、変更されたかどうかのチェックをしません。マイナスを指定すると無制限です(初期値)。動作が重い場合やメモリ消費量を抑えたい場合は値を指定してください。
遅延時間
高速化のために遅延処理を入れています。動作が重い場合は値を増やしてみてください。その代わりに大きくすると、変更マークが消すのにかかる時間が増えます。

更新履歴

  • 1.0.0 : 2019/09/08
    • 初版
スポンサーリンク