「ファイルを読み直す・開きなおす」の版間の差分
ナビゲーションに移動
検索に移動
細編集の要約なし |
第2版に更新。画像を追加 |
||
| 8行目: | 8行目: | ||
* '''読み取り専用属性''' ON/OFF の変更(ファイルを開きなおす) | * '''読み取り専用属性''' ON/OFF の変更(ファイルを開きなおす) | ||
* ファイルを閉じて開きなおす | * ファイルを閉じて開きなおす | ||
*「編集モードの設定」パネルを開く | |||
*「編集モード」を変更するサブメニュー | |||
[[ファイル:ファイルを読み直す・開きなおす.png|link=]] | |||
;仕様上の制限 | |||
* ファイルを「開きなおす」場合は、タブの並び順のさいごの位置に開きます。<br> また、開きなおしたファイルは、拡張子ごとの既定の「編集モード」になります。 | |||
*「無題」ドキュメントは読み直しやエンコード指定ができないので、「編集モード サブメニュー」だけを表示します。 | |||
*「編集モード サブメニュー」は、「編集モードの設定」でカスタマイズした並び順にはなりません(※マクロから「編集モードの設定」にあるアイテムを取得する方法がないので、追加/削除されたものに対応するには、マクロのソースコードの書き換えが必要です。 → 130行目 ~ 170行目 付近)。 | |||
* アクセラレータの重複でトグル移動してしまうときは、Enter キーで確定するか、ソースコード内でアクセラレータ( '''&''' 記号の位置や '''(&X)''' のアルファベット部分)を変更してください。 | |||
| 15行目: | 25行目: | ||
'''ダウンロード''' >> 「[[ファイル:ファイルを読み直す・開きなおす.zip]]」(アイコン入り) | '''ダウンロード''' >> 「[[ファイル:ファイルを読み直す・開きなおす.zip]]」(アイコン入り) | ||
<source lang="javascript"> | 2019/04/06: 「編集モードサブメニュー」を追加 | ||
<source lang="javascript" style="height:100em; overflow:auto;"> | |||
#title = "ファイルを読み直す・開きなおす" | #title = "ファイルを読み直す・開きなおす" | ||
#tooltip = "エンコード指定で読み直し/読み取り専用属性の変更" | #tooltip = "エンコード指定で読み直し/読み取り専用属性の変更" | ||
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",262 | // #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",262 | ||
// | /** | ||
* --------------------------------------------------------- | |||
* ファイルを読み直す・開きなおす | |||
* sukemaru (2019/03/29 - 2019/04/06) | |||
* --------------------------------------------------------- | |||
*/ | |||
// ---------- ▼ 設定項目 ▼ ---------- // | |||
// ■「読みなおし サブメニュー」を表示する | |||
var reloadMenuEnable = true; | |||
// ■「編集モード サブメニュー」を表示する | |||
var viewModeMenuEnable = true; | |||
// ■諸外国語用(UTF-** とシフトJIS 以外)の文字コードを表示する | |||
var variousLanguageEnable = true; | |||
// ---------- ▲ 設定項目 ▲ ---------- // | |||
if ( ! document.FullName && ! viewModeMenuEnable ) { | |||
Status = " 「無題」ドキュメントは読み直しできません。"; | |||
Quit(); | |||
} | |||
// メニューに付けるチェックマークとグレーアウト設定 | |||
if ( document.FullName ) { | |||
var Fso = new ActiveXObject( "Scripting.FileSystemObject" ); | |||
var f = Fso.GetFile( document.FullName ); | |||
// 読み取り専用属性 | |||
var attributeReadOnly = ( f.Attributes & 1 ? true : false ) | |||
var aCheckFlags = attributeReadOnly ? meMenuChecked : 0; | |||
var aGrayFlags1 = attributeReadOnly ? meMenuGrayed : 0; | |||
var aGrayFlags2 = attributeReadOnly ? 0 : meMenuGrayed; | |||
// 書き換え禁止フラグ | |||
var rCheckFlags = document.ReadOnly ? meMenuChecked : 0; | |||
var rGrayFlags1 = document.ReadOnly ? meMenuGrayed : 0; | |||
var rGrayFlags2 = document.ReadOnly ? 0 : meMenuGrayed; | |||
// エンコード | |||
var dEnc = document.Encoding; | |||
var utf8 = ( dEnc == meEncodingUTF8 | |||
|| dEnc == meEncodingUTF8BOM | |||
|| dEnc == meEncodingUTF8NoBOM ) | |||
? meMenuChecked : 0; | |||
var utf16le = ( dEnc == meEncodingUTF16LE | |||
|| dEnc == meEncodingUTF16LEBOM | |||
|| dEnc == meEncodingUTF16LENoBOM ) | |||
? meMenuChecked : 0; | |||
var utf16be = ( dEnc == meEncodingUTF16BE | |||
|| dEnc == meEncodingUTF16BEBOM | |||
|| dEnc == meEncodingUTF16BENoBOM ) | |||
? meMenuChecked : 0; | |||
var EncCheck = function( arg1 ) { | |||
return document.Encoding == arg1 ? meMenuChecked : 0; | |||
}; | |||
} | |||
// 編集モード | |||
var dMode = document.Mode; | |||
var ModeCheck = function( arg1 ) { | |||
return dMode == arg1 ? meMenuChecked : 0; | |||
}; | |||
// ポップアップメニュー項目 | |||
var m = CreatePopupMenu(); | var m = CreatePopupMenu(); | ||
m.Add( "", 0, meMenuSeparator ); | var sm1 = CreatePopupMenu(); | ||
m.Add( " | var sm2 = CreatePopupMenu(); | ||
m.Add( "", 0, meMenuSeparator ); | |||
m.Add( " | if ( document.FullName ) { // 「無題」ドキュメントでは読み直しメニューを表示しない | ||
m.Add( "", 0, meMenuSeparator ); | |||
m.Add( "書き換え禁止 ON/OFF (&Y)", 2, rCheckFlags + aGrayFlags1 ); | |||
m.Add( "読み取り専用属性 ON/OFF (&R)", 5, aCheckFlags ); | |||
m.Add( "閉じて開きなおす (&O)", 1 ); | |||
m.Add( " | if ( reloadMenuEnable ) { | ||
m.Add( "", 0, meMenuSeparator ); | |||
m.AddPopup( "読みなおし サブメニュー (&L)", sm1 ); | |||
{ | |||
sm1.Add( " 書き換え禁止にする (&Y)", 3, rGrayFlags1 || aGrayFlags1 ); | |||
sm1.Add( " 書き換え禁止を解除 (&W)", 4, rGrayFlags2 + aGrayFlags1 ); | |||
sm1.Add( "", 0, meMenuSeparator ); | |||
sm1.Add( " 読み取り専用属性にして開きなおす (&R)", 6, aGrayFlags1 ); | |||
sm1.Add( " 読み取り専用属性を解除して開きなおす (&O)", 7, aGrayFlags2 ); | |||
sm1.Add( "", 0, meMenuSeparator ); | |||
sm1.Add( "", 0, meMenuSeparator ); | |||
sm1.Add( "「読み直し」マクロの JS ファイルを開く (&J)", 8 ); | |||
} | |||
} | |||
} | |||
if ( viewModeMenuEnable ) { | |||
m.Add( "", 0, meMenuSeparator ); | |||
m.AddPopup( "編集モード サブメニュー (&M)", sm2 ); | |||
{ | |||
sm2.Add( "現在の編集モードのプロパティ (&P)...", 100 ); | |||
sm2.Add( "", 0, meMenuSeparator ); | |||
/* 以下、追加/削除したものがあれば任意で変更すること。並べ替え可 */ | |||
// ▼ デフォルトの編集モード ▼ | |||
sm2.Add( "&Bat", 101, ModeCheck( "Bat" ) ); | |||
sm2.Add( "C&#", 102, ModeCheck( "C#" ) ); | |||
sm2.Add( "C&++", 103, ModeCheck( "C++" ) ); | |||
sm2.Add( "ColdFusion", 104, ModeCheck( "ColdFusion" ) ); | |||
sm2.Add( "&CSS", 105, ModeCheck( "CSS" ) ); | |||
sm2.Add( "&Delphi", 106, ModeCheck( "Delphi" ) ); | |||
sm2.Add( "HSP", 107, ModeCheck( "HSP" ) ); | |||
sm2.Add( "&HTML", 108, ModeCheck( "HTML" ) ); | |||
sm2.Add( "&INI", 109, ModeCheck( "INI" ) ); | |||
sm2.Add( "J&ava", 110, ModeCheck( "Java" ) ); | |||
sm2.Add( "&JavaScript", 111, ModeCheck( "JavaScript" ) ); | |||
sm2.Add( "JSP", 112, ModeCheck( "JSP" ) ); | |||
sm2.Add( "Per&l", 113, ModeCheck( "Perl" ) ); | |||
sm2.Add( "P&erlScript", 114, ModeCheck( "PerlScript" ) ); | |||
sm2.Add( "&PHP", 115, ModeCheck( "PHP" ) ); | |||
sm2.Add( "P&owerShell", 116, ModeCheck( "PowerShell" ) ); | |||
sm2.Add( "P&ython", 117, ModeCheck( "Python" ) ); | |||
sm2.Add( "RHT&ML", 118, ModeCheck( "RHTML" ) ); | |||
sm2.Add( "&Ruby", 119, ModeCheck( "Ruby" ) ); | |||
sm2.Add( "S&QL", 120, ModeCheck( "SQL" ) ); | |||
sm2.Add( "TeX", 121, ModeCheck( "TeX" ) ); | |||
sm2.Add( "&Text", 122, ModeCheck( "Text" ) ); | |||
sm2.Add( "&UWSC", 123, ModeCheck( "UWSC" ) ); | |||
sm2.Add( "VB&Script", 124, ModeCheck( "VBScript" ) ); | |||
sm2.Add( "&VisualBasic", 124, ModeCheck( "VisualBasic" ) ); | |||
sm2.Add( "&Widows Script", 125, ModeCheck( "Widows Script" ) ); | |||
sm2.Add( "x86 Assembler", 126, ModeCheck( "x86 Assembler" ) ); | |||
sm2.Add( "&XML", 127, ModeCheck( "XML" ) ); | |||
// ▲ デフォルトの編集モード ▲ | |||
sm2.Add( "", 0, meMenuSeparator ); | |||
/* ▼ ココに追加の編集モードを列挙する ▼ */ | |||
// sm2.Add( "Hoge (&G)", 128 ); | |||
// sm2.Add( "Fuga (&F)", 129 ); | |||
// sm2.Add( "Piyo", 130 ); | |||
// sm2.Add( "&Mery_Macro_JS", 131, ModeCheck( "Mery_Macro_JS" ) ); | |||
// sm2.Add( "Mery MS&Y", 132, ModeCheck( "Mery MSY" ) ); | |||
// sm2.Add( "&JaneStyle (正規表現用)", 134, ModeCheck( "JaneStyle (正規表現用)" ) ); | |||
/* ▲ ココに追加の編集モードを列挙する ▲ */ | |||
sm2.Add( "", 0, meMenuSeparator ); | |||
sm2.Add( "編集モードの設定 (&C)...", 200 ); | |||
} | |||
} | |||
// | if ( document.FullName ) { // 「無題」ドキュメントではエンコードメニューを表示しない | ||
// 2068 からの ID は ExecuteCommandByID() の定数 | |||
m.Add( "", 0, meMenuSeparator ); | |||
m.Add( "", 0, meMenuSeparator ); | |||
m.Add( "自動選択 (&A)", 2068 ); | |||
m.Add( "", 0, meMenuSeparator ); | |||
m.Add( "UTF-1&6LE", 2069, utf16le ); | |||
m.Add( "UTF-16&BE", 2070, utf16be ); | |||
m.Add( "UTF-&8", 2071, utf8 ); | |||
m.Add( "UTF-&7", 2072, EncCheck( meEncodingUTF7 ) ); | |||
m.Add( "", 0, meMenuSeparator ); | |||
m.Add( "日本語 (シフト JI&S)", 2083, EncCheck( meEncodingShiftJIS ) ); | |||
if ( variousLanguageEnable ) { | |||
m.Add( "日本語 (&JIS)", 2082, EncCheck( meEncodingJIS ) ); | |||
m.Add( "日本語 (&EUC)", 2081, EncCheck( meEncodingEUC ) ); | |||
m.Add( "", 0, meMenuSeparator ); | |||
m.Add( "西ヨーロッパ言語", 2088, EncCheck( meEncodingWesternEuropean ) ); | |||
m.Add( "中央ヨーロッパ言語", 2075, EncCheck( meEncodingCentralEuropean ) ); | |||
m.Add( "キリル言語", 2078, EncCheck( meEncodingCyrillic ) ); | |||
m.Add( "バルト言語", 2074, EncCheck( meEncodingBaltic ) ); | |||
m.Add( "ギリシャ語", 2079, EncCheck( meEncodingGreek ) ); | |||
m.Add( "ヘブライ語", 2080, EncCheck( meEncodingHebrew ) ); | |||
m.Add( "トルコ語", 2086, EncCheck( meEncodingTurkish ) ); | |||
m.Add( "アラビア語", 2073, EncCheck( meEncodingArabic ) ); | |||
m.Add( "タイ語", 2085, EncCheck( meEncodingThai ) ); | |||
m.Add( "ベトナム語", 2087, EncCheck( meEncodingVietnamese ) ); | |||
m.Add( "簡体中国語 (GB2312)", 2076, EncCheck( meEncodingChineseSimplified ) ); | |||
m.Add( "繁体中国語 (Big5)", 2077, EncCheck( meEncodingChineseTraditional ) ); | |||
m.Add( "韓国語", 2084, EncCheck( meEncodingKorean ) ); | |||
} | |||
} | |||
m.Add( "", 0, meMenuSeparator ); | m.Add( "", 0, meMenuSeparator ); | ||
m.Add( " | m.Add( "キャンセル & ", 0 ); // Esc キーまたは Space キーでキャンセル可 | ||
// | |||
// ポップアップメニューを表示 | // ポップアップメニューを表示 | ||
| 76行目: | 230行目: | ||
var file = document.FullName; | var file = document.FullName; | ||
document.Close(); | document.Close(); | ||
if( editor.ActiveDocument.FullName || editor.ActiveDocument.Text ) | if ( editor.ActiveDocument.FullName || editor.ActiveDocument.Text ) { | ||
editor.NewFile(); | editor.NewFile(); | ||
} | |||
editor.OpenFile( file ); | editor.OpenFile( file ); | ||
break; | break; | ||
case 2: // 書き換え禁止フラグ ON/OFF を変更する | case 2: // 書き換え禁止フラグ ON/OFF を変更する | ||
document.ReadOnly = | document.ReadOnly = ! document.ReadOnly; | ||
break; | break; | ||
| 94行目: | 249行目: | ||
case 5: // 読み取り専用属性 ON/OFF を変更して開き直す | case 5: // 読み取り専用属性 ON/OFF を変更して開き直す | ||
var | // var Fso = new ActiveXObject( "Scripting.FileSystemObject" ); | ||
var path = document.FullName; | var path = document.FullName; | ||
var file = | var file = Fso.GetFile( path ); | ||
// ファイルの書込み禁止属性をチェック | // ファイルの書込み禁止属性をチェック | ||
if ( file.Attributes % 2 == 0 ) { | if ( file.Attributes % 2 == 0 ) { | ||
// 保存して閉じる | // 保存して閉じる | ||
document.Save(); | // document.Save(); // コメントアウトすると確認ダイアログ | ||
document.Close(); | document.Close(); | ||
// 書込み禁止属性 ON | // 書込み禁止属性 → ON | ||
file.Attributes = file.Attributes + 1; | file.Attributes = file.Attributes + 1; | ||
} | } | ||
| 108行目: | 263行目: | ||
// 閉じる | // 閉じる | ||
editor.ActiveDocument.Close(); | editor.ActiveDocument.Close(); | ||
// 書込み禁止属性 OFF | // 書込み禁止属性 → OFF | ||
file.Attributes = file.Attributes - 1; | file.Attributes = file.Attributes - 1; | ||
} | } | ||
// 開きなおす | // 開きなおす | ||
if( editor.ActiveDocument.FullName || editor.ActiveDocument.Text ) | if ( editor.ActiveDocument.FullName || editor.ActiveDocument.Text ) { | ||
editor.NewFile(); | editor.NewFile(); | ||
} | |||
editor.OpenFile( file ); | editor.OpenFile( file ); | ||
break; | break; | ||
case 6: // | case 6: // 読み取り専用属性に変更して開き直す | ||
var | // var Fso = new ActiveXObject( "Scripting.FileSystemObject" ); | ||
var path = document.FullName; | var path = document.FullName; | ||
var file = | var file = Fso.GetFile( path ); | ||
if ( file.Attributes % 2 == 0 ) { | if ( file.Attributes % 2 == 0 ) { | ||
document.Save(); | // document.Save(); // コメントアウトすると確認ダイアログ | ||
document.Close(); | document.Close(); | ||
file.Attributes = file.Attributes + 1; | file.Attributes = file.Attributes + 1; | ||
if( editor.ActiveDocument.FullName || editor.ActiveDocument.Text ) | if ( editor.ActiveDocument.FullName || editor.ActiveDocument.Text ) { | ||
editor.NewFile(); | editor.NewFile(); | ||
} | |||
editor.OpenFile( file ); | editor.OpenFile( file ); | ||
} | } | ||
| 132行目: | 289行目: | ||
case 7: // 読み取り専用属性を解除して開き直す | case 7: // 読み取り専用属性を解除して開き直す | ||
var | // var Fso = new ActiveXObject( "Scripting.FileSystemObject" ); | ||
var path = document.FullName; | var path = document.FullName; | ||
var file = | var file = Fso.GetFile( path ); | ||
if ( file.Attributes % 2 != 0 ) { | if ( file.Attributes % 2 != 0 ) { | ||
document.Close(); | document.Close(); | ||
file.Attributes = file.Attributes - 1; | file.Attributes = file.Attributes - 1; | ||
if( editor.ActiveDocument.FullName || editor.ActiveDocument.Text ) | if ( editor.ActiveDocument.FullName || editor.ActiveDocument.Text ) { | ||
editor.NewFile(); | editor.NewFile(); | ||
} | |||
editor.OpenFile( file ); | editor.OpenFile( file ); | ||
} | } | ||
break; | break; | ||
case 8: // このマクロの JS ファイルを開く | |||
editor.ExecuteCommandByID( | OpenJumpJS(); | ||
break; | |||
case 100: // 現在の編集モードのプロパティ... | |||
new ActiveXObject( "WScript.Shell" ).SendKeys( "%P" ); | |||
editor.ExecuteCommandByID( MEID_VIEW_MODE_CUSTOMIZE = 2144 ); | |||
break; | |||
case 200: // 編集モードの設定... | |||
editor.ExecuteCommandByID( MEID_VIEW_MODE_CUSTOMIZE = 2144 ); | |||
break; | break; | ||
default: | |||
if ( r > 2000 ) { // エンコード指定で読みなおす | |||
editor.ExecuteCommandByID( r ); | |||
} | |||
else { // 編集モードを変更 | |||
var label = m.GetText( r ).replace( /[ ]*\(&.\)[ ]*|&/g , "" ); | |||
document.Mode = label; | |||
} | |||
break; | |||
} | |||
/* 関数 OpenJumpJS() */ | |||
// このマクロを開いて設定項目の行にジャンプする | |||
function OpenJumpJS() { | |||
// Count は 1 からの整数値、Item は 0 からの整数値 | |||
var eCount = editors.Count; | |||
var isOpen = false, ee , dd; | |||
OuterLoop: | |||
for ( var j = 0; j < eCount; j ++ ) { | |||
var dCount = editors.Item( j ).documents.Count; | |||
for ( var i = 0; i < dCount; i ++ ) { | |||
if ( editors.Item( j ).documents.Item( i ).FullName == ScriptFullName ) { | |||
isOpen = true; | |||
ee = j; | |||
dd = i; | |||
break OuterLoop; | |||
} | |||
} | |||
} | |||
if ( isOpen ) { | |||
editors.Item( ee ).documents.Item( dd ).Activate(); | |||
} | |||
else { | |||
editor.NewFile(); | |||
ee = ( editors.Count == 1 ) ? 0 : eCount; | |||
editors.Item( ee ).OpenFile( ScriptFullName, 2071 ); | |||
} | |||
var js = editors.Item( ee ).ActiveDocument; | |||
var settingPos = js.Text.indexOf( "▼ 設定項目 ▼" ); | |||
js.selection.SetActivePos( settingPos ); | |||
js.selection.StartOfLine( false, mePosLogical ); | |||
var yy = js.selection.GetActivePointY( mePosLogical ); | |||
ScrollY = yy; | |||
// 狙った行にスクロールしない場合は、強引にやる | |||
// var WshShell = new ActiveXObject( "WScript.Shell" ); | |||
// WshShell.Run( '"' + editor.FullName + '" /l ' + yy | |||
// + ' "' + ScriptFullName + '"' ); | |||
} | } | ||
</source> | </source> | ||
2019年4月6日 (土) 13:15時点における版
標準ツールバーの「読み直し」アイコン(ファイル メニューの「読み直し」コマンド)のポップアップメニューを再現します。
エンコード指定の選択肢のほかに以下の機能を追加してあります。
- Mery の "書き換え禁止" フラグ ON/OFF の変更
- 読み取り専用属性 ON/OFF の変更(ファイルを開きなおす)
- ファイルを閉じて開きなおす
- 「編集モードの設定」パネルを開く
- 「編集モード」を変更するサブメニュー
- 仕様上の制限
- ファイルを「開きなおす」場合は、タブの並び順のさいごの位置に開きます。
また、開きなおしたファイルは、拡張子ごとの既定の「編集モード」になります。 - 「無題」ドキュメントは読み直しやエンコード指定ができないので、「編集モード サブメニュー」だけを表示します。
- 「編集モード サブメニュー」は、「編集モードの設定」でカスタマイズした並び順にはなりません(※マクロから「編集モードの設定」にあるアイテムを取得する方法がないので、追加/削除されたものに対応するには、マクロのソースコードの書き換えが必要です。 → 130行目 ~ 170行目 付近)。
- アクセラレータの重複でトグル移動してしまうときは、Enter キーで確定するか、ソースコード内でアクセラレータ( & 記号の位置や (&X) のアルファベット部分)を変更してください。
ダウンロード >> 「ファイル:ファイルを読み直す・開きなおす.zip」(アイコン入り)
2019/04/06: 「編集モードサブメニュー」を追加
#title = "ファイルを読み直す・開きなおす"
#tooltip = "エンコード指定で読み直し/読み取り専用属性の変更"
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",262
/**
* ---------------------------------------------------------
* ファイルを読み直す・開きなおす
* sukemaru (2019/03/29 - 2019/04/06)
* ---------------------------------------------------------
*/
// ---------- ▼ 設定項目 ▼ ---------- //
// ■「読みなおし サブメニュー」を表示する
var reloadMenuEnable = true;
// ■「編集モード サブメニュー」を表示する
var viewModeMenuEnable = true;
// ■諸外国語用(UTF-** とシフトJIS 以外)の文字コードを表示する
var variousLanguageEnable = true;
// ---------- ▲ 設定項目 ▲ ---------- //
if ( ! document.FullName && ! viewModeMenuEnable ) {
Status = " 「無題」ドキュメントは読み直しできません。";
Quit();
}
// メニューに付けるチェックマークとグレーアウト設定
if ( document.FullName ) {
var Fso = new ActiveXObject( "Scripting.FileSystemObject" );
var f = Fso.GetFile( document.FullName );
// 読み取り専用属性
var attributeReadOnly = ( f.Attributes & 1 ? true : false )
var aCheckFlags = attributeReadOnly ? meMenuChecked : 0;
var aGrayFlags1 = attributeReadOnly ? meMenuGrayed : 0;
var aGrayFlags2 = attributeReadOnly ? 0 : meMenuGrayed;
// 書き換え禁止フラグ
var rCheckFlags = document.ReadOnly ? meMenuChecked : 0;
var rGrayFlags1 = document.ReadOnly ? meMenuGrayed : 0;
var rGrayFlags2 = document.ReadOnly ? 0 : meMenuGrayed;
// エンコード
var dEnc = document.Encoding;
var utf8 = ( dEnc == meEncodingUTF8
|| dEnc == meEncodingUTF8BOM
|| dEnc == meEncodingUTF8NoBOM )
? meMenuChecked : 0;
var utf16le = ( dEnc == meEncodingUTF16LE
|| dEnc == meEncodingUTF16LEBOM
|| dEnc == meEncodingUTF16LENoBOM )
? meMenuChecked : 0;
var utf16be = ( dEnc == meEncodingUTF16BE
|| dEnc == meEncodingUTF16BEBOM
|| dEnc == meEncodingUTF16BENoBOM )
? meMenuChecked : 0;
var EncCheck = function( arg1 ) {
return document.Encoding == arg1 ? meMenuChecked : 0;
};
}
// 編集モード
var dMode = document.Mode;
var ModeCheck = function( arg1 ) {
return dMode == arg1 ? meMenuChecked : 0;
};
// ポップアップメニュー項目
var m = CreatePopupMenu();
var sm1 = CreatePopupMenu();
var sm2 = CreatePopupMenu();
if ( document.FullName ) { // 「無題」ドキュメントでは読み直しメニューを表示しない
m.Add( "", 0, meMenuSeparator );
m.Add( "書き換え禁止 ON/OFF (&Y)", 2, rCheckFlags + aGrayFlags1 );
m.Add( "読み取り専用属性 ON/OFF (&R)", 5, aCheckFlags );
m.Add( "閉じて開きなおす (&O)", 1 );
if ( reloadMenuEnable ) {
m.Add( "", 0, meMenuSeparator );
m.AddPopup( "読みなおし サブメニュー (&L)", sm1 );
{
sm1.Add( " 書き換え禁止にする (&Y)", 3, rGrayFlags1 || aGrayFlags1 );
sm1.Add( " 書き換え禁止を解除 (&W)", 4, rGrayFlags2 + aGrayFlags1 );
sm1.Add( "", 0, meMenuSeparator );
sm1.Add( " 読み取り専用属性にして開きなおす (&R)", 6, aGrayFlags1 );
sm1.Add( " 読み取り専用属性を解除して開きなおす (&O)", 7, aGrayFlags2 );
sm1.Add( "", 0, meMenuSeparator );
sm1.Add( "", 0, meMenuSeparator );
sm1.Add( "「読み直し」マクロの JS ファイルを開く (&J)", 8 );
}
}
}
if ( viewModeMenuEnable ) {
m.Add( "", 0, meMenuSeparator );
m.AddPopup( "編集モード サブメニュー (&M)", sm2 );
{
sm2.Add( "現在の編集モードのプロパティ (&P)...", 100 );
sm2.Add( "", 0, meMenuSeparator );
/* 以下、追加/削除したものがあれば任意で変更すること。並べ替え可 */
// ▼ デフォルトの編集モード ▼
sm2.Add( "&Bat", 101, ModeCheck( "Bat" ) );
sm2.Add( "C&#", 102, ModeCheck( "C#" ) );
sm2.Add( "C&++", 103, ModeCheck( "C++" ) );
sm2.Add( "ColdFusion", 104, ModeCheck( "ColdFusion" ) );
sm2.Add( "&CSS", 105, ModeCheck( "CSS" ) );
sm2.Add( "&Delphi", 106, ModeCheck( "Delphi" ) );
sm2.Add( "HSP", 107, ModeCheck( "HSP" ) );
sm2.Add( "&HTML", 108, ModeCheck( "HTML" ) );
sm2.Add( "&INI", 109, ModeCheck( "INI" ) );
sm2.Add( "J&ava", 110, ModeCheck( "Java" ) );
sm2.Add( "&JavaScript", 111, ModeCheck( "JavaScript" ) );
sm2.Add( "JSP", 112, ModeCheck( "JSP" ) );
sm2.Add( "Per&l", 113, ModeCheck( "Perl" ) );
sm2.Add( "P&erlScript", 114, ModeCheck( "PerlScript" ) );
sm2.Add( "&PHP", 115, ModeCheck( "PHP" ) );
sm2.Add( "P&owerShell", 116, ModeCheck( "PowerShell" ) );
sm2.Add( "P&ython", 117, ModeCheck( "Python" ) );
sm2.Add( "RHT&ML", 118, ModeCheck( "RHTML" ) );
sm2.Add( "&Ruby", 119, ModeCheck( "Ruby" ) );
sm2.Add( "S&QL", 120, ModeCheck( "SQL" ) );
sm2.Add( "TeX", 121, ModeCheck( "TeX" ) );
sm2.Add( "&Text", 122, ModeCheck( "Text" ) );
sm2.Add( "&UWSC", 123, ModeCheck( "UWSC" ) );
sm2.Add( "VB&Script", 124, ModeCheck( "VBScript" ) );
sm2.Add( "&VisualBasic", 124, ModeCheck( "VisualBasic" ) );
sm2.Add( "&Widows Script", 125, ModeCheck( "Widows Script" ) );
sm2.Add( "x86 Assembler", 126, ModeCheck( "x86 Assembler" ) );
sm2.Add( "&XML", 127, ModeCheck( "XML" ) );
// ▲ デフォルトの編集モード ▲
sm2.Add( "", 0, meMenuSeparator );
/* ▼ ココに追加の編集モードを列挙する ▼ */
// sm2.Add( "Hoge (&G)", 128 );
// sm2.Add( "Fuga (&F)", 129 );
// sm2.Add( "Piyo", 130 );
// sm2.Add( "&Mery_Macro_JS", 131, ModeCheck( "Mery_Macro_JS" ) );
// sm2.Add( "Mery MS&Y", 132, ModeCheck( "Mery MSY" ) );
// sm2.Add( "&JaneStyle (正規表現用)", 134, ModeCheck( "JaneStyle (正規表現用)" ) );
/* ▲ ココに追加の編集モードを列挙する ▲ */
sm2.Add( "", 0, meMenuSeparator );
sm2.Add( "編集モードの設定 (&C)...", 200 );
}
}
if ( document.FullName ) { // 「無題」ドキュメントではエンコードメニューを表示しない
// 2068 からの ID は ExecuteCommandByID() の定数
m.Add( "", 0, meMenuSeparator );
m.Add( "", 0, meMenuSeparator );
m.Add( "自動選択 (&A)", 2068 );
m.Add( "", 0, meMenuSeparator );
m.Add( "UTF-1&6LE", 2069, utf16le );
m.Add( "UTF-16&BE", 2070, utf16be );
m.Add( "UTF-&8", 2071, utf8 );
m.Add( "UTF-&7", 2072, EncCheck( meEncodingUTF7 ) );
m.Add( "", 0, meMenuSeparator );
m.Add( "日本語 (シフト JI&S)", 2083, EncCheck( meEncodingShiftJIS ) );
if ( variousLanguageEnable ) {
m.Add( "日本語 (&JIS)", 2082, EncCheck( meEncodingJIS ) );
m.Add( "日本語 (&EUC)", 2081, EncCheck( meEncodingEUC ) );
m.Add( "", 0, meMenuSeparator );
m.Add( "西ヨーロッパ言語", 2088, EncCheck( meEncodingWesternEuropean ) );
m.Add( "中央ヨーロッパ言語", 2075, EncCheck( meEncodingCentralEuropean ) );
m.Add( "キリル言語", 2078, EncCheck( meEncodingCyrillic ) );
m.Add( "バルト言語", 2074, EncCheck( meEncodingBaltic ) );
m.Add( "ギリシャ語", 2079, EncCheck( meEncodingGreek ) );
m.Add( "ヘブライ語", 2080, EncCheck( meEncodingHebrew ) );
m.Add( "トルコ語", 2086, EncCheck( meEncodingTurkish ) );
m.Add( "アラビア語", 2073, EncCheck( meEncodingArabic ) );
m.Add( "タイ語", 2085, EncCheck( meEncodingThai ) );
m.Add( "ベトナム語", 2087, EncCheck( meEncodingVietnamese ) );
m.Add( "簡体中国語 (GB2312)", 2076, EncCheck( meEncodingChineseSimplified ) );
m.Add( "繁体中国語 (Big5)", 2077, EncCheck( meEncodingChineseTraditional ) );
m.Add( "韓国語", 2084, EncCheck( meEncodingKorean ) );
}
}
m.Add( "", 0, meMenuSeparator );
m.Add( "キャンセル & ", 0 ); // Esc キーまたは Space キーでキャンセル可
// ポップアップメニューを表示
var r = m.Track( mePosMouse = 1 );
switch ( r ) {
case 0:
break;
case 1: // ファイルを閉じて開きなおす
var file = document.FullName;
document.Close();
if ( editor.ActiveDocument.FullName || editor.ActiveDocument.Text ) {
editor.NewFile();
}
editor.OpenFile( file );
break;
case 2: // 書き換え禁止フラグ ON/OFF を変更する
document.ReadOnly = ! document.ReadOnly;
break;
case 3: // 書き換え禁止にする
document.ReadOnly = true;
break;
case 4: // 書き換え禁止を解除
document.ReadOnly = false;
break;
case 5: // 読み取り専用属性 ON/OFF を変更して開き直す
// var Fso = new ActiveXObject( "Scripting.FileSystemObject" );
var path = document.FullName;
var file = Fso.GetFile( path );
// ファイルの書込み禁止属性をチェック
if ( file.Attributes % 2 == 0 ) {
// 保存して閉じる
// document.Save(); // コメントアウトすると確認ダイアログ
document.Close();
// 書込み禁止属性 → ON
file.Attributes = file.Attributes + 1;
}
else {
// 閉じる
editor.ActiveDocument.Close();
// 書込み禁止属性 → OFF
file.Attributes = file.Attributes - 1;
}
// 開きなおす
if ( editor.ActiveDocument.FullName || editor.ActiveDocument.Text ) {
editor.NewFile();
}
editor.OpenFile( file );
break;
case 6: // 読み取り専用属性に変更して開き直す
// var Fso = new ActiveXObject( "Scripting.FileSystemObject" );
var path = document.FullName;
var file = Fso.GetFile( path );
if ( file.Attributes % 2 == 0 ) {
// document.Save(); // コメントアウトすると確認ダイアログ
document.Close();
file.Attributes = file.Attributes + 1;
if ( editor.ActiveDocument.FullName || editor.ActiveDocument.Text ) {
editor.NewFile();
}
editor.OpenFile( file );
}
break;
case 7: // 読み取り専用属性を解除して開き直す
// var Fso = new ActiveXObject( "Scripting.FileSystemObject" );
var path = document.FullName;
var file = Fso.GetFile( path );
if ( file.Attributes % 2 != 0 ) {
document.Close();
file.Attributes = file.Attributes - 1;
if ( editor.ActiveDocument.FullName || editor.ActiveDocument.Text ) {
editor.NewFile();
}
editor.OpenFile( file );
}
break;
case 8: // このマクロの JS ファイルを開く
OpenJumpJS();
break;
case 100: // 現在の編集モードのプロパティ...
new ActiveXObject( "WScript.Shell" ).SendKeys( "%P" );
editor.ExecuteCommandByID( MEID_VIEW_MODE_CUSTOMIZE = 2144 );
break;
case 200: // 編集モードの設定...
editor.ExecuteCommandByID( MEID_VIEW_MODE_CUSTOMIZE = 2144 );
break;
default:
if ( r > 2000 ) { // エンコード指定で読みなおす
editor.ExecuteCommandByID( r );
}
else { // 編集モードを変更
var label = m.GetText( r ).replace( /[ ]*\(&.\)[ ]*|&/g , "" );
document.Mode = label;
}
break;
}
/* 関数 OpenJumpJS() */
// このマクロを開いて設定項目の行にジャンプする
function OpenJumpJS() {
// Count は 1 からの整数値、Item は 0 からの整数値
var eCount = editors.Count;
var isOpen = false, ee , dd;
OuterLoop:
for ( var j = 0; j < eCount; j ++ ) {
var dCount = editors.Item( j ).documents.Count;
for ( var i = 0; i < dCount; i ++ ) {
if ( editors.Item( j ).documents.Item( i ).FullName == ScriptFullName ) {
isOpen = true;
ee = j;
dd = i;
break OuterLoop;
}
}
}
if ( isOpen ) {
editors.Item( ee ).documents.Item( dd ).Activate();
}
else {
editor.NewFile();
ee = ( editors.Count == 1 ) ? 0 : eCount;
editors.Item( ee ).OpenFile( ScriptFullName, 2071 );
}
var js = editors.Item( ee ).ActiveDocument;
var settingPos = js.Text.indexOf( "▼ 設定項目 ▼" );
js.selection.SetActivePos( settingPos );
js.selection.StartOfLine( false, mePosLogical );
var yy = js.selection.GetActivePointY( mePosLogical );
ScrollY = yy;
// 狙った行にスクロールしない場合は、強引にやる
// var WshShell = new ActiveXObject( "WScript.Shell" );
// WshShell.Run( '"' + editor.FullName + '" /l ' + yy
// + ' "' + ScriptFullName + '"' );
}
スポンサーリンク