「編集モードの自動選択」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
MSY-07 (トーク | 投稿記録)
ウィキリンクの除去、マークアップの修正、句点や空白の除去など
MSY-07 (トーク | 投稿記録)
正規表現を修正(エラーが出るため)
 
(同じ利用者による、間の3版が非表示)
20行目: 20行目:
** コマンドラインオプション (<u>Mery.exe'''/m''' ''"ModeName"''</u>)
** コマンドラインオプション (<u>Mery.exe'''/m''' ''"ModeName"''</u>)
** 編集モードを指定します
** 編集モードを指定します
* document.[[マクロリファレンス:Document_インターフェイス#Encoding_プロパティ|Encoding]] '''= nnnn;'''
** コマンドラインオプション (<u>Mery.exe'''/cp''' ''Encoding''</u>)
** エンコードをエンコード定数で定義されている数値で指定します([[マクロリファレンス:エンコード定数|エンコード定数]]を参照)
* document.'''selection.'''[[マクロリファレンス:Selection_インターフェイス#SetActivePoint_メソッド|SetActivePoint]]'''(mePosLogical, x, y);'''
** カーソル位置を設定します
*** コマンドラインオプション (<u>Mery.exe'''/l''' ''LineNumber''</u>)
**** 行(論理座標)に移動します ※マクロ上では "y" に行番号(1~)で指定
*** コマンドラインオプション (<u>Mery.exe'''/cl''' ''ColumnNumber''</u>)
**** 桁(論理座標)に移動します ※マクロ上では "x" に桁番号(1~)で指定


== ソースコード ==
== ソースコード ==
設定部分を配列化して管理しやすくした簡易バージョンです。
<syntaxhighlight lang="javascript" copy>
 
コマンドラインで使えるオプション記述のうち、エンコード指定とカーソル位置の設定には対応していません。
 
<syntaxhighlight lang="javascript">
#title = "編集モード自動判別"
#title = "編集モード自動判別"
#tooltip = "表示モード自動判別"
#tooltip = "表示モード自動判別"
43行目: 30行目:
// イベント実行「ファイルを開いた時」または「アクティブな文書が変更された時」
// イベント実行「ファイルを開いた時」または「アクティブな文書が変更された時」
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
const type = { n:document.Name , f:document.FullName };
const type = {
n: document.Name,
f: document.FullName
};


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


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

2026年9月11日 (金) 08:23時点における最新版

概要[編集]

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

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

※「書き換え禁止」は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;
	}
}
スポンサーリンク