編集モードの自動選択

2026年9月11日 (金) 08:23時点におけるMSY-07 (トーク | 投稿記録)による版 (正規表現を修正(エラーが出るため))
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

概要 編集

拡張子で適切に判別できないファイルの「編集モード」を、ファイル名で自動割り振りします。

また、普段は再編集の必要がないファイルをファイル名で自動割り振りして「書き換え禁止」で開くようにします。

※「書き換え禁止」はMery上で編集禁止(仮ロック)にする機能で、[編集] メニューの項目「書き換え禁止」で解除できます。ファイル属性を「読み取り専用」にするわけではありません。

注意事項 編集

「ファイルを開いた時」専用のイベントマクロです(カスタマイズを参照)。

コマンドラインオプション 編集

マクロ上でMeryのコマンドラインオプション指定に相当する記述法は以下の通りになります。

※このページのソースコードに書き足す場合は「document.」の部分は省略可。

  • document.ReadOnly = true;
    • コマンドラインオプション (Mery.exe/r)
    • 書き換え禁止に設定します
  • document.Mode = "ModeName";
    • コマンドラインオプション (Mery.exe/m "ModeName")
    • 編集モードを指定します

ソースコード 編集

#title = "編集モード自動判別"
#tooltip = "表示モード自動判別"

// -----------------------------------------------------------------------------
// ファイル名に含まれる特定ワードで表示モードを変更するマクロ
// イベント実行「ファイルを開いた時」または「アクティブな文書が変更された時」
// -----------------------------------------------------------------------------
const type = {
	n: document.Name,
	f: document.FullName
};

//-----------------------------------設定------------------------------------
const n = type.f; // 検索対象の種類:type.n:ファイル名と拡張子  type.f:フルパス
const RO = "書禁"; // 書き換え禁止フラグ名(編集モード名と被る場合に変更してください)
const m = [
//	[/ファイル名(正規表現可)/検索フラグ(省略可), "編集モード名(省略可)", "書禁フラグ(省略可)"],
	[/(readme|README)\.txt$/, "Markdown"],
	[/青空文庫|[\\\/]book[\\\/]/i, "書禁"],
	[/\\Mery\\Macros\\.+\.js$/i, "Mery_Macro_JS"],
];

//-----------------------------------本体------------------------------------
for (let i = 0, imax = m.length; i < imax; i = (i + 1) | 0) {
	if (n.match(m[i][0])) {
		if (m[i][1] != RO) {
			editor.ActiveDocument.mode = m[i][1];
			if (m[i][2] === RO) {
				editor.ActiveDocument.ReadOnly = true;
			}
		} else {
			editor.ActiveDocument.ReadOnly = true;
		}
		break;
	}
}
スポンサーリンク