「
ファイルを読み直す・開きなおす
」を編集中
2019年4月7日 (日) 12:58時点における
Sukemaru
(
トーク
|
投稿記録
)
による版
(Quit() メソッドを削除)
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
ナビゲーションに移動
検索に移動
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
標準ツールバーの「'''読み直し'''」アイコン(ファイル メニューの「[[ヘルプ:ファイル#読み直し|読み直し]]」コマンド)のポップアップメニューを再現します。 '''エンコード指定'''の選択肢のほかに以下の機能を追加してあります。 * Mery の "書き換え禁止" フラグ ON/OFF の変更 * '''読み取り専用属性''' ON/OFF の変更(ファイルを開きなおす) * ファイルを閉じて開きなおす *「編集モードの設定」パネルを開く *「編集モード」を変更するサブメニュー [[ファイル:ファイルを読み直す・開きなおす.png|link=]] ;仕様上の制限 * ファイルを「開きなおす」場合は、タブの並び順のさいごの位置に開きます。<br> また、開きなおしたファイルは、拡張子ごとの既定の「編集モード」になります。 *「無題」ドキュメントは読み直しやエンコード指定ができないので、「編集モード サブメニュー」だけを表示します。 *「編集モード サブメニュー」は、「編集モードの設定」でカスタマイズした並び順にはなりません(※マクロから「編集モードの設定」にあるアイテムを取得する方法がないので、追加/削除されたものに対応するには、マクロのソースコードの書き換えが必要です。 → 130行目 ~ 170行目 付近)。 * アクセラレータの重複でトグル移動してしまうときは、Enter キーで確定するか、ソースコード内でアクセラレータ( '''&''' 記号の位置や '''(&X)''' のアルファベット部分)を変更してください。 '''ダウンロード''' >> 「[[ファイル:ファイルを読み直す・開きなおす.zip]]」(アイコン入り) 2019/04/06: 「編集モードサブメニュー」を追加 <br> 2019/04/07: Quit() メソッドを削除 <source lang="javascript" style="height:100em; overflow:auto;"> #title = "ファイルを読み直す・開きなおす..." #tooltip = "エンコード指定/読み取り専用属性/編集モードの変更" #icon = "reload.ico" // #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",262 /** * --------------------------------------------------------- * ファイルを読み直す・開きなおす * sukemaru (2019/03/29 - 2019/04/07) * --------------------------------------------------------- * 標準ツールバーの「読み直し」アイコン(ファイルメニューの「読み直し」コマンド) * のポップアップメニューを再現する。 * エンコードの選択肢のほかに以下の項目を追加した。 * * ・「書き換え禁止」フラグの変更 * ・「読み取り専用属性」の変更(ファイルを開きなおす) * ・ファイルを閉じて開きなおす * ・「編集モードの設定」パネルを開く * ・「編集モード」を変更する * * ※ 開きなおすと、拡張子ごとの既定の編集モードになる * ※ 読み取り専用属性 ON を適用するときは、ファイルを保存して開きなおす * ※ エンコード指定の読み直しには、ExecuteCommandByID() メソッドを使用する * (document.Encoding = xxx; よりも確実性が高い) * ※「編集モード サブメニュー」は「編集モードの設定」どおりの並び順にはならない * (マクロから「編集モードの設定」にあるアイテムを取得する方法がないので、 * 追加/削除されたものに対応するには、マクロのソースコードの書き換えが必要 * → 130行目 ~ 170行目 付近) * ※ アクセラレータの重複でトグル移動してしまうときは、Enter キーで確定する * */ // ---------- ▼ 設定項目 ▼ ---------- // // ■「読みなおし サブメニュー」を表示する var reloadMenuEnable = true; // ■「編集モード サブメニュー」を表示する var viewModeMenuEnable = true; // ■諸外国語用(UTF-** とシフトJIS 以外)の文字コードを表示する var variousLanguageEnable = true; // ---------- ▲ 設定項目 ▲ ---------- // if ( ! document.FullName && ! viewModeMenuEnable ) { Status = " 「無題」ドキュメントは読み直しできません。"; } else { // メニューに付けるチェックマークとグレーアウト設定 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; }; } // 編集モード if ( viewModeMenuEnable ) { 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 + '"' ); } </source>
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク