<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://www.haijin-boys.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=61.24.242.249</id>
	<title>MeryWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://www.haijin-boys.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=61.24.242.249"/>
	<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/61.24.242.249"/>
	<updated>2026-04-19T04:57:03Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%82%BF%E3%83%96%E3%81%8C%E3%80%8C%E7%B8%A6%E6%9B%B8%E3%81%8D%E3%80%8D%E3%83%A2%E3%83%BC%E3%83%89%E3%81%8B%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B&amp;diff=4233</id>
		<title>タブが「縦書き」モードかチェックする</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%82%BF%E3%83%96%E3%81%8C%E3%80%8C%E7%B8%A6%E6%9B%B8%E3%81%8D%E3%80%8D%E3%83%A2%E3%83%BC%E3%83%89%E3%81%8B%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B&amp;diff=4233"/>
		<updated>2019-05-02T02:29:58Z</updated>

		<summary type="html">&lt;p&gt;61.24.242.249: /* 組み込み関数 CheckVertical() */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== 組み込み関数 CheckVertical() ==&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * 組み込み関数 CheckVertical( objDocument )&lt;br /&gt;
  * 引数に与えられた Document オブジェクトが「縦書き」モードかチェックする&lt;br /&gt;
  * 戻り値は 真偽値 true / false&lt;br /&gt;
  */&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function CheckVertical( objDocument ) {&lt;br /&gt;
  var isViewVertical;&lt;br /&gt;
  // Redraw = false;&lt;br /&gt;
  var d = objDocument || document, s = d.selection;&lt;br /&gt;
  var saved = d.Saved, readOnly = d.ReadOnly;&lt;br /&gt;
  var sx = ScrollX, sy = ScrollY;&lt;br /&gt;
  var act = s.GetActivePos(), anc = s.GetAnchorPos();&lt;br /&gt;
  var ay = s.GetActivePointY( mePosView );&lt;br /&gt;
  d.ReadOnly = false;&lt;br /&gt;
  d.Write( &amp;quot;\n&amp;quot; ); s.CharRight();&lt;br /&gt;
  var dy = s.GetActivePointY( mePosView );&lt;br /&gt;
  if ( dy == ay ) { isVertical = true; Status = &amp;quot;縦書き&amp;quot;; }&lt;br /&gt;
  else { isVertical = false; Status = &amp;quot;横書き&amp;quot;; }&lt;br /&gt;
  d.Undo();&lt;br /&gt;
  s.SetActivePos( act ); s.SetAnchorPos( anc );&lt;br /&gt;
  ScrollX = sx; ScrollY = sy;&lt;br /&gt;
  d.Saved = saved; d.ReadOnly = readOnly;&lt;br /&gt;
  return isViewVertical;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 使い方 ==&lt;br /&gt;
&#039;&#039;&#039;例.&#039;&#039;&#039; 「ファイルを開いた時」のイベントマクロなどで、特定の条件で「縦書き」モードにする&lt;br /&gt;
&lt;br /&gt;
① CheckVertical() 関数で、タブが「縦書き」モードかチェックする&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var d = editor.ActiveDocument;&lt;br /&gt;
var isVertical = CheckVertical( d );&lt;br /&gt;
&lt;br /&gt;
// var arlertStr = isVertical ? &amp;quot;縦書き&amp;quot; : &amp;quot;横書き&amp;quot;;&lt;br /&gt;
// Alert( arlertStr );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
② 条件にマッチしたら「縦書き」モードにする &lt;br /&gt;
&lt;br /&gt;
※&#039;&#039;editor.ExecuteCommandByID( 2238 )&#039;&#039; は「縦書き」の ON／OFF トグル切り替え機能であって「ON を指定する」ものではないので、「○○という条件に一致するタブが横書き表示だったときは → 縦書きに変更する」という書き方が必要になる&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// 1. 編集モードが「青空文庫」なら「縦書き」モードにする&lt;br /&gt;
// 2.「小説」フォルダ配下の TXT ファイルなら「青空文庫」×「縦書き」モードにする&lt;br /&gt;
// ※「! isVertical」は「isVertical == false」と同義&lt;br /&gt;
&lt;br /&gt;
var cond1 = ( d.Mode == &amp;quot;青空文庫&amp;quot; &amp;amp;&amp;amp; ! isVertical );&lt;br /&gt;
var cond2 = ( d.FullName.match( /\\小説\\.*\.txt$/ ) &amp;amp;&amp;amp; ! isVertical );&lt;br /&gt;
&lt;br /&gt;
if ( cond1 ) {&lt;br /&gt;
  editor.ExecuteCommandByID( MEID_VIEW_VERTICAL = 2238 );	// 縦書き&lt;br /&gt;
}&lt;br /&gt;
else if ( cond2 ) {&lt;br /&gt;
  d.Mode == &amp;quot;青空文庫&amp;quot;;	// 編集モードを変更&lt;br /&gt;
  editor.ExecuteCommandByID( MEID_VIEW_VERTICAL = 2238 );	// 縦書き&lt;br /&gt;
  // (おまけ) ウインドウの右端で折り返し&lt;br /&gt;
  editor.ExecuteCommandByID( MEID_VIEW_WRAP_BY_WINDOW = 2148 );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>61.24.242.249</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%AA%AD%E3%81%BF%E7%9B%B4%E3%81%99%E3%83%BB%E9%96%8B%E3%81%8D%E3%81%AA%E3%81%8A%E3%81%99&amp;diff=4224</id>
		<title>ファイルを読み直す・開きなおす</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%AA%AD%E3%81%BF%E7%9B%B4%E3%81%99%E3%83%BB%E9%96%8B%E3%81%8D%E3%81%AA%E3%81%8A%E3%81%99&amp;diff=4224"/>
		<updated>2019-05-01T09:27:44Z</updated>

		<summary type="html">&lt;p&gt;61.24.242.249: /* 「読みなおす・開きなおす」ポップアップメニュー */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 「読みなおす・開きなおす」ポップアップメニュー ==&lt;br /&gt;
&lt;br /&gt;
標準ツールバーの「&#039;&#039;&#039;読み直し&#039;&#039;&#039;」アイコン（ファイル メニューの「[[ヘルプ:ファイル#読み直し|読み直し]]」コマンド）のポップアップメニューを再現します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;エンコード指定&#039;&#039;&#039; の選択肢のほかに以下の機能を追加してあります。&lt;br /&gt;
&lt;br /&gt;
* Mery の &#039;&#039;&#039;書き換え禁止&#039;&#039;&#039; フラグ ON/OFF の変更&lt;br /&gt;
* &#039;&#039;&#039;読み取り専用属性&#039;&#039;&#039; ON/OFF の変更（ファイルを開きなおす）&lt;br /&gt;
* ファイルを &#039;&#039;&#039;閉じて開きなおす&#039;&#039;&#039;&lt;br /&gt;
*「&#039;&#039;&#039;編集モードの設定&#039;&#039;&#039;」パネルを開く&lt;br /&gt;
*「&#039;&#039;&#039;編集モード&#039;&#039;&#039;」を変更するサブメニュー&lt;br /&gt;
* ファイルの「&#039;&#039;&#039;プロパティ&#039;&#039;&#039;」を開く （2019/04/08 追加）&lt;br /&gt;
*「&#039;&#039;&#039;さいごに閉じたファイル&#039;&#039;&#039;」を開く （2019/04/28 追加）&lt;br /&gt;
* &#039;&#039;&#039;自動保存フォルダ&#039;&#039;&#039;と&#039;&#039;&#039;バックアップフォルダ&#039;&#039;&#039;を開く （2019/04/29 追加）&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
;ポップアップメニューのスクリーンショット (2019/04/30)&lt;br /&gt;
[[ファイル:ファイルを読み直す・開きなおす.png]]&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 仕様上の制限 ==&lt;br /&gt;
&lt;br /&gt;
* Mery ver 2.6.15 まででは、「読みなおし」や「書き換え禁止にする」を実行すると、ブックマークが消えてしまいます（Mery 本体側の仕様なので、ファイルメニューや編集メニューの標準コマンドでも同様にブックマークが消えます）。&lt;br /&gt;
&lt;br /&gt;
* ファイルを「開きなおす」場合は、タブの並び順のさいごの位置に開きます。&amp;lt;br&amp;gt; また、開きなおしたファイルは、拡張子ごとの既定の「編集モード」になります。&lt;br /&gt;
&lt;br /&gt;
*「無題」ドキュメントでは読み直しやエンコード指定ができないので、「編集モード サブメニュー」to&lt;br /&gt;
「さいごに閉じたファイル」だけを表示します。&lt;br /&gt;
&lt;br /&gt;
*「編集モード サブメニュー」は、「編集モードの設定」で&#039;&#039;&#039;カスタマイズした並び順にはなりません&#039;&#039;&#039;&amp;lt;br&amp;gt;（※マクロから「編集モードの設定」にあるアイテムを取得する方法がないので、追加／削除されたものに対応するには、マクロのソースコードの書き換えが必要です。 → ZIP の ソースコードで 180行目 ～ 220行目 付近）。&lt;br /&gt;
&lt;br /&gt;
* アクセラレータの重複でトグル移動してしまうときは、Enter キーで確定するか、ソースコード内でアクセラレータ（ &#039;&#039;&#039;&amp;amp;&#039;&#039;&#039; 記号の位置や &#039;&#039;&#039;(&amp;amp;X)&#039;&#039;&#039; のアルファベット部分）を変更してください。&lt;br /&gt;
&lt;br /&gt;
* document → editor.ActiveDocument にしたので、ツールバーやメニューから実行する場合は、アウトプットバーにフォーカスがあるときでも動作するはず（ショートカットキーでの実行は無理かも）。&lt;br /&gt;
&lt;br /&gt;
* エディタの設定で &#039;&#039;&#039;タブが無効&#039;&#039;&#039; または &#039;&#039;&#039;タブの「閉じるボタン」を表示していない&#039;&#039;&#039; 場合は、閉じたときに Mery （のウインドウ）が終了してしまい、開きなおしができません。&lt;br /&gt;
&lt;br /&gt;
*「&#039;&#039;&#039;さいごに閉じたファイル&#039;&#039;&#039;」メニューを表示できるのは、Mery 本体のオプション設定 &amp;gt;&amp;gt; 履歴 &amp;gt;&amp;gt; 「&#039;&#039;&#039;カーソル位置とブックマークを保存する&#039;&#039;&#039;」が有効で、本マクロの設定項目「読みなおし サブメニュー」が有効の場合のみです。&lt;br /&gt;
&lt;br /&gt;
* 「自動保存／バックアップフォルダ」の設定を Mery.ini から読みとるため、Mery の「オプション」設定の「自動保存」でフォルダパスが指定されていてフォルダの実在確認ができるなら、「自動保存／バックアップ」の有効／無効によらずポップアップメニュー内にコマンドを表示します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ダウンロード ==&lt;br /&gt;
「[[ファイル:ファイルを読み直す・開きなおす.zip]]」（アイコン入り）&lt;br /&gt;
 　2019/03/29:	 初版&lt;br /&gt;
 　2019/04/06:	「編集モードサブメニュー」を追加。&lt;br /&gt;
 　2019/04/07:	 Quit() メソッドを削除。&lt;br /&gt;
 　2019/04/08:	「プロパティ」を追加。動作コードの記述を簡略化。&lt;br /&gt;
 　2019/04/28:	「さいごに閉じたファイル」を追加。ソースコードが約100行 UP…。&lt;br /&gt;
 　2019/04/29:	「自動保存フォルダ／バックアップフォルダを開く」を追加。&lt;br /&gt;
 　2019/04/30:	 エラーの修正。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; style=&amp;quot;height:120em; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;ファイルを読み直す・開きなおす...&amp;quot;&lt;br /&gt;
#tooltip = &amp;quot;エンコード指定／読み取り専用属性／編集モードの変更&amp;quot;&lt;br /&gt;
// #icon = &amp;quot;reload.ico&amp;quot;&lt;br /&gt;
// #icon = &amp;quot;Mery用 マテリアルデザインっぽいアイコン.icl&amp;quot;,262&lt;br /&gt;
&lt;br /&gt;
var start = new Date();	// 所要時間計測（開始）&lt;br /&gt;
/**&lt;br /&gt;
 * ---------------------------------------------------------&lt;br /&gt;
 * ファイルを読み直す・開きなおす&lt;br /&gt;
 * sukemaru (2019/03/29 - 2019/04/30)&lt;br /&gt;
 * ---------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// ---------- ▼ 設定項目 ▼ ---------- //&lt;br /&gt;
&lt;br /&gt;
// ■「読みなおし サブメニュー」を表示する&lt;br /&gt;
var reloadMenuEnable = true;&lt;br /&gt;
&lt;br /&gt;
    // ■「さいごに閉じたファイル」の件数&lt;br /&gt;
    var numLatestClosed = 5;&lt;br /&gt;
&lt;br /&gt;
// ■「編集モード サブメニュー」を表示する&lt;br /&gt;
var viewModeMenuEnable = true;&lt;br /&gt;
&lt;br /&gt;
// ■諸外国語用（UTF-** とシフトJIS 以外）の文字コードを表示する&lt;br /&gt;
var variousLanguageEnable = true;&lt;br /&gt;
&lt;br /&gt;
// ---------- ▲ 設定項目 ▲ ---------- //&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var d = editor.ActiveDocument;&lt;br /&gt;
var path = d.FullName;&lt;br /&gt;
&lt;br /&gt;
if ( ! path &amp;amp;&amp;amp; ! viewModeMenuEnable ) {&lt;br /&gt;
  Status = &amp;quot;　「無題」ドキュメントは読み直しできません。&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  var WshShell = new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; );&lt;br /&gt;
  var Fso = new ActiveXObject( &amp;quot;Scripting.FileSystemObject&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
  // メニューに付けるチェックマークとグレーアウト設定&lt;br /&gt;
  if ( path ) {&lt;br /&gt;
    var f = Fso.GetFile( path );&lt;br /&gt;
&lt;br /&gt;
    // 読み取り専用属性&lt;br /&gt;
    var attributeReadOnly = ( f.Attributes &amp;amp; 1 ? true : false )&lt;br /&gt;
    var aCheckFlags = attributeReadOnly ? meMenuChecked : 0;&lt;br /&gt;
    var aGrayFlags1 = attributeReadOnly ? meMenuGrayed : 0;&lt;br /&gt;
    var aGrayFlags2 = attributeReadOnly ? 0 : meMenuGrayed;&lt;br /&gt;
&lt;br /&gt;
    // 書き換え禁止フラグ&lt;br /&gt;
    var rCheckFlags = d.ReadOnly ? meMenuChecked : 0;&lt;br /&gt;
    var rGrayFlags1 = d.ReadOnly ? meMenuGrayed : 0;&lt;br /&gt;
    var rGrayFlags2 = d.ReadOnly ? 0 : meMenuGrayed;&lt;br /&gt;
&lt;br /&gt;
    // エンコード&lt;br /&gt;
    var dEnc = d.Encoding;&lt;br /&gt;
    var utf8 = ( dEnc == meEncodingUTF8&lt;br /&gt;
              || dEnc == meEncodingUTF8BOM&lt;br /&gt;
              || dEnc == meEncodingUTF8NoBOM )&lt;br /&gt;
      ? meMenuChecked : 0;&lt;br /&gt;
    var utf16le = ( dEnc == meEncodingUTF16LE&lt;br /&gt;
                 || dEnc == meEncodingUTF16LEBOM&lt;br /&gt;
                 || dEnc == meEncodingUTF16LENoBOM )&lt;br /&gt;
      ? meMenuChecked : 0;&lt;br /&gt;
    var utf16be = ( dEnc == meEncodingUTF16BE&lt;br /&gt;
                 || dEnc == meEncodingUTF16BEBOM&lt;br /&gt;
                 || dEnc == meEncodingUTF16BENoBOM )&lt;br /&gt;
      ? meMenuChecked : 0;&lt;br /&gt;
    var EncCheck = function( arg1 ) {&lt;br /&gt;
      return d.Encoding == arg1 ? meMenuChecked : 0;&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 編集モード&lt;br /&gt;
  if ( viewModeMenuEnable ) {&lt;br /&gt;
    var dMode = d.Mode;&lt;br /&gt;
    var ModeCheck = function( arg1 ) {&lt;br /&gt;
      return dMode == arg1 ? meMenuChecked : 0;&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // さいごに閉じたファイル&lt;br /&gt;
  if ( numLatestClosed &amp;gt; 0 ) {&lt;br /&gt;
    var latestClosedFile = LatestClosedFile( numLatestClosed );&lt;br /&gt;
    latestClosedFile = numLatestClosed == 1&lt;br /&gt;
                     ? [ latestClosedFile ] : latestClosedFile;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 自動保存フォルダとバックアップフォルダ&lt;br /&gt;
  var iniItem = [ &amp;quot;AutoSaveEnabled&amp;quot;, &amp;quot;AutoSaveToFolder&amp;quot;, &amp;quot;AutoSaveFolder&amp;quot;, &lt;br /&gt;
                  &amp;quot;BackupSaveToFolder&amp;quot;, &amp;quot;BackupFolder&amp;quot; ];&lt;br /&gt;
  var iniValue = GetIniOption( iniItem );&lt;br /&gt;
  var autoSaveFolder = iniValue[2];&lt;br /&gt;
  var backupFolder = iniValue[4];&lt;br /&gt;
  var autoSaveGrayFlags = Fso.FolderExists( autoSaveFolder )&lt;br /&gt;
                        ? 0 : meMenuGrayed;&lt;br /&gt;
  var backupGrayFlags = Fso.FolderExists( backupFolder )&lt;br /&gt;
                      ? 0 : meMenuGrayed;&lt;br /&gt;
  var autoSaveBackup = ( autoSaveGrayFlags == 0 || backupGrayFlags == 0 )&lt;br /&gt;
                     ? true : false;&lt;br /&gt;
&lt;br /&gt;
  // ポップアップメニュー項目&lt;br /&gt;
  var m = CreatePopupMenu();&lt;br /&gt;
  var sm1 = CreatePopupMenu();&lt;br /&gt;
  var sm2 = CreatePopupMenu();&lt;br /&gt;
&lt;br /&gt;
  // 「無題」ドキュメントでは読み直しメニューを表示しない&lt;br /&gt;
  if ( path ) {&lt;br /&gt;
    m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
    m.Add( &amp;quot;書き換え禁止 ON／OFF (&amp;amp;Y)&amp;quot;, 2, rCheckFlags + aGrayFlags1 );&lt;br /&gt;
    m.Add( &amp;quot;読み取り専用属性 ON／OFF (&amp;amp;W)&amp;quot;, 5, aCheckFlags );&lt;br /&gt;
    m.Add( &amp;quot;閉じて開きなおす (&amp;amp;O)&amp;quot;, 1 );&lt;br /&gt;
    m.Add( &amp;quot;プロパティ (&amp;amp;R)&amp;quot;, 8 );&lt;br /&gt;
&lt;br /&gt;
    if ( reloadMenuEnable ) {&lt;br /&gt;
      m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
      m.AddPopup( &amp;quot;読みなおし サブメニュー (&amp;amp;L)&amp;quot;, sm1 );&lt;br /&gt;
      {&lt;br /&gt;
        sm1.Add( &amp;quot;  書き換え禁止にする (&amp;amp;Y)&amp;quot;, 3, rGrayFlags1 || aGrayFlags1 );&lt;br /&gt;
        sm1.Add( &amp;quot;  書き換え禁止を解除 (&amp;amp;W)&amp;quot;, 4, rGrayFlags2 + aGrayFlags1 );&lt;br /&gt;
        sm1.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
        sm1.Add( &amp;quot;  読み取り専用属性にして開きなおす (&amp;amp;R)&amp;quot;, 6, aGrayFlags1 );&lt;br /&gt;
        sm1.Add( &amp;quot;  読み取り専用属性を解除して開きなおす (&amp;amp;O)&amp;quot;, 7, aGrayFlags2 );&lt;br /&gt;
        sm1.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
        // 「さいごに閉じたファイル」&lt;br /&gt;
        if ( numLatestClosed ) {&lt;br /&gt;
          LatestClosedFileMenu( sm1, 300 );&lt;br /&gt;
        }&lt;br /&gt;
        if ( autoSaveBackup ) {&lt;br /&gt;
          sm1.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
          sm1.Add( &amp;quot;自動保存フォルダを開く (&amp;amp;A)&amp;quot;, 250, autoSaveGrayFlags );&lt;br /&gt;
          sm1.Add( &amp;quot;バックアップフォルダを開く (&amp;amp;B)&amp;quot;, 251, backupGrayFlags );&lt;br /&gt;
        }&lt;br /&gt;
        sm1.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
        sm1.Add( &amp;quot;「読み直し」マクロの JS ファイルを開く (&amp;amp;J)&amp;quot;, 9 );&lt;br /&gt;
        sm1.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
        sm1.Add( &amp;quot;キャンセル &amp;amp; &amp;quot;, 0 );	// Esc キーまたは Space キーでキャンセル可&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( viewModeMenuEnable ) {&lt;br /&gt;
    m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
    m.AddPopup( &amp;quot;編集モード サブメニュー (&amp;amp;M)&amp;quot;, sm2 );&lt;br /&gt;
    {&lt;br /&gt;
      sm2.Add( &amp;quot;現在の編集モードのプロパティ (&amp;amp;P)...&amp;quot;, 100 );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
&lt;br /&gt;
      /* 以下、追加／削除したものがあれば任意で変更すること。並べ替え可 */&lt;br /&gt;
      // ▼ デフォルトの編集モード ▼&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;Bat&amp;quot;, 101, ModeCheck( &amp;quot;Bat&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;C&amp;amp;#&amp;quot;, 102, ModeCheck( &amp;quot;C#&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;C&amp;amp;++&amp;quot;, 103, ModeCheck( &amp;quot;C++&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;ColdFusion&amp;quot;, 104, ModeCheck( &amp;quot;ColdFusion&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;CSS&amp;quot;, 105, ModeCheck( &amp;quot;CSS&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;Delphi&amp;quot;, 106, ModeCheck( &amp;quot;Delphi&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;HSP&amp;quot;, 107, ModeCheck( &amp;quot;HSP&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;HTML&amp;quot;, 108, ModeCheck( &amp;quot;HTML&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;INI&amp;quot;, 109, ModeCheck( &amp;quot;INI&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;J&amp;amp;ava&amp;quot;, 110, ModeCheck( &amp;quot;Java&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;JavaScript&amp;quot;, 111, ModeCheck( &amp;quot;JavaScript&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;JSP&amp;quot;, 112, ModeCheck( &amp;quot;JSP&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;Per&amp;amp;l&amp;quot;, 113, ModeCheck( &amp;quot;Perl&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;P&amp;amp;erlScript&amp;quot;, 114, ModeCheck( &amp;quot;PerlScript&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;PHP&amp;quot;, 115, ModeCheck( &amp;quot;PHP&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;P&amp;amp;owerShell&amp;quot;, 116, ModeCheck( &amp;quot;PowerShell&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;P&amp;amp;ython&amp;quot;, 117, ModeCheck( &amp;quot;Python&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;RHT&amp;amp;ML&amp;quot;, 118, ModeCheck( &amp;quot;RHTML&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;Ruby&amp;quot;, 119, ModeCheck( &amp;quot;Ruby&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;S&amp;amp;QL&amp;quot;, 120, ModeCheck( &amp;quot;SQL&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;TeX&amp;quot;, 121, ModeCheck( &amp;quot;TeX&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;Text&amp;quot;, 122, ModeCheck( &amp;quot;Text&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;UWSC&amp;quot;, 123, ModeCheck( &amp;quot;UWSC&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;VB&amp;amp;Script&amp;quot;, 124, ModeCheck( &amp;quot;VBScript&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;VisualBasic&amp;quot;, 124, ModeCheck( &amp;quot;VisualBasic&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;Widows Script&amp;quot;, 125, ModeCheck( &amp;quot;Widows Script&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;x86 Assembler&amp;quot;, 126, ModeCheck( &amp;quot;x86 Assembler&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;XML&amp;quot;, 127, ModeCheck( &amp;quot;XML&amp;quot; ) );&lt;br /&gt;
      // ▲ デフォルトの編集モード ▲&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
&lt;br /&gt;
      /* ▼ ココに追加の編集モードを列挙する ▼ */&lt;br /&gt;
      // 編集モード名は正確に、アクセラレータの「&amp;amp;」または「(&amp;amp;A)」以外は付加しないこと&lt;br /&gt;
//       sm2.Add( &amp;quot;Hoge (&amp;amp;G)&amp;quot;, 128 );&lt;br /&gt;
//       sm2.Add( &amp;quot;Fuga (&amp;amp;F)&amp;quot;, 129 );&lt;br /&gt;
//       sm2.Add( &amp;quot;Piyo&amp;quot;, 130 );&lt;br /&gt;
//&lt;br /&gt;
//       sm2.Add( &amp;quot;&amp;amp;Mery_Macro_JS&amp;quot;, 131, ModeCheck( &amp;quot;Mery_Macro_JS&amp;quot; ) );&lt;br /&gt;
//       sm2.Add( &amp;quot;Mery MS&amp;amp;Y&amp;quot;, 132, ModeCheck( &amp;quot;Mery MSY&amp;quot; ) );&lt;br /&gt;
//       sm2.Add( &amp;quot;&amp;amp;JaneStyle （正規表現用）&amp;quot;, 134, ModeCheck( &amp;quot;JaneStyle （正規表現用）&amp;quot; ) );&lt;br /&gt;
      /* ▲ ココに追加の編集モードを列挙する ▲ */&lt;br /&gt;
&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
      sm2.Add( &amp;quot;編集モードの設定 (&amp;amp;C)...&amp;quot;, 200 );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
      sm2.Add( &amp;quot;キャンセル &amp;amp; &amp;quot;, 0 );	// Esc キーまたは Space キーでキャンセル可&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 「無題」ドキュメントではエンコードメニューを表示しない&lt;br /&gt;
  if ( document.FullName ) {&lt;br /&gt;
    // 2068 からの ID は ExecuteCommandByID() の定数&lt;br /&gt;
    m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
    m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
    m.Add( &amp;quot;自動選択 (&amp;amp;A)&amp;quot;, 2068 );&lt;br /&gt;
    m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
    m.Add( &amp;quot;UTF-1&amp;amp;6LE&amp;quot;, 2069, utf16le );&lt;br /&gt;
    m.Add( &amp;quot;UTF-16&amp;amp;BE&amp;quot;, 2070, utf16be );&lt;br /&gt;
    m.Add( &amp;quot;UTF-&amp;amp;8&amp;quot;, 2071, utf8 );&lt;br /&gt;
    m.Add( &amp;quot;UTF-&amp;amp;7&amp;quot;, 2072, EncCheck( meEncodingUTF7 ) );&lt;br /&gt;
    m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
    m.Add( &amp;quot;日本語 (シフト JI&amp;amp;S)&amp;quot;, 2083, EncCheck( meEncodingShiftJIS ) );&lt;br /&gt;
&lt;br /&gt;
    if ( variousLanguageEnable ) {&lt;br /&gt;
      m.Add( &amp;quot;日本語 (&amp;amp;JIS)&amp;quot;, 2082, EncCheck( meEncodingJIS ) );&lt;br /&gt;
      m.Add( &amp;quot;日本語 (&amp;amp;EUC)&amp;quot;, 2081, EncCheck( meEncodingEUC ) );&lt;br /&gt;
      m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
      m.Add( &amp;quot;西ヨーロッパ言語&amp;quot;, 2088, EncCheck( meEncodingWesternEuropean ) );&lt;br /&gt;
      m.Add( &amp;quot;中央ヨーロッパ言語&amp;quot;, 2075, EncCheck( meEncodingCentralEuropean ) );&lt;br /&gt;
      m.Add( &amp;quot;キリル言語&amp;quot;, 2078, EncCheck( meEncodingCyrillic ) );&lt;br /&gt;
      m.Add( &amp;quot;バルト言語&amp;quot;, 2074, EncCheck( meEncodingBaltic ) );&lt;br /&gt;
      m.Add( &amp;quot;ギリシャ語&amp;quot;, 2079, EncCheck( meEncodingGreek ) );&lt;br /&gt;
      m.Add( &amp;quot;ヘブライ語&amp;quot;, 2080, EncCheck( meEncodingHebrew ) );&lt;br /&gt;
      m.Add( &amp;quot;トルコ語&amp;quot;, 2086, EncCheck( meEncodingTurkish ) );&lt;br /&gt;
      m.Add( &amp;quot;アラビア語&amp;quot;, 2073, EncCheck( meEncodingArabic ) );&lt;br /&gt;
      m.Add( &amp;quot;タイ語&amp;quot;, 2085, EncCheck( meEncodingThai ) );&lt;br /&gt;
      m.Add( &amp;quot;ベトナム語&amp;quot;, 2087, EncCheck( meEncodingVietnamese ) );&lt;br /&gt;
      m.Add( &amp;quot;簡体中国語 (GB2312)&amp;quot;, 2076, EncCheck( meEncodingChineseSimplified ) );&lt;br /&gt;
      m.Add( &amp;quot;繁体中国語 (Big5)&amp;quot;, 2077, EncCheck( meEncodingChineseTraditional ) );&lt;br /&gt;
      m.Add( &amp;quot;韓国語&amp;quot;, 2084, EncCheck( meEncodingKorean ) );&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( ! path &amp;amp;&amp;amp; reloadMenuEnable ) {&lt;br /&gt;
    // 「さいごに閉じたファイル」&lt;br /&gt;
    if ( numLatestClosed ) {&lt;br /&gt;
      LatestClosedFileMenu( m, 300 );&lt;br /&gt;
    }&lt;br /&gt;
    m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
    m.Add( &amp;quot;「読み直し」マクロの JS ファイルを開く (&amp;amp;J)&amp;quot;, 9 );&lt;br /&gt;
  }&lt;br /&gt;
  m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
  m.Add( &amp;quot;キャンセル &amp;amp; &amp;quot;, 0 );	// Esc キーまたは Space キーでキャンセル可&lt;br /&gt;
&lt;br /&gt;
  Status = &amp;quot;　「読みなおし」 マクロ　　[ &amp;quot;&lt;br /&gt;
         + ( ( new Date() - start ) /1000 ).toFixed( 3 ).replace( /\./, &amp;quot;. &amp;quot; ) +&amp;quot; 秒 ]&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  // ポップアップメニューを表示&lt;br /&gt;
  var r = m.Track( mePosMouse = 1 );&lt;br /&gt;
&lt;br /&gt;
  /**&lt;br /&gt;
   * 動作コードを変更 （2019/04/08）&lt;br /&gt;
   * ポップアップメニューを表示するまでの準備段階で&lt;br /&gt;
   * 変数の準備や属性のチェックは済ませてあるので&lt;br /&gt;
   * 各コマンドを簡略化した。&lt;br /&gt;
   */&lt;br /&gt;
  switch ( r ) {&lt;br /&gt;
    case 0:&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    case 1:	// ファイルを閉じて開きなおす&lt;br /&gt;
      d.Close();&lt;br /&gt;
      ReopenFile( path );&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    case 2:	// 書き換え禁止フラグ ON／OFF を変更する&lt;br /&gt;
    case 3:	// 書き換え禁止にする&lt;br /&gt;
    case 4:	// 書き換え禁止を解除&lt;br /&gt;
      d.ReadOnly = ! d.ReadOnly;&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    case 5:	// 読み取り専用属性 ON／OFF を変更して開き直す&lt;br /&gt;
    case 6:	// 読み取り専用属性に変更して開き直す&lt;br /&gt;
    case 7:	// 読み取り専用属性を解除して開き直す&lt;br /&gt;
      // d.Save();	// コメントアウトすると未保存で閉じる前に確認ダイアログ&lt;br /&gt;
      d.Close();&lt;br /&gt;
      f.Attributes = ! f.Attributes;&lt;br /&gt;
      ReopenFile( path );&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    case 8:	// ファイルのプロパティを開く&lt;br /&gt;
      var fileName = editor.ActiveDocument.Name;&lt;br /&gt;
      var shell = new ActiveXObject( &amp;quot;Shell.Application&amp;quot; );&lt;br /&gt;
      shell.NameSpace( path.slice( 0, - fileName.length ) )&lt;br /&gt;
           .ParseName( fileName )&lt;br /&gt;
           .InvokeVerb( &amp;quot;プロパティ(&amp;amp;R)&amp;quot; );&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    case 9:	// このマクロの JS ファイルを開く&lt;br /&gt;
      OpenJumpJS();&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    case 100:	// 現在の編集モードのプロパティ...&lt;br /&gt;
      WshShell.SendKeys( &amp;quot;%P&amp;quot; );&lt;br /&gt;
      editor.ExecuteCommandByID( MEID_VIEW_MODE_CUSTOMIZE = 2144 );&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    case 200:	// 編集モードの設定...&lt;br /&gt;
      editor.ExecuteCommandByID( MEID_VIEW_MODE_CUSTOMIZE = 2144 );&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    case 250:	// 自動保存フォルダ&lt;br /&gt;
    case 251:	// バックアップフォルダ&lt;br /&gt;
      var folder = ( r == 250 ) ? autoSaveFolder : backupFolder;&lt;br /&gt;
      WshShell.Run( &amp;quot;\&amp;quot;&amp;quot; + folder + &amp;quot;\&amp;quot;&amp;quot; );&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    default:&lt;br /&gt;
      if ( r &amp;gt;= 300 &amp;amp;&amp;amp; r &amp;lt; 400 ) {	// さいごに閉じたファイル&lt;br /&gt;
        ReopenFile( latestClosedFile[ r - 300 ] );&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      else if ( r &amp;gt; 2000 ) {	// エンコード指定で読みなおす&lt;br /&gt;
        editor.ExecuteCommandByID( r );&lt;br /&gt;
      }&lt;br /&gt;
      else {	// 編集モードを変更&lt;br /&gt;
        var label = m.GetText( r ).replace( /[ ]*\(&amp;amp;.\)[ ]*|&amp;amp;/g , &amp;quot;&amp;quot; );&lt;br /&gt;
        d.Mode = label;&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * 関数 ReopenFile ( strPath )&lt;br /&gt;
 * 「開きなおす」&lt;br /&gt;
 */&lt;br /&gt;
function ReopenFile ( strPath ) {&lt;br /&gt;
  if ( editor.ActiveDocument.FullName || editor.ActiveDocument.Text ) {&lt;br /&gt;
    editor.NewFile();&lt;br /&gt;
  }&lt;br /&gt;
  editor.OpenFile( strPath );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * 関数 OpenJumpJS()&lt;br /&gt;
 * このマクロを開いて設定項目の行にジャンプする&lt;br /&gt;
 */&lt;br /&gt;
function OpenJumpJS() {&lt;br /&gt;
  var eCount = editors.Count;&lt;br /&gt;
  var isOpen = false,  ee ,  dd;&lt;br /&gt;
  OuterLoop:&lt;br /&gt;
  for ( var j = 0; j &amp;lt; eCount; j ++ ) {&lt;br /&gt;
    var dCount = editors.Item( j ).documents.Count;&lt;br /&gt;
    for ( var i = 0; i &amp;lt; dCount; i ++ ) {&lt;br /&gt;
      if ( editors.Item( j ).documents.Item( i ).FullName == ScriptFullName ) {&lt;br /&gt;
        isOpen = true;&lt;br /&gt;
        ee = j;&lt;br /&gt;
        dd = i;&lt;br /&gt;
        break OuterLoop;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if ( isOpen ) {&lt;br /&gt;
    editors.Item( ee ).documents.Item( dd ).Activate();&lt;br /&gt;
  }&lt;br /&gt;
  else {&lt;br /&gt;
    editor.NewFile();&lt;br /&gt;
    ee = ( editors.Count == 1 ) ? 0 : eCount;&lt;br /&gt;
    editors.Item( ee ).OpenFile( ScriptFullName, 2071 );&lt;br /&gt;
  }&lt;br /&gt;
  var js = editors.Item( ee ).ActiveDocument;&lt;br /&gt;
  var settingPos = js.Text.indexOf( &amp;quot;▼ 設定項目 ▼&amp;quot; );&lt;br /&gt;
  js.selection.SetActivePos( settingPos );&lt;br /&gt;
  js.selection.StartOfLine( false, mePosLogical );&lt;br /&gt;
  var yy = js.selection.GetActivePointY( mePosLogical );&lt;br /&gt;
  ScrollY = yy;&lt;br /&gt;
  // 狙った行にスクロールしない場合は、強引にやる&lt;br /&gt;
  // var WshShell = new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; );&lt;br /&gt;
  // WshShell.Run( &#039;&amp;quot;&#039; + editor.FullName + &#039;&amp;quot; /l &#039; + yy&lt;br /&gt;
  //            + &#039; &amp;quot;&#039; + ScriptFullName + &#039;&amp;quot;&#039; );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * 関数 LatestClosedFile( num )&lt;br /&gt;
 * Mery.his を読み込んで「さいごに閉じたファイル」のフルパスを返す&lt;br /&gt;
 * &lt;br /&gt;
 * 引数: 「さいごに閉じたファイル」の件数を指定&lt;br /&gt;
 *      1 を指定した場合または省略した場合は、１件のフルパスを文字列で返す&lt;br /&gt;
 *      2 以上の数値を指定した場合は、配列で返す&lt;br /&gt;
 *       &lt;br /&gt;
 * ※ Mery の「オプション」設定で「カーソル位置とブックマークを保存する」&lt;br /&gt;
 *   が無効（Mery.his がない）なら &amp;quot;&amp;quot; を返す&lt;br /&gt;
 */&lt;br /&gt;
function LatestClosedFile( num ) {&lt;br /&gt;
  var num = num ? num : 1;&lt;br /&gt;
  var closedFile = &amp;quot;&amp;quot;;&lt;br /&gt;
  var closedFileArray = [];&lt;br /&gt;
  // var Fso = new ActiveXObject( &amp;quot;Scripting.FileSystemObject&amp;quot; );&lt;br /&gt;
  var meryhis = editor.FullName.replace( /\.exe$/i , &amp;quot;.his&amp;quot; );&lt;br /&gt;
  if ( ! Fso.FileExists( meryhis ) ) {&lt;br /&gt;
    // var WshShell = new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; );&lt;br /&gt;
    meryhis = WshShell.ExpandEnvironmentStrings( &amp;quot;%APPDATA%&amp;quot; )&lt;br /&gt;
            + &amp;quot;\\Mery\\Mery.his&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  if ( ! Fso.FileExists( meryhis ) ) {&lt;br /&gt;
    return closedFile;&lt;br /&gt;
  }&lt;br /&gt;
  var Adodb = new ActiveXObject( &amp;quot;ADODB.Stream&amp;quot; );&lt;br /&gt;
  var adTypeText = 2,  adReadAll = -1;&lt;br /&gt;
  Adodb.Type = adTypeText;&lt;br /&gt;
  Adodb.Charset = &amp;quot;UTF-8&amp;quot;;&lt;br /&gt;
  Adodb.Open();&lt;br /&gt;
  Adodb.LoadFromFile( meryhis );&lt;br /&gt;
  var hisText = Adodb.ReadText( adReadAll ).replace( /\r\n?/g, &amp;quot;\n&amp;quot; );&lt;br /&gt;
  Adodb.Close();&lt;br /&gt;
  var hisArray = hisText.match( /^\[.+\]$/gm );&lt;br /&gt;
  if ( ! hisArray ) {&lt;br /&gt;
    return closedFile;&lt;br /&gt;
  }&lt;br /&gt;
  hisArray.reverse();&lt;br /&gt;
  var hCount = hisArray.length;&lt;br /&gt;
  var eCount = Editors.Count;&lt;br /&gt;
  var dCount, cCount, file, hit;&lt;br /&gt;
  outerLoop:&lt;br /&gt;
  for ( var i = 0; i &amp;lt; hCount; i ++ ) {&lt;br /&gt;
    closedFile = hisArray[i].replace( /^\[|\]$/g, &amp;quot;&amp;quot; );&lt;br /&gt;
    for ( var ee = 0; ee &amp;lt; eCount; ee ++ ) {&lt;br /&gt;
      dCount = Editors.Item( ee ).Documents.Count;&lt;br /&gt;
      for ( var dd = 0, hit = 0; dd &amp;lt; dCount; dd ++ ) {&lt;br /&gt;
        file = Editors.Item( ee ).Documents.Item( dd ).FullName;&lt;br /&gt;
        if ( closedFile == file ) {&lt;br /&gt;
          hit ++;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      cCount = closedFileArray.length;&lt;br /&gt;
      if ( ! hit &amp;amp;&amp;amp; cCount &amp;lt; num &amp;amp;&amp;amp; Fso.FileExists( closedFile ) ) {&lt;br /&gt;
        closedFileArray.push( closedFile );&lt;br /&gt;
      }&lt;br /&gt;
      if ( cCount == num ) {&lt;br /&gt;
        break outerLoop;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return num == 1 ? ( closedFileArray[0] || &amp;quot;&amp;quot; ) : closedFileArray;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * 関数 LatestClosedFileMenu( objMenu, num )&lt;br /&gt;
 * 「さいごに閉じたファイル」のメニューを返す&lt;br /&gt;
 * &lt;br /&gt;
 * 第１引数: ポップアップメニューオブジェクト&lt;br /&gt;
 * 第２引数: ポップアップメニュー ID の開始値&lt;br /&gt;
 */&lt;br /&gt;
function LatestClosedFileMenu( objMenu, num ) {&lt;br /&gt;
  if ( latestClosedFile.length ) {&lt;br /&gt;
    objMenu.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
    objMenu.Add( &amp;quot;▼ さいごに閉じたファイル ▼&amp;quot;, 0, meMenuGrayed );&lt;br /&gt;
    for ( var i = 0; i &amp;lt; latestClosedFile.length; i ++ ) {&lt;br /&gt;
      objMenu.Add( &amp;quot;&amp;amp;&amp;quot; + ( i + 1 ) + &amp;quot;:  &amp;quot;&lt;br /&gt;
                 + latestClosedFile[i].replace( /(?:.+\\)*([^\\]+\\)([^\\]+)$/, &amp;quot;$1 $2&amp;quot; )&lt;br /&gt;
                 , i + num );&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * 組み込み関数 GetIniOption( array )&lt;br /&gt;
 * 引数で指定した INI オプション項目の値を返す&lt;br /&gt;
 */&lt;br /&gt;
function GetIniOption( array ) {&lt;br /&gt;
  // var Fso = new ActiveXObject( &amp;quot;Scripting.FileSystemObject&amp;quot; );&lt;br /&gt;
  var iniPath = editor.FullName.replace( /\.exe$/i , &amp;quot;.ini&amp;quot; );&lt;br /&gt;
  if ( ! Fso.FileExists( iniPath ) ) {&lt;br /&gt;
    // var WshShell = new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; );&lt;br /&gt;
    iniPath = WshShell.ExpandEnvironmentStrings( &amp;quot;%APPDATA%\\Mery\\Mery.ini&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
  var Adodb = new ActiveXObject( &amp;quot;ADODB.Stream&amp;quot; );&lt;br /&gt;
  var adTypeText = 2,  adReadAll = -1;&lt;br /&gt;
  Adodb.Type = adTypeText,  Adodb.Charset = &amp;quot;UTF-8&amp;quot;;&lt;br /&gt;
  Adodb.Open();&lt;br /&gt;
  Adodb.LoadFromFile( iniPath );&lt;br /&gt;
  var iniText = Adodb.ReadText( adReadAll ).replace( /\r\n?/g, &amp;quot;\n&amp;quot; );&lt;br /&gt;
  Adodb.Close();&lt;br /&gt;
  for ( var i = 0, len = array.length, dist = []; i &amp;lt; len; i ++ ) {&lt;br /&gt;
    var value = iniText.match( new RegExp( &amp;quot;^&amp;quot; + array[i] + &amp;quot;=.*$&amp;quot; , &amp;quot;igm&amp;quot; ) )[0]&lt;br /&gt;
                       .replace( /^[^=]+=(.*)$/ , &amp;quot;$1&amp;quot; );&lt;br /&gt;
    if ( value.match( /^[\-0-9]+$/ ) ) {&lt;br /&gt;
      value = Number( value );&lt;br /&gt;
    }&lt;br /&gt;
    dist.push( value );&lt;br /&gt;
  }&lt;br /&gt;
  return dist;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>61.24.242.249</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%AA%AD%E3%81%BF%E7%9B%B4%E3%81%99%E3%83%BB%E9%96%8B%E3%81%8D%E3%81%AA%E3%81%8A%E3%81%99&amp;diff=4223</id>
		<title>ファイルを読み直す・開きなおす</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%AA%AD%E3%81%BF%E7%9B%B4%E3%81%99%E3%83%BB%E9%96%8B%E3%81%8D%E3%81%AA%E3%81%8A%E3%81%99&amp;diff=4223"/>
		<updated>2019-05-01T09:26:09Z</updated>

		<summary type="html">&lt;p&gt;61.24.242.249: /* 「読みなおす・開きなおす」ポップアップメニュー */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 「読みなおす・開きなおす」ポップアップメニュー ==&lt;br /&gt;
&lt;br /&gt;
標準ツールバーの「&#039;&#039;&#039;読み直し&#039;&#039;&#039;」アイコン（ファイル メニューの「[[ヘルプ:ファイル#読み直し|読み直し]]」コマンド）のポップアップメニューを再現します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;エンコード指定&#039;&#039;&#039; の選択肢のほかに以下の機能を追加してあります。&lt;br /&gt;
&lt;br /&gt;
* Mery の &#039;&#039;&#039;書き換え禁止&#039;&#039;&#039; フラグ ON/OFF の変更&lt;br /&gt;
* &#039;&#039;&#039;読み取り専用属性&#039;&#039;&#039; ON/OFF の変更（ファイルを開きなおす）&lt;br /&gt;
* ファイルを &#039;&#039;&#039;閉じて開きなおす&#039;&#039;&#039;&lt;br /&gt;
*「&#039;&#039;&#039;編集モードの設定&#039;&#039;&#039;」パネルを開く&lt;br /&gt;
*「&#039;&#039;&#039;編集モード&#039;&#039;&#039;」を変更するサブメニュー&lt;br /&gt;
* ファイルの「&#039;&#039;&#039;プロパティ&#039;&#039;&#039;」を開く （2019/04/08 追加）&lt;br /&gt;
*「&#039;&#039;&#039;さいごに閉じたファイル&#039;&#039;&#039;」を開く （2019/04/28 追加）&lt;br /&gt;
* &#039;&#039;&#039;自動保存フォルダ&#039;&#039;&#039;と&#039;&#039;&#039;バックアップフォルダ&#039;&#039;&#039;を開く （2019/04/29 追加）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;ポップアップメニューのスクリーンショット (2019/04/30)&lt;br /&gt;
[[ファイル:ファイルを読み直す・開きなおす.png]]&lt;br /&gt;
&lt;br /&gt;
== 仕様上の制限 ==&lt;br /&gt;
&lt;br /&gt;
* Mery ver 2.6.15 まででは、「読みなおし」や「書き換え禁止にする」を実行すると、ブックマークが消えてしまいます（Mery 本体側の仕様なので、ファイルメニューや編集メニューの標準コマンドでも同様にブックマークが消えます）。&lt;br /&gt;
&lt;br /&gt;
* ファイルを「開きなおす」場合は、タブの並び順のさいごの位置に開きます。&amp;lt;br&amp;gt; また、開きなおしたファイルは、拡張子ごとの既定の「編集モード」になります。&lt;br /&gt;
&lt;br /&gt;
*「無題」ドキュメントでは読み直しやエンコード指定ができないので、「編集モード サブメニュー」to&lt;br /&gt;
「さいごに閉じたファイル」だけを表示します。&lt;br /&gt;
&lt;br /&gt;
*「編集モード サブメニュー」は、「編集モードの設定」で&#039;&#039;&#039;カスタマイズした並び順にはなりません&#039;&#039;&#039;&amp;lt;br&amp;gt;（※マクロから「編集モードの設定」にあるアイテムを取得する方法がないので、追加／削除されたものに対応するには、マクロのソースコードの書き換えが必要です。 → ZIP の ソースコードで 180行目 ～ 220行目 付近）。&lt;br /&gt;
&lt;br /&gt;
* アクセラレータの重複でトグル移動してしまうときは、Enter キーで確定するか、ソースコード内でアクセラレータ（ &#039;&#039;&#039;&amp;amp;&#039;&#039;&#039; 記号の位置や &#039;&#039;&#039;(&amp;amp;X)&#039;&#039;&#039; のアルファベット部分）を変更してください。&lt;br /&gt;
&lt;br /&gt;
* document → editor.ActiveDocument にしたので、ツールバーやメニューから実行する場合は、アウトプットバーにフォーカスがあるときでも動作するはず（ショートカットキーでの実行は無理かも）。&lt;br /&gt;
&lt;br /&gt;
* エディタの設定で &#039;&#039;&#039;タブが無効&#039;&#039;&#039; または &#039;&#039;&#039;タブの「閉じるボタン」を表示していない&#039;&#039;&#039; 場合は、閉じたときに Mery （のウインドウ）が終了してしまい、開きなおしができません。&lt;br /&gt;
&lt;br /&gt;
*「&#039;&#039;&#039;さいごに閉じたファイル&#039;&#039;&#039;」メニューを表示できるのは、Mery 本体のオプション設定 &amp;gt;&amp;gt; 履歴 &amp;gt;&amp;gt; 「&#039;&#039;&#039;カーソル位置とブックマークを保存する&#039;&#039;&#039;」が有効で、本マクロの設定項目「読みなおし サブメニュー」が有効の場合のみです。&lt;br /&gt;
&lt;br /&gt;
* 「自動保存／バックアップフォルダ」の設定を Mery.ini から読みとるため、Mery の「オプション」設定の「自動保存」でフォルダパスが指定されていてフォルダの実在確認ができるなら、「自動保存／バックアップ」の有効／無効によらずポップアップメニュー内にコマンドを表示します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ダウンロード ==&lt;br /&gt;
「[[ファイル:ファイルを読み直す・開きなおす.zip]]」（アイコン入り）&lt;br /&gt;
 　2019/03/29:	 初版&lt;br /&gt;
 　2019/04/06:	「編集モードサブメニュー」を追加。&lt;br /&gt;
 　2019/04/07:	 Quit() メソッドを削除。&lt;br /&gt;
 　2019/04/08:	「プロパティ」を追加。動作コードの記述を簡略化。&lt;br /&gt;
 　2019/04/28:	「さいごに閉じたファイル」を追加。ソースコードが約100行 UP…。&lt;br /&gt;
 　2019/04/29:	「自動保存フォルダ／バックアップフォルダを開く」を追加。&lt;br /&gt;
 　2019/04/30:	 エラーの修正。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot; style=&amp;quot;height:120em; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;ファイルを読み直す・開きなおす...&amp;quot;&lt;br /&gt;
#tooltip = &amp;quot;エンコード指定／読み取り専用属性／編集モードの変更&amp;quot;&lt;br /&gt;
// #icon = &amp;quot;reload.ico&amp;quot;&lt;br /&gt;
// #icon = &amp;quot;Mery用 マテリアルデザインっぽいアイコン.icl&amp;quot;,262&lt;br /&gt;
&lt;br /&gt;
var start = new Date();	// 所要時間計測（開始）&lt;br /&gt;
/**&lt;br /&gt;
 * ---------------------------------------------------------&lt;br /&gt;
 * ファイルを読み直す・開きなおす&lt;br /&gt;
 * sukemaru (2019/03/29 - 2019/04/30)&lt;br /&gt;
 * ---------------------------------------------------------&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
// ---------- ▼ 設定項目 ▼ ---------- //&lt;br /&gt;
&lt;br /&gt;
// ■「読みなおし サブメニュー」を表示する&lt;br /&gt;
var reloadMenuEnable = true;&lt;br /&gt;
&lt;br /&gt;
    // ■「さいごに閉じたファイル」の件数&lt;br /&gt;
    var numLatestClosed = 5;&lt;br /&gt;
&lt;br /&gt;
// ■「編集モード サブメニュー」を表示する&lt;br /&gt;
var viewModeMenuEnable = true;&lt;br /&gt;
&lt;br /&gt;
// ■諸外国語用（UTF-** とシフトJIS 以外）の文字コードを表示する&lt;br /&gt;
var variousLanguageEnable = true;&lt;br /&gt;
&lt;br /&gt;
// ---------- ▲ 設定項目 ▲ ---------- //&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var d = editor.ActiveDocument;&lt;br /&gt;
var path = d.FullName;&lt;br /&gt;
&lt;br /&gt;
if ( ! path &amp;amp;&amp;amp; ! viewModeMenuEnable ) {&lt;br /&gt;
  Status = &amp;quot;　「無題」ドキュメントは読み直しできません。&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  var WshShell = new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; );&lt;br /&gt;
  var Fso = new ActiveXObject( &amp;quot;Scripting.FileSystemObject&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
  // メニューに付けるチェックマークとグレーアウト設定&lt;br /&gt;
  if ( path ) {&lt;br /&gt;
    var f = Fso.GetFile( path );&lt;br /&gt;
&lt;br /&gt;
    // 読み取り専用属性&lt;br /&gt;
    var attributeReadOnly = ( f.Attributes &amp;amp; 1 ? true : false )&lt;br /&gt;
    var aCheckFlags = attributeReadOnly ? meMenuChecked : 0;&lt;br /&gt;
    var aGrayFlags1 = attributeReadOnly ? meMenuGrayed : 0;&lt;br /&gt;
    var aGrayFlags2 = attributeReadOnly ? 0 : meMenuGrayed;&lt;br /&gt;
&lt;br /&gt;
    // 書き換え禁止フラグ&lt;br /&gt;
    var rCheckFlags = d.ReadOnly ? meMenuChecked : 0;&lt;br /&gt;
    var rGrayFlags1 = d.ReadOnly ? meMenuGrayed : 0;&lt;br /&gt;
    var rGrayFlags2 = d.ReadOnly ? 0 : meMenuGrayed;&lt;br /&gt;
&lt;br /&gt;
    // エンコード&lt;br /&gt;
    var dEnc = d.Encoding;&lt;br /&gt;
    var utf8 = ( dEnc == meEncodingUTF8&lt;br /&gt;
              || dEnc == meEncodingUTF8BOM&lt;br /&gt;
              || dEnc == meEncodingUTF8NoBOM )&lt;br /&gt;
      ? meMenuChecked : 0;&lt;br /&gt;
    var utf16le = ( dEnc == meEncodingUTF16LE&lt;br /&gt;
                 || dEnc == meEncodingUTF16LEBOM&lt;br /&gt;
                 || dEnc == meEncodingUTF16LENoBOM )&lt;br /&gt;
      ? meMenuChecked : 0;&lt;br /&gt;
    var utf16be = ( dEnc == meEncodingUTF16BE&lt;br /&gt;
                 || dEnc == meEncodingUTF16BEBOM&lt;br /&gt;
                 || dEnc == meEncodingUTF16BENoBOM )&lt;br /&gt;
      ? meMenuChecked : 0;&lt;br /&gt;
    var EncCheck = function( arg1 ) {&lt;br /&gt;
      return d.Encoding == arg1 ? meMenuChecked : 0;&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 編集モード&lt;br /&gt;
  if ( viewModeMenuEnable ) {&lt;br /&gt;
    var dMode = d.Mode;&lt;br /&gt;
    var ModeCheck = function( arg1 ) {&lt;br /&gt;
      return dMode == arg1 ? meMenuChecked : 0;&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // さいごに閉じたファイル&lt;br /&gt;
  if ( numLatestClosed &amp;gt; 0 ) {&lt;br /&gt;
    var latestClosedFile = LatestClosedFile( numLatestClosed );&lt;br /&gt;
    latestClosedFile = numLatestClosed == 1&lt;br /&gt;
                     ? [ latestClosedFile ] : latestClosedFile;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 自動保存フォルダとバックアップフォルダ&lt;br /&gt;
  var iniItem = [ &amp;quot;AutoSaveEnabled&amp;quot;, &amp;quot;AutoSaveToFolder&amp;quot;, &amp;quot;AutoSaveFolder&amp;quot;, &lt;br /&gt;
                  &amp;quot;BackupSaveToFolder&amp;quot;, &amp;quot;BackupFolder&amp;quot; ];&lt;br /&gt;
  var iniValue = GetIniOption( iniItem );&lt;br /&gt;
  var autoSaveFolder = iniValue[2];&lt;br /&gt;
  var backupFolder = iniValue[4];&lt;br /&gt;
  var autoSaveGrayFlags = Fso.FolderExists( autoSaveFolder )&lt;br /&gt;
                        ? 0 : meMenuGrayed;&lt;br /&gt;
  var backupGrayFlags = Fso.FolderExists( backupFolder )&lt;br /&gt;
                      ? 0 : meMenuGrayed;&lt;br /&gt;
  var autoSaveBackup = ( autoSaveGrayFlags == 0 || backupGrayFlags == 0 )&lt;br /&gt;
                     ? true : false;&lt;br /&gt;
&lt;br /&gt;
  // ポップアップメニュー項目&lt;br /&gt;
  var m = CreatePopupMenu();&lt;br /&gt;
  var sm1 = CreatePopupMenu();&lt;br /&gt;
  var sm2 = CreatePopupMenu();&lt;br /&gt;
&lt;br /&gt;
  // 「無題」ドキュメントでは読み直しメニューを表示しない&lt;br /&gt;
  if ( path ) {&lt;br /&gt;
    m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
    m.Add( &amp;quot;書き換え禁止 ON／OFF (&amp;amp;Y)&amp;quot;, 2, rCheckFlags + aGrayFlags1 );&lt;br /&gt;
    m.Add( &amp;quot;読み取り専用属性 ON／OFF (&amp;amp;W)&amp;quot;, 5, aCheckFlags );&lt;br /&gt;
    m.Add( &amp;quot;閉じて開きなおす (&amp;amp;O)&amp;quot;, 1 );&lt;br /&gt;
    m.Add( &amp;quot;プロパティ (&amp;amp;R)&amp;quot;, 8 );&lt;br /&gt;
&lt;br /&gt;
    if ( reloadMenuEnable ) {&lt;br /&gt;
      m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
      m.AddPopup( &amp;quot;読みなおし サブメニュー (&amp;amp;L)&amp;quot;, sm1 );&lt;br /&gt;
      {&lt;br /&gt;
        sm1.Add( &amp;quot;  書き換え禁止にする (&amp;amp;Y)&amp;quot;, 3, rGrayFlags1 || aGrayFlags1 );&lt;br /&gt;
        sm1.Add( &amp;quot;  書き換え禁止を解除 (&amp;amp;W)&amp;quot;, 4, rGrayFlags2 + aGrayFlags1 );&lt;br /&gt;
        sm1.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
        sm1.Add( &amp;quot;  読み取り専用属性にして開きなおす (&amp;amp;R)&amp;quot;, 6, aGrayFlags1 );&lt;br /&gt;
        sm1.Add( &amp;quot;  読み取り専用属性を解除して開きなおす (&amp;amp;O)&amp;quot;, 7, aGrayFlags2 );&lt;br /&gt;
        sm1.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
        // 「さいごに閉じたファイル」&lt;br /&gt;
        if ( numLatestClosed ) {&lt;br /&gt;
          LatestClosedFileMenu( sm1, 300 );&lt;br /&gt;
        }&lt;br /&gt;
        if ( autoSaveBackup ) {&lt;br /&gt;
          sm1.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
          sm1.Add( &amp;quot;自動保存フォルダを開く (&amp;amp;A)&amp;quot;, 250, autoSaveGrayFlags );&lt;br /&gt;
          sm1.Add( &amp;quot;バックアップフォルダを開く (&amp;amp;B)&amp;quot;, 251, backupGrayFlags );&lt;br /&gt;
        }&lt;br /&gt;
        sm1.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
        sm1.Add( &amp;quot;「読み直し」マクロの JS ファイルを開く (&amp;amp;J)&amp;quot;, 9 );&lt;br /&gt;
        sm1.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
        sm1.Add( &amp;quot;キャンセル &amp;amp; &amp;quot;, 0 );	// Esc キーまたは Space キーでキャンセル可&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( viewModeMenuEnable ) {&lt;br /&gt;
    m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
    m.AddPopup( &amp;quot;編集モード サブメニュー (&amp;amp;M)&amp;quot;, sm2 );&lt;br /&gt;
    {&lt;br /&gt;
      sm2.Add( &amp;quot;現在の編集モードのプロパティ (&amp;amp;P)...&amp;quot;, 100 );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
&lt;br /&gt;
      /* 以下、追加／削除したものがあれば任意で変更すること。並べ替え可 */&lt;br /&gt;
      // ▼ デフォルトの編集モード ▼&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;Bat&amp;quot;, 101, ModeCheck( &amp;quot;Bat&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;C&amp;amp;#&amp;quot;, 102, ModeCheck( &amp;quot;C#&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;C&amp;amp;++&amp;quot;, 103, ModeCheck( &amp;quot;C++&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;ColdFusion&amp;quot;, 104, ModeCheck( &amp;quot;ColdFusion&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;CSS&amp;quot;, 105, ModeCheck( &amp;quot;CSS&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;Delphi&amp;quot;, 106, ModeCheck( &amp;quot;Delphi&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;HSP&amp;quot;, 107, ModeCheck( &amp;quot;HSP&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;HTML&amp;quot;, 108, ModeCheck( &amp;quot;HTML&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;INI&amp;quot;, 109, ModeCheck( &amp;quot;INI&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;J&amp;amp;ava&amp;quot;, 110, ModeCheck( &amp;quot;Java&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;JavaScript&amp;quot;, 111, ModeCheck( &amp;quot;JavaScript&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;JSP&amp;quot;, 112, ModeCheck( &amp;quot;JSP&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;Per&amp;amp;l&amp;quot;, 113, ModeCheck( &amp;quot;Perl&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;P&amp;amp;erlScript&amp;quot;, 114, ModeCheck( &amp;quot;PerlScript&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;PHP&amp;quot;, 115, ModeCheck( &amp;quot;PHP&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;P&amp;amp;owerShell&amp;quot;, 116, ModeCheck( &amp;quot;PowerShell&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;P&amp;amp;ython&amp;quot;, 117, ModeCheck( &amp;quot;Python&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;RHT&amp;amp;ML&amp;quot;, 118, ModeCheck( &amp;quot;RHTML&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;Ruby&amp;quot;, 119, ModeCheck( &amp;quot;Ruby&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;S&amp;amp;QL&amp;quot;, 120, ModeCheck( &amp;quot;SQL&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;TeX&amp;quot;, 121, ModeCheck( &amp;quot;TeX&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;Text&amp;quot;, 122, ModeCheck( &amp;quot;Text&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;UWSC&amp;quot;, 123, ModeCheck( &amp;quot;UWSC&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;VB&amp;amp;Script&amp;quot;, 124, ModeCheck( &amp;quot;VBScript&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;VisualBasic&amp;quot;, 124, ModeCheck( &amp;quot;VisualBasic&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;Widows Script&amp;quot;, 125, ModeCheck( &amp;quot;Widows Script&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;x86 Assembler&amp;quot;, 126, ModeCheck( &amp;quot;x86 Assembler&amp;quot; ) );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;amp;XML&amp;quot;, 127, ModeCheck( &amp;quot;XML&amp;quot; ) );&lt;br /&gt;
      // ▲ デフォルトの編集モード ▲&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
&lt;br /&gt;
      /* ▼ ココに追加の編集モードを列挙する ▼ */&lt;br /&gt;
      // 編集モード名は正確に、アクセラレータの「&amp;amp;」または「(&amp;amp;A)」以外は付加しないこと&lt;br /&gt;
//       sm2.Add( &amp;quot;Hoge (&amp;amp;G)&amp;quot;, 128 );&lt;br /&gt;
//       sm2.Add( &amp;quot;Fuga (&amp;amp;F)&amp;quot;, 129 );&lt;br /&gt;
//       sm2.Add( &amp;quot;Piyo&amp;quot;, 130 );&lt;br /&gt;
//&lt;br /&gt;
//       sm2.Add( &amp;quot;&amp;amp;Mery_Macro_JS&amp;quot;, 131, ModeCheck( &amp;quot;Mery_Macro_JS&amp;quot; ) );&lt;br /&gt;
//       sm2.Add( &amp;quot;Mery MS&amp;amp;Y&amp;quot;, 132, ModeCheck( &amp;quot;Mery MSY&amp;quot; ) );&lt;br /&gt;
//       sm2.Add( &amp;quot;&amp;amp;JaneStyle （正規表現用）&amp;quot;, 134, ModeCheck( &amp;quot;JaneStyle （正規表現用）&amp;quot; ) );&lt;br /&gt;
      /* ▲ ココに追加の編集モードを列挙する ▲ */&lt;br /&gt;
&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
      sm2.Add( &amp;quot;編集モードの設定 (&amp;amp;C)...&amp;quot;, 200 );&lt;br /&gt;
      sm2.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
      sm2.Add( &amp;quot;キャンセル &amp;amp; &amp;quot;, 0 );	// Esc キーまたは Space キーでキャンセル可&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 「無題」ドキュメントではエンコードメニューを表示しない&lt;br /&gt;
  if ( document.FullName ) {&lt;br /&gt;
    // 2068 からの ID は ExecuteCommandByID() の定数&lt;br /&gt;
    m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
    m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
    m.Add( &amp;quot;自動選択 (&amp;amp;A)&amp;quot;, 2068 );&lt;br /&gt;
    m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
    m.Add( &amp;quot;UTF-1&amp;amp;6LE&amp;quot;, 2069, utf16le );&lt;br /&gt;
    m.Add( &amp;quot;UTF-16&amp;amp;BE&amp;quot;, 2070, utf16be );&lt;br /&gt;
    m.Add( &amp;quot;UTF-&amp;amp;8&amp;quot;, 2071, utf8 );&lt;br /&gt;
    m.Add( &amp;quot;UTF-&amp;amp;7&amp;quot;, 2072, EncCheck( meEncodingUTF7 ) );&lt;br /&gt;
    m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
    m.Add( &amp;quot;日本語 (シフト JI&amp;amp;S)&amp;quot;, 2083, EncCheck( meEncodingShiftJIS ) );&lt;br /&gt;
&lt;br /&gt;
    if ( variousLanguageEnable ) {&lt;br /&gt;
      m.Add( &amp;quot;日本語 (&amp;amp;JIS)&amp;quot;, 2082, EncCheck( meEncodingJIS ) );&lt;br /&gt;
      m.Add( &amp;quot;日本語 (&amp;amp;EUC)&amp;quot;, 2081, EncCheck( meEncodingEUC ) );&lt;br /&gt;
      m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
      m.Add( &amp;quot;西ヨーロッパ言語&amp;quot;, 2088, EncCheck( meEncodingWesternEuropean ) );&lt;br /&gt;
      m.Add( &amp;quot;中央ヨーロッパ言語&amp;quot;, 2075, EncCheck( meEncodingCentralEuropean ) );&lt;br /&gt;
      m.Add( &amp;quot;キリル言語&amp;quot;, 2078, EncCheck( meEncodingCyrillic ) );&lt;br /&gt;
      m.Add( &amp;quot;バルト言語&amp;quot;, 2074, EncCheck( meEncodingBaltic ) );&lt;br /&gt;
      m.Add( &amp;quot;ギリシャ語&amp;quot;, 2079, EncCheck( meEncodingGreek ) );&lt;br /&gt;
      m.Add( &amp;quot;ヘブライ語&amp;quot;, 2080, EncCheck( meEncodingHebrew ) );&lt;br /&gt;
      m.Add( &amp;quot;トルコ語&amp;quot;, 2086, EncCheck( meEncodingTurkish ) );&lt;br /&gt;
      m.Add( &amp;quot;アラビア語&amp;quot;, 2073, EncCheck( meEncodingArabic ) );&lt;br /&gt;
      m.Add( &amp;quot;タイ語&amp;quot;, 2085, EncCheck( meEncodingThai ) );&lt;br /&gt;
      m.Add( &amp;quot;ベトナム語&amp;quot;, 2087, EncCheck( meEncodingVietnamese ) );&lt;br /&gt;
      m.Add( &amp;quot;簡体中国語 (GB2312)&amp;quot;, 2076, EncCheck( meEncodingChineseSimplified ) );&lt;br /&gt;
      m.Add( &amp;quot;繁体中国語 (Big5)&amp;quot;, 2077, EncCheck( meEncodingChineseTraditional ) );&lt;br /&gt;
      m.Add( &amp;quot;韓国語&amp;quot;, 2084, EncCheck( meEncodingKorean ) );&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( ! path &amp;amp;&amp;amp; reloadMenuEnable ) {&lt;br /&gt;
    // 「さいごに閉じたファイル」&lt;br /&gt;
    if ( numLatestClosed ) {&lt;br /&gt;
      LatestClosedFileMenu( m, 300 );&lt;br /&gt;
    }&lt;br /&gt;
    m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
    m.Add( &amp;quot;「読み直し」マクロの JS ファイルを開く (&amp;amp;J)&amp;quot;, 9 );&lt;br /&gt;
  }&lt;br /&gt;
  m.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
  m.Add( &amp;quot;キャンセル &amp;amp; &amp;quot;, 0 );	// Esc キーまたは Space キーでキャンセル可&lt;br /&gt;
&lt;br /&gt;
  Status = &amp;quot;　「読みなおし」 マクロ　　[ &amp;quot;&lt;br /&gt;
         + ( ( new Date() - start ) /1000 ).toFixed( 3 ).replace( /\./, &amp;quot;. &amp;quot; ) +&amp;quot; 秒 ]&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  // ポップアップメニューを表示&lt;br /&gt;
  var r = m.Track( mePosMouse = 1 );&lt;br /&gt;
&lt;br /&gt;
  /**&lt;br /&gt;
   * 動作コードを変更 （2019/04/08）&lt;br /&gt;
   * ポップアップメニューを表示するまでの準備段階で&lt;br /&gt;
   * 変数の準備や属性のチェックは済ませてあるので&lt;br /&gt;
   * 各コマンドを簡略化した。&lt;br /&gt;
   */&lt;br /&gt;
  switch ( r ) {&lt;br /&gt;
    case 0:&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    case 1:	// ファイルを閉じて開きなおす&lt;br /&gt;
      d.Close();&lt;br /&gt;
      ReopenFile( path );&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    case 2:	// 書き換え禁止フラグ ON／OFF を変更する&lt;br /&gt;
    case 3:	// 書き換え禁止にする&lt;br /&gt;
    case 4:	// 書き換え禁止を解除&lt;br /&gt;
      d.ReadOnly = ! d.ReadOnly;&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    case 5:	// 読み取り専用属性 ON／OFF を変更して開き直す&lt;br /&gt;
    case 6:	// 読み取り専用属性に変更して開き直す&lt;br /&gt;
    case 7:	// 読み取り専用属性を解除して開き直す&lt;br /&gt;
      // d.Save();	// コメントアウトすると未保存で閉じる前に確認ダイアログ&lt;br /&gt;
      d.Close();&lt;br /&gt;
      f.Attributes = ! f.Attributes;&lt;br /&gt;
      ReopenFile( path );&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    case 8:	// ファイルのプロパティを開く&lt;br /&gt;
      var fileName = editor.ActiveDocument.Name;&lt;br /&gt;
      var shell = new ActiveXObject( &amp;quot;Shell.Application&amp;quot; );&lt;br /&gt;
      shell.NameSpace( path.slice( 0, - fileName.length ) )&lt;br /&gt;
           .ParseName( fileName )&lt;br /&gt;
           .InvokeVerb( &amp;quot;プロパティ(&amp;amp;R)&amp;quot; );&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    case 9:	// このマクロの JS ファイルを開く&lt;br /&gt;
      OpenJumpJS();&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    case 100:	// 現在の編集モードのプロパティ...&lt;br /&gt;
      WshShell.SendKeys( &amp;quot;%P&amp;quot; );&lt;br /&gt;
      editor.ExecuteCommandByID( MEID_VIEW_MODE_CUSTOMIZE = 2144 );&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    case 200:	// 編集モードの設定...&lt;br /&gt;
      editor.ExecuteCommandByID( MEID_VIEW_MODE_CUSTOMIZE = 2144 );&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    case 250:	// 自動保存フォルダ&lt;br /&gt;
    case 251:	// バックアップフォルダ&lt;br /&gt;
      var folder = ( r == 250 ) ? autoSaveFolder : backupFolder;&lt;br /&gt;
      WshShell.Run( &amp;quot;\&amp;quot;&amp;quot; + folder + &amp;quot;\&amp;quot;&amp;quot; );&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    default:&lt;br /&gt;
      if ( r &amp;gt;= 300 &amp;amp;&amp;amp; r &amp;lt; 400 ) {	// さいごに閉じたファイル&lt;br /&gt;
        ReopenFile( latestClosedFile[ r - 300 ] );&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      else if ( r &amp;gt; 2000 ) {	// エンコード指定で読みなおす&lt;br /&gt;
        editor.ExecuteCommandByID( r );&lt;br /&gt;
      }&lt;br /&gt;
      else {	// 編集モードを変更&lt;br /&gt;
        var label = m.GetText( r ).replace( /[ ]*\(&amp;amp;.\)[ ]*|&amp;amp;/g , &amp;quot;&amp;quot; );&lt;br /&gt;
        d.Mode = label;&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * 関数 ReopenFile ( strPath )&lt;br /&gt;
 * 「開きなおす」&lt;br /&gt;
 */&lt;br /&gt;
function ReopenFile ( strPath ) {&lt;br /&gt;
  if ( editor.ActiveDocument.FullName || editor.ActiveDocument.Text ) {&lt;br /&gt;
    editor.NewFile();&lt;br /&gt;
  }&lt;br /&gt;
  editor.OpenFile( strPath );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * 関数 OpenJumpJS()&lt;br /&gt;
 * このマクロを開いて設定項目の行にジャンプする&lt;br /&gt;
 */&lt;br /&gt;
function OpenJumpJS() {&lt;br /&gt;
  var eCount = editors.Count;&lt;br /&gt;
  var isOpen = false,  ee ,  dd;&lt;br /&gt;
  OuterLoop:&lt;br /&gt;
  for ( var j = 0; j &amp;lt; eCount; j ++ ) {&lt;br /&gt;
    var dCount = editors.Item( j ).documents.Count;&lt;br /&gt;
    for ( var i = 0; i &amp;lt; dCount; i ++ ) {&lt;br /&gt;
      if ( editors.Item( j ).documents.Item( i ).FullName == ScriptFullName ) {&lt;br /&gt;
        isOpen = true;&lt;br /&gt;
        ee = j;&lt;br /&gt;
        dd = i;&lt;br /&gt;
        break OuterLoop;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if ( isOpen ) {&lt;br /&gt;
    editors.Item( ee ).documents.Item( dd ).Activate();&lt;br /&gt;
  }&lt;br /&gt;
  else {&lt;br /&gt;
    editor.NewFile();&lt;br /&gt;
    ee = ( editors.Count == 1 ) ? 0 : eCount;&lt;br /&gt;
    editors.Item( ee ).OpenFile( ScriptFullName, 2071 );&lt;br /&gt;
  }&lt;br /&gt;
  var js = editors.Item( ee ).ActiveDocument;&lt;br /&gt;
  var settingPos = js.Text.indexOf( &amp;quot;▼ 設定項目 ▼&amp;quot; );&lt;br /&gt;
  js.selection.SetActivePos( settingPos );&lt;br /&gt;
  js.selection.StartOfLine( false, mePosLogical );&lt;br /&gt;
  var yy = js.selection.GetActivePointY( mePosLogical );&lt;br /&gt;
  ScrollY = yy;&lt;br /&gt;
  // 狙った行にスクロールしない場合は、強引にやる&lt;br /&gt;
  // var WshShell = new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; );&lt;br /&gt;
  // WshShell.Run( &#039;&amp;quot;&#039; + editor.FullName + &#039;&amp;quot; /l &#039; + yy&lt;br /&gt;
  //            + &#039; &amp;quot;&#039; + ScriptFullName + &#039;&amp;quot;&#039; );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * 関数 LatestClosedFile( num )&lt;br /&gt;
 * Mery.his を読み込んで「さいごに閉じたファイル」のフルパスを返す&lt;br /&gt;
 * &lt;br /&gt;
 * 引数: 「さいごに閉じたファイル」の件数を指定&lt;br /&gt;
 *      1 を指定した場合または省略した場合は、１件のフルパスを文字列で返す&lt;br /&gt;
 *      2 以上の数値を指定した場合は、配列で返す&lt;br /&gt;
 *       &lt;br /&gt;
 * ※ Mery の「オプション」設定で「カーソル位置とブックマークを保存する」&lt;br /&gt;
 *   が無効（Mery.his がない）なら &amp;quot;&amp;quot; を返す&lt;br /&gt;
 */&lt;br /&gt;
function LatestClosedFile( num ) {&lt;br /&gt;
  var num = num ? num : 1;&lt;br /&gt;
  var closedFile = &amp;quot;&amp;quot;;&lt;br /&gt;
  var closedFileArray = [];&lt;br /&gt;
  // var Fso = new ActiveXObject( &amp;quot;Scripting.FileSystemObject&amp;quot; );&lt;br /&gt;
  var meryhis = editor.FullName.replace( /\.exe$/i , &amp;quot;.his&amp;quot; );&lt;br /&gt;
  if ( ! Fso.FileExists( meryhis ) ) {&lt;br /&gt;
    // var WshShell = new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; );&lt;br /&gt;
    meryhis = WshShell.ExpandEnvironmentStrings( &amp;quot;%APPDATA%&amp;quot; )&lt;br /&gt;
            + &amp;quot;\\Mery\\Mery.his&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  if ( ! Fso.FileExists( meryhis ) ) {&lt;br /&gt;
    return closedFile;&lt;br /&gt;
  }&lt;br /&gt;
  var Adodb = new ActiveXObject( &amp;quot;ADODB.Stream&amp;quot; );&lt;br /&gt;
  var adTypeText = 2,  adReadAll = -1;&lt;br /&gt;
  Adodb.Type = adTypeText;&lt;br /&gt;
  Adodb.Charset = &amp;quot;UTF-8&amp;quot;;&lt;br /&gt;
  Adodb.Open();&lt;br /&gt;
  Adodb.LoadFromFile( meryhis );&lt;br /&gt;
  var hisText = Adodb.ReadText( adReadAll ).replace( /\r\n?/g, &amp;quot;\n&amp;quot; );&lt;br /&gt;
  Adodb.Close();&lt;br /&gt;
  var hisArray = hisText.match( /^\[.+\]$/gm );&lt;br /&gt;
  if ( ! hisArray ) {&lt;br /&gt;
    return closedFile;&lt;br /&gt;
  }&lt;br /&gt;
  hisArray.reverse();&lt;br /&gt;
  var hCount = hisArray.length;&lt;br /&gt;
  var eCount = Editors.Count;&lt;br /&gt;
  var dCount, cCount, file, hit;&lt;br /&gt;
  outerLoop:&lt;br /&gt;
  for ( var i = 0; i &amp;lt; hCount; i ++ ) {&lt;br /&gt;
    closedFile = hisArray[i].replace( /^\[|\]$/g, &amp;quot;&amp;quot; );&lt;br /&gt;
    for ( var ee = 0; ee &amp;lt; eCount; ee ++ ) {&lt;br /&gt;
      dCount = Editors.Item( ee ).Documents.Count;&lt;br /&gt;
      for ( var dd = 0, hit = 0; dd &amp;lt; dCount; dd ++ ) {&lt;br /&gt;
        file = Editors.Item( ee ).Documents.Item( dd ).FullName;&lt;br /&gt;
        if ( closedFile == file ) {&lt;br /&gt;
          hit ++;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      cCount = closedFileArray.length;&lt;br /&gt;
      if ( ! hit &amp;amp;&amp;amp; cCount &amp;lt; num &amp;amp;&amp;amp; Fso.FileExists( closedFile ) ) {&lt;br /&gt;
        closedFileArray.push( closedFile );&lt;br /&gt;
      }&lt;br /&gt;
      if ( cCount == num ) {&lt;br /&gt;
        break outerLoop;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return num == 1 ? ( closedFileArray[0] || &amp;quot;&amp;quot; ) : closedFileArray;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * 関数 LatestClosedFileMenu( objMenu, num )&lt;br /&gt;
 * 「さいごに閉じたファイル」のメニューを返す&lt;br /&gt;
 * &lt;br /&gt;
 * 第１引数: ポップアップメニューオブジェクト&lt;br /&gt;
 * 第２引数: ポップアップメニュー ID の開始値&lt;br /&gt;
 */&lt;br /&gt;
function LatestClosedFileMenu( objMenu, num ) {&lt;br /&gt;
  if ( latestClosedFile.length ) {&lt;br /&gt;
    objMenu.Add( &amp;quot;&amp;quot;, 0, meMenuSeparator );&lt;br /&gt;
    objMenu.Add( &amp;quot;▼ さいごに閉じたファイル ▼&amp;quot;, 0, meMenuGrayed );&lt;br /&gt;
    for ( var i = 0; i &amp;lt; latestClosedFile.length; i ++ ) {&lt;br /&gt;
      objMenu.Add( &amp;quot;&amp;amp;&amp;quot; + ( i + 1 ) + &amp;quot;:  &amp;quot;&lt;br /&gt;
                 + latestClosedFile[i].replace( /(?:.+\\)*([^\\]+\\)([^\\]+)$/, &amp;quot;$1 $2&amp;quot; )&lt;br /&gt;
                 , i + num );&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * 組み込み関数 GetIniOption( array )&lt;br /&gt;
 * 引数で指定した INI オプション項目の値を返す&lt;br /&gt;
 */&lt;br /&gt;
function GetIniOption( array ) {&lt;br /&gt;
  // var Fso = new ActiveXObject( &amp;quot;Scripting.FileSystemObject&amp;quot; );&lt;br /&gt;
  var iniPath = editor.FullName.replace( /\.exe$/i , &amp;quot;.ini&amp;quot; );&lt;br /&gt;
  if ( ! Fso.FileExists( iniPath ) ) {&lt;br /&gt;
    // var WshShell = new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; );&lt;br /&gt;
    iniPath = WshShell.ExpandEnvironmentStrings( &amp;quot;%APPDATA%\\Mery\\Mery.ini&amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
  var Adodb = new ActiveXObject( &amp;quot;ADODB.Stream&amp;quot; );&lt;br /&gt;
  var adTypeText = 2,  adReadAll = -1;&lt;br /&gt;
  Adodb.Type = adTypeText,  Adodb.Charset = &amp;quot;UTF-8&amp;quot;;&lt;br /&gt;
  Adodb.Open();&lt;br /&gt;
  Adodb.LoadFromFile( iniPath );&lt;br /&gt;
  var iniText = Adodb.ReadText( adReadAll ).replace( /\r\n?/g, &amp;quot;\n&amp;quot; );&lt;br /&gt;
  Adodb.Close();&lt;br /&gt;
  for ( var i = 0, len = array.length, dist = []; i &amp;lt; len; i ++ ) {&lt;br /&gt;
    var value = iniText.match( new RegExp( &amp;quot;^&amp;quot; + array[i] + &amp;quot;=.*$&amp;quot; , &amp;quot;igm&amp;quot; ) )[0]&lt;br /&gt;
                       .replace( /^[^=]+=(.*)$/ , &amp;quot;$1&amp;quot; );&lt;br /&gt;
    if ( value.match( /^[\-0-9]+$/ ) ) {&lt;br /&gt;
      value = Number( value );&lt;br /&gt;
    }&lt;br /&gt;
    dist.push( value );&lt;br /&gt;
  }&lt;br /&gt;
  return dist;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>61.24.242.249</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%81%95%E3%81%84%E3%81%94%E3%81%AB%E9%96%89%E3%81%98%E3%81%9F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB_%E3%82%92%E5%8F%82%E7%85%A7%E3%81%99%E3%82%8B&amp;diff=4200</id>
		<title>さいごに閉じたファイル を参照する</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%81%95%E3%81%84%E3%81%94%E3%81%AB%E9%96%89%E3%81%98%E3%81%9F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB_%E3%82%92%E5%8F%82%E7%85%A7%E3%81%99%E3%82%8B&amp;diff=4200"/>
		<updated>2019-04-30T00:59:58Z</updated>

		<summary type="html">&lt;p&gt;61.24.242.249: 別ページに移設&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[ヘルプ:ファイル#最近のファイル|ファイルメニュー]] では「最近開いたファイルの履歴」が表示されますが、タブをたくさん並べているときには「現在開いているファイル」ばかりが表示されがちです。&lt;br /&gt;
&lt;br /&gt;
このマクロ（組み込み関数）では、Mery.ini ファイルに記録されている「最近開いたファイルの履歴」ではなく、&amp;lt;b style=&amp;quot;color:#0000c0;&amp;quot;&amp;gt; Mery.his &amp;lt;/b&amp;gt; ファイルに記録されている履歴情報を読み込み、「現在開いているファイル」を除いて、後ろから順にファイルパスを取得します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*ファイルの実在確認の処理を入れてあるので、削除・移動・リネームされたファイルは含めません。&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&amp;quot;color:#c00;&amp;quot;&amp;gt; Mery の「オプション」設定の「履歴」グループで「&#039;&#039;&#039;カーソル位置とブックマークを保存する&#039;&#039;&#039;」が無効の場合は、Mery.his ファイルを参照できないので &#039;&#039;&#039;&amp;quot;&amp;quot;&#039;&#039;&#039; を返します。&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*通常の操作でタブを閉じず、「[[すべて閉じる]]」マクロなどでタブを閉じた場合、Mery.his ファイルの並び順が「保存された順 または 閉じた順」にならないことがあるので、このマクロで取得できる履歴の順番の正確さについては保証できません。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 組み込み関数 LatestClosedFile() ==&lt;br /&gt;
[[includeライブラリ]] を導入（#include &amp;quot;include/IO.js&amp;quot;　#include &amp;quot;include/MryInfo.js&amp;quot;）したマクロで利用する前提なら前半部分「Mery.his をさがす」「Mery.his を読み込む」のコードを圧縮することもできますが、あえて include なしで使えるようにしてあります（処理手続きはおなじなので、動作速度に差はないはず）。&lt;br /&gt;
&lt;br /&gt;
 // #title = &amp;quot;さいごに閉じたファイル&amp;quot;&lt;br /&gt;
 // #tooltip = &amp;quot;「さいごに閉じたファイル」のフルパスを返す&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
  * 関数 LatestClosedFile( num )&lt;br /&gt;
  * Mery.his を読み込んで「さいごに閉じたファイル」のフルパスを返す&lt;br /&gt;
  * &lt;br /&gt;
  * 引数 num: 「さいごに閉じたファイル」の件数を指定&lt;br /&gt;
  *     1 を指定した場合または省略した場合は、１件のフルパスを文字列で返す&lt;br /&gt;
  *     2 以上の数値を指定した場合は、配列で返す&lt;br /&gt;
  *       &lt;br /&gt;
  * ※ Mery の「オプション」設定で「カーソル位置とブックマークを保存する」&lt;br /&gt;
  *   が無効（Mery.his がない）なら &amp;quot;&amp;quot; を返す&lt;br /&gt;
  * ※ Mery.his を下から順にチェックするだけなので&lt;br /&gt;
  *   マクロなどで閉じられたファイルは Mery.his の並び順に反映されていないことがあるかも&lt;br /&gt;
  */&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function LatestClosedFile( num ) {&lt;br /&gt;
  var start = new Date();	// 所要時間計測（開始）&lt;br /&gt;
  var closedFile = &amp;quot;&amp;quot;;&lt;br /&gt;
  var closedFileArray = [];&lt;br /&gt;
  var num = num ? num : 1;&lt;br /&gt;
&lt;br /&gt;
  // Mery.his をさがす (ポータブル / %APPDATA% )&lt;br /&gt;
  var Fso = new ActiveXObject( &amp;quot;Scripting.FileSystemObject&amp;quot; );&lt;br /&gt;
  var meryhis = editor.FullName.replace( /\.exe$/i , &amp;quot;.his&amp;quot; );&lt;br /&gt;
  if ( ! Fso.FileExists( meryhis ) ) {&lt;br /&gt;
    meryhis = new ActiveXObject( &amp;quot;WScript.Shell&amp;quot; )&lt;br /&gt;
              .ExpandEnvironmentStrings( &amp;quot;%APPDATA%&amp;quot; )&lt;br /&gt;
            + &amp;quot;\\Mery\\Mery.his&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  if ( ! Fso.FileExists( meryhis ) ) {&lt;br /&gt;
    return closedFile;	// &amp;quot;&amp;quot; を返す&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Mery.his を読みこむ&lt;br /&gt;
  var Adodb = new ActiveXObject( &amp;quot;ADODB.Stream&amp;quot; );&lt;br /&gt;
  var adTypeText = 2,  adReadAll = -1;&lt;br /&gt;
  Adodb.Type = adTypeText,  Adodb.Charset = &amp;quot;UTF-8&amp;quot;;&lt;br /&gt;
  Adodb.Open();&lt;br /&gt;
  Adodb.LoadFromFile( meryhis );&lt;br /&gt;
  var hisText = Adodb.ReadText( adReadAll ).replace( /\r\n?/g, &amp;quot;\n&amp;quot; );&lt;br /&gt;
  Adodb.Close();&lt;br /&gt;
&lt;br /&gt;
  // Mery.his からファイルパスを抽出する&lt;br /&gt;
  var hisArray = hisText.match( /^\[.+\]$/gm );&lt;br /&gt;
&lt;br /&gt;
  if ( ! hisArray ) {&lt;br /&gt;
    return closedFile;	// &amp;quot;&amp;quot; を返す&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 履歴のファイルパスをうしろから順にチェックして&lt;br /&gt;
  // 現在開いているファイルにないものを「さいごに閉じたファイル」とする&lt;br /&gt;
&lt;br /&gt;
  hisArray.reverse();&lt;br /&gt;
  var hCount = hisArray.length;&lt;br /&gt;
  var eCount = Editors.Count;&lt;br /&gt;
  var dCount, cCount, file, hit;&lt;br /&gt;
  outerLoop:&lt;br /&gt;
  for ( var i = 0; i &amp;lt; hCount || cCount &amp;lt; num; i ++ ) {&lt;br /&gt;
    closedFile = hisArray[i].replace( /^\[|\]$/g, &amp;quot;&amp;quot; );&lt;br /&gt;
    for ( var ee = 0; ee &amp;lt; eCount; ee ++ ) {&lt;br /&gt;
      dCount = Editors.Item( ee ).Documents.Count;&lt;br /&gt;
      for ( var dd = 0, hit = 0; dd &amp;lt; dCount; dd ++ ) {&lt;br /&gt;
        file = Editors.Item( ee ).Documents.Item( dd ).FullName;&lt;br /&gt;
        if ( closedFile == file ) {&lt;br /&gt;
          hit ++;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      cCount = closedFileArray.length;&lt;br /&gt;
      if ( ! hit &amp;amp;&amp;amp; cCount &amp;lt; num &amp;amp;&amp;amp; Fso.FileExists( closedFile ) ) {&lt;br /&gt;
        closedFileArray.push( closedFile );&lt;br /&gt;
      }&lt;br /&gt;
      if ( cCount == num ) {&lt;br /&gt;
        break outerLoop;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Status = &amp;quot;[ &amp;quot; + ( ( new Date() - start ) / 1000 ).toFixed( 3 ) + &amp;quot; 秒 ]&amp;quot;;&lt;br /&gt;
  return num == 1 ? ( closedFileArray[0] || &amp;quot;&amp;quot; ) : closedFileArray;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 使い方 ==&lt;br /&gt;
&lt;br /&gt;
例２ のポップアップメニューは「[[ファイルを読み直す・開きなおす]]」マクロ（2019/04/28）にも搭載してあります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;例１. 「さいごに閉じたファイル」を３件 取得する&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var _latestClosed3 = LatestClosedFile( 3 );&lt;br /&gt;
&lt;br /&gt;
OutputBar.Writeln( &amp;quot;さいごに閉じたファイル: \n&amp;quot; + _latestClosed3 );&lt;br /&gt;
&lt;br /&gt;
Alert( &amp;quot;さいごに閉じたファイル: \n\n&amp;quot; + _latestClosed3.join( &amp;quot;\n&amp;quot; ) );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ポップアップメニュー&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;例２. 「さいごに閉じたファイル」５件 をポップアップメニューに表示する&lt;br /&gt;
※ LatestClosedFile( 5 ) の引数 &#039;&#039;&#039;5&#039;&#039;&#039; を増やせば表示する件数を増やせる。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var _latestClosed = LatestClosedFile( 5 );&lt;br /&gt;
&lt;br /&gt;
var menu = CreatePopupMenu();&lt;br /&gt;
menu.Add( &amp;quot;▼ さいごに閉じたファイル ▼&amp;quot;, 0, meMenuGrayed );&lt;br /&gt;
&lt;br /&gt;
for ( var i = 0; i &amp;lt; _latestClosed.length; i ++ ) {&lt;br /&gt;
  // 「連番: 親フォルダ名\ ファイル名」に切りつめる&lt;br /&gt;
  menu.Add( &amp;quot;&amp;amp;&amp;quot; + ( i + 1 ) + &amp;quot;:  &amp;quot; + _latestClosed[i].replace( /(?:.+\\)*([^\\]+\\)([^\\]+)$/, &amp;quot;$1 $2&amp;quot; ), i + 1 )&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
    // ※ LatestClosedFile() または LatestClosedFile( 1 ) であれば&lt;br /&gt;
    // 戻り値は配列ではなくフルパスの文字列１件だけなので for() 文は無用&lt;br /&gt;
    // menu.Add( &amp;quot;&amp;amp;1:  &amp;quot; + LatestClosedFile().replace( /(?:.+\\)*([^\\]+\\)([^\\]+)$/, &amp;quot;$1 $2&amp;quot; ), 1 );&lt;br /&gt;
&lt;br /&gt;
var r = menu.Track( mePosMouse );&lt;br /&gt;
if ( r &amp;gt; 0 ) {&lt;br /&gt;
  editor.NewFile();&lt;br /&gt;
  editor.OpenFile( _latestClosed[ r - 1 ] );&lt;br /&gt;
&lt;br /&gt;
    // ※ LatestClosedFile() または LatestClosedFile( 1 ) であれば&lt;br /&gt;
    // editor.OpenFile( LatestClosedFile() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== メモ ==&lt;br /&gt;
*2019/04/29 (sukemaru) &lt;br /&gt;
:*Mery.his が空だった場合など処理の修正（length = 0 の &amp;quot;&amp;quot; か [] を返すように）。&lt;br /&gt;
:*ループ処理に break を追加。&lt;br /&gt;
:*ロースペックの win xp (32bit, cpu １コア, JScript 5.8) でテストしたかぎりでは、処理時間はそれほどかからないようだった（[[使い方]] 例２の[[#ポップアップメニュー|ポップアップメニュー]]で 0.02 ～ 0.04 秒）。&lt;br /&gt;
&lt;br /&gt;
*2019/04/30 (sukemaru)&lt;br /&gt;
:*「[[さいごに閉じたファイルを開く]]」のページに移設&lt;/div&gt;</summary>
		<author><name>61.24.242.249</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&amp;diff=3185</id>
		<title>マクロライブラリ</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&amp;diff=3185"/>
		<updated>2018-08-24T06:08:02Z</updated>

		<summary type="html">&lt;p&gt;61.24.242.249: /* テキスト操作補助 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mery で使用できるマクロを集めたライブラリです。&lt;br /&gt;
&lt;br /&gt;
スクリプトを拡張子「js」 (JavaScript、JScript の場合) にして「My Macros」等に保存し、マクロメニューの「選択」や「カスタマイズ」から読み込んで使用してください。&lt;br /&gt;
&lt;br /&gt;
マクロライブラリはどなたでも自由に編集できますので、みなさんが作成した便利なマクロをどんどん掲載してください。&lt;br /&gt;
&lt;br /&gt;
== テキスト操作補助 ==&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/haijinboys/mery-macro-emmet Emmet] (Kuro)&lt;br /&gt;
*[[Zen Coding]] (Kuro)&lt;br /&gt;
*[[CSV のカーソル位置の列を削除]] (Kuro)&lt;br /&gt;
*[[対応する括弧に移動]] (Kuro, kurama, masme) update 2017/05/27&lt;br /&gt;
*[[選択文字列を強調]] (Kuro)&lt;br /&gt;
*[[行頭に移動]] (Kuro, 他) update 2014/03/15&lt;br /&gt;
*[[引用の追加]] (Kuro)&lt;br /&gt;
*[[バイト数]] (Kuro)&lt;br /&gt;
*[[日付と時刻を挿入]] (n, masme) update 2016/02/28&lt;br /&gt;
*[[日付と時刻を挿入（カレンダー版）]] (papagoat) update 2016/05/24&lt;br /&gt;
*[[選択範囲を上下に移動]] (ks)&lt;br /&gt;
*[[TeraPadのCtrl↑と同じような動作をするマクロ]] (suke)&lt;br /&gt;
*[[TeraPadのCtrl↓と同じような動作をするマクロ]] (suke)&lt;br /&gt;
*[[Vz 風テキストスタック 2 ストロークキー]] (papagoat) update 2013/11/22&lt;br /&gt;
*[[非選択状態でも逆インデント]] (papagoat)&lt;br /&gt;
*[[ラクラク罫線]] (手石) Update 2012/12/22&lt;br /&gt;
*[[ファイル:XHTML.zip]] (アラフォー親父) HTMLタグを、ショートカット・キーに登録して入力するマクロ（文章挟み込み仕様）&lt;br /&gt;
*[[矩形ペースト]] (手石)&lt;br /&gt;
*[[自動箇条書き]] (手石) update 2013/03/15&lt;br /&gt;
*[[インデントを考慮した折り返し（改行挿入）]] (手石) update 2013/02/23&lt;br /&gt;
*[[青空文庫用整形補助]] (ks, 有志)&lt;br /&gt;
*[[部分編集]] (ks)&lt;br /&gt;
*[[文字カウント]] (masme) 2014/02/01, update 2018/08/04&lt;br /&gt;
*[[字下げ・字上げ]](インデント・逆インデント) (masme) 2014/02/09, update 2015/02/14&lt;br /&gt;
*[[数値を増減]](インクリメント・デクリメント) (masme) 2014/06/17, update 2016/02/28&lt;br /&gt;
*[[少し便利な Undo/Redo]] (ks)&lt;br /&gt;
*[[自動ルビ振り]] (急急如律令)&lt;br /&gt;
*[[貼付け実行後のカーソル位置を貼付け文字列の先頭にする]] (yuko)&lt;br /&gt;
*[[ドイツ語特殊文字]] (鯉)&lt;br /&gt;
*[[矩形選択範囲の各行先頭に文字挿入]] (yuko)&lt;br /&gt;
*[[文章で使用されている文字をユニーク抽出]] (Kuro)&lt;br /&gt;
*[[アウトライン用ノード追加]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードレベルを上げる]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードレベルを下げる]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードの完了/未完了を切り替える]] (mik) 2018/06/25&lt;br /&gt;
*[[ハルナアウトライン用の完了/未完了フラグをノード名に反映する]] (mik) 2018/06/25&lt;br /&gt;
*[[Markdown文書で改行時にリスト、引用ブロック開始記号を自動入力する]] (catfist) 2018/07/28&lt;br /&gt;
*[[行を複製 (複数行可)]] (sukemaru) 2018/08/24&lt;br /&gt;
*[[行の先頭に貼り付け]] (sukemaru) 2018/08/24&lt;br /&gt;
*[[カッコで囲う]] (sukemaru) 2018/08/24&lt;br /&gt;
&lt;br /&gt;
== ファイル操作補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[文字列中のパス起動]] (ks)&lt;br /&gt;
*[[自動バックアップ]] (ks)&lt;br /&gt;
*[[終了時状態保持・復元]] (ks)&lt;br /&gt;
*[[上書き保存(UAC対応)]] (ks)&lt;br /&gt;
*[[含んでいるフォルダを開く]] (ks)&lt;br /&gt;
*[[パスを取得]] (Kuro)&lt;br /&gt;
*[[フォルダ内のファイルをすべて開く]] (Kuro)&lt;br /&gt;
*[[ファイルを比較]] (Kuro)&lt;br /&gt;
*[[ファイル名を引数にしてアプリ起動]] (Kuro, miso)&lt;br /&gt;
*[[ブックマーク一覧ジャンプ]] (goat) update 2012/09/24&lt;br /&gt;
*[[拡張子の違うファイルを開く]] (n)&lt;br /&gt;
*[[フォルダを開く]] (n)&lt;br /&gt;
*[[コマンドプロンプトを開く]] (n)&lt;br /&gt;
*[[SDIウィンドウの記憶と復帰]] (papagoat) Update 2012/10/23 (説明文変更 2013/11/22)&lt;br /&gt;
*[[よく使うフォルダ]] (手石) Update 2014/02/22&lt;br /&gt;
*[[ファイル（選択範囲）の仮保存]] (手石)&lt;br /&gt;
*[[ポップアップメニューでファイル選択]] (手石)&lt;br /&gt;
*[[フォルダツリーをポップアップ表示]] (n)&lt;br /&gt;
*[[タグジャンプ]] (o)&lt;br /&gt;
*[[ウィンドウの位置とサイズを拡張子で指定]] (papagoat) Update 2014/04/17&lt;br /&gt;
&lt;br /&gt;
== 変換・ソート・整形 ==&lt;br /&gt;
&lt;br /&gt;
*[[可変長を固定長に変換]] (Kuro)&lt;br /&gt;
*[[SHA でハッシュ化]] (Kuro)&lt;br /&gt;
*[[標準変換]] (Kuro)&lt;br /&gt;
*[[昇順で並び替え]] (Kuro)&lt;br /&gt;
*[[降順で並び替え]] (Kuro)&lt;br /&gt;
*[[連続する重複行を削除]] (Kuro)&lt;br /&gt;
*[[ブックマーク系コマンド集]] (ks)&lt;br /&gt;
*[[テキスト変換]] (ks)&lt;br /&gt;
**[[テキスト整形]] (masme) 2013/09/15, update 2018/01/15&lt;br /&gt;
*[[旧漢字から新漢字に変換]] (furu)&lt;br /&gt;
*[[clustalw を用いてアライメントを実行]] (suke)&lt;br /&gt;
*[[連番の挿入]] (手石)&lt;br /&gt;
*[[TSV(CSV) ⇒ 固定長]] (手石) update 2013/04/16&lt;br /&gt;
*[[行並べ替え]] (masme) 2013/08/25, update 2018/04/15&lt;br /&gt;
*[[連番を挿入]] (masme) 2013/08/25&lt;br /&gt;
*[[GFMをHTMLに変換]] (noonworks) 2014/03/09&lt;br /&gt;
&lt;br /&gt;
== 検索・置換 ==&lt;br /&gt;
&lt;br /&gt;
*[[文書から検索]] (Kuro)&lt;br /&gt;
*[[単語を抽出]] (Kuro)&lt;br /&gt;
*[[このファイルから検索(マッチしない行)]] (Kuro)&lt;br /&gt;
*[[このファイルから検索(マッチする行)]] (Kuro)&lt;br /&gt;
*[[タグの外側（内側）だけ置換]] (手石)&lt;br /&gt;
*[[ポップアップメニューで検索先にジャンプ]] (手石)&lt;br /&gt;
*[[検索(SJIS以外)]] + 検索強調を解除 (masme) 2014/09/16, update 2017/06/26&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/blob/master/SearchWithMode.js 現在開いているファイルの言語名をつけてWeb検索] (高見知英)→[[https://vine.co/v/eeY59rFMail 実際の動作例]]&lt;br /&gt;
*[https://github.com/GunseiPaseri/Mery_macro 文字出現量ランキング] (群生系パセリ) 2015/12/28&lt;br /&gt;
*[[検索ヒット数表示]] (ks)&lt;br /&gt;
*[[任意の検索エンジンで検索]] (Noah)&lt;br /&gt;
*[[デフォルトの検索フラグを設定して検索ウィンドウ表示]] (yuko)&lt;br /&gt;
&lt;br /&gt;
== プログラミング補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[Eclipse風コメントアウト]] (ks)&lt;br /&gt;
*[[スマートインデント(C 構文)]] (ks)&lt;br /&gt;
*[[ctags.exeでtagsファイルを生成、タグジャンプを行うマクロ]] (kazy)&lt;br /&gt;
*[[タグファイルから補完]] (n)&lt;br /&gt;
*[[コードスニペットもどき]] (手石) Update 2012/12/20&lt;br /&gt;
*[[コメントマーク付け外し]] (手石, masme) update 2016/02/28&lt;br /&gt;
*[[TeX文書のコンパイル]] (手石)&lt;br /&gt;
*[[TeX数式のチェック]] (手石)&lt;br /&gt;
*[[簡易数式計算]] (ks)&lt;br /&gt;
*[[定義へ移動]] (ks)&lt;br /&gt;
*[[タブの桁数]] (手石)&lt;br /&gt;
*[[行末の空白を削除]] (n) 2014/12/19&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/tree/master/ 開いているスクリプトファイルを実行(掲載時点ではバッチファイル・Javascript・Lua・PHP・Perl・Python・Ruby・UWSCに対応。順次追加予定)] (高見知英)&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/tree/master/ 開いているスクリプトファイルを構文チェック(掲載時点ではPHP・Perlに対応。順次追加予定)] (高見知英)&lt;br /&gt;
*[[説明を出力]] (s) Create 2015/08/16&lt;br /&gt;
*[[拡張子からコンソール実行]] (YOS G-spec) 2016/12/11更新&lt;br /&gt;
&lt;br /&gt;
== おもしろ ==&lt;br /&gt;
&lt;br /&gt;
*[[テキストブラウザ]] (Kuro)&lt;br /&gt;
*[[Yahoo!天気情報]] (Kuro)&lt;br /&gt;
*[[メール送信]] (ks)&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
*[[最新版を確認]] (diaphragm)&lt;br /&gt;
*[[キーアサイン集]] (ks, masme, 有志) update 2015/12/29&lt;br /&gt;
*[[SAPI 使って単語読み上げ]] (miso)&lt;br /&gt;
*[[フォルダ選択ダイアログ]] (手石)&lt;br /&gt;
*[[HTA(HTML)の自作ダイアログを表示]] (noonworks)&lt;br /&gt;
*[[JavaScript を実行]] (n)&lt;br /&gt;
*[[ポップアップメニューを手軽に扱う]] (komorebikoboshi)&lt;br /&gt;
*[[マクロ・関数をメニューで呼び出す]] (aliquis) 2013/08/19&lt;br /&gt;
*[[階層化マクロメニュー]] (ks)&lt;br /&gt;
*[[シェルコマンドを実行]] (sasaki)&lt;br /&gt;
*[[ポップアップメニューでチェックボックス]] (手石)&lt;br /&gt;
*[[ポップアップメニューでラジオボタン]] (手石)&lt;br /&gt;
*[[includeライブラリ]] (ks)&lt;br /&gt;
*[[マクロ覚え書き（開発者向け）]](ks)&lt;/div&gt;</summary>
		<author><name>61.24.242.249</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E8%A1%8C%E3%81%AE%E5%85%88%E9%A0%AD%E3%81%AB%E8%B2%BC%E3%82%8A%E4%BB%98%E3%81%91&amp;diff=3184</id>
		<title>行の先頭に貼り付け</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E8%A1%8C%E3%81%AE%E5%85%88%E9%A0%AD%E3%81%AB%E8%B2%BC%E3%82%8A%E4%BB%98%E3%81%91&amp;diff=3184"/>
		<updated>2018-08-24T03:54:21Z</updated>

		<summary type="html">&lt;p&gt;61.24.242.249: 「引用の追加」マクロへの組みこみ用コード&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;「[[引用の追加]]」マクロを翻案して、クリップボードのデータ（文字列）を複数行の先頭に貼り付ける（挿入する）マクロにしました。&lt;br /&gt;
箇条書きのバレットや行コメントのプリフィックスのような短い文字列の挿入や、CSVで先頭に列を追加する用途に。&lt;br /&gt;
&lt;br /&gt;
選択範囲がないばあいはカーソル位置の論理行、選択範囲があるばあいは選択範囲をふくむ論理行全体（複数行可）の先頭に挿入します。&lt;br /&gt;
&lt;br /&gt;
行の途中からべつの行の途中までのような大ざっぱな範囲選択状態から「行の先頭に貼り付け」を実行することを想定しています。 ルーラーの行番号のドラッグでの複数行選択やトリプルクリックでの行選択で末尾改行が含まれているばあい、さいごの改行を無視します。 &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;行の先頭に貼り付け&amp;quot;&lt;br /&gt;
#tooltip = &amp;quot;各行の先頭に貼り付ける (挿入)&amp;quot;&lt;br /&gt;
/**&lt;br /&gt;
 * 選択範囲をふくむ各行の先頭にクリップボードのデータを貼り付ける (挿入)&lt;br /&gt;
 *&lt;br /&gt;
 * 文書終端の空行 ( ^[EOF] ) を選択範囲の末尾にぶら下げての &amp;quot;挿入&amp;quot; はできるが、可否について条件アリ&lt;br /&gt;
 *   選択範囲の確定時点でのキャレットの位置が &amp;quot;選択範囲の先頭にあるか&amp;quot; ／ &amp;quot;末尾 ( [EOF] マークの直前) にあるか&amp;quot; で判別する&lt;br /&gt;
 *   文字列または行番号をドラッグ（または&amp;quot;クリック ＆ Shift＋クリック&amp;quot;）して選択範囲を確定するさいに&lt;br /&gt;
 *   ・上（左）から下（右）にむけて選択範囲をつくった場合 → 終端の空行 ( ^[EOF] ) を含める&lt;br /&gt;
 *   ・下（右）から上（左）にむけて選択範囲をつくった場合 → 終端の空行 ( ^[EOF] ) を含めない&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;	// スクロール位置を保存&lt;br /&gt;
var s = document.selection;&lt;br /&gt;
&lt;br /&gt;
// 選択範囲の各座標を取得&lt;br /&gt;
var ay = s.GetTopPointY( mePosLogical );&lt;br /&gt;
var by = s.GetBottomPointY( mePosLogical );&lt;br /&gt;
var bx = s.GetBottomPointX( mePosLogical );	&lt;br /&gt;
&lt;br /&gt;
// 選択範囲の末尾が終端の空行 ( ^[EOF] ) にあるときの調整&lt;br /&gt;
var e = 0;&lt;br /&gt;
if ( ! document.Text.charAt( s.GetActivePos() ) )	// カーソル位置に文字がないばあいを ^[EOF] と判定する&lt;br /&gt;
  e = 1;&lt;br /&gt;
// 選択範囲の末尾が行頭 x = 1 にあるときの調整&lt;br /&gt;
if ( ay != by &amp;amp;&amp;amp; bx == 1 &amp;amp;&amp;amp; e == 0 )&lt;br /&gt;
  var by = by - 1;&lt;br /&gt;
  &lt;br /&gt;
// 選択範囲の拡張&lt;br /&gt;
s.SetActivePoint( mePosLogical, 1, by );&lt;br /&gt;
s.EndOfLine( false, mePosLogical );&lt;br /&gt;
s.SetAnchorPoint( mePosLogical, 1, ay );&lt;br /&gt;
&lt;br /&gt;
// ここから、「引用の追加」マクロのコードを流用&lt;br /&gt;
var cb = ClipboardData.GetData();	// クリップボードのテキストデータを取得&lt;br /&gt;
s.Text = insertCb( s.Text, cb );	// &amp;quot;各行の先頭に貼り付け”&lt;br /&gt;
&lt;br /&gt;
function insertCb( arg1, arg2 ) {&lt;br /&gt;
  var a = arg1.split( &amp;quot;\n&amp;quot; );&lt;br /&gt;
  for ( var i = 0; i &amp;lt; a.length; i++ )&lt;br /&gt;
    a[i] = arg2 + a[i];&lt;br /&gt;
  return a.join( &amp;quot;\n&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 選択範囲を復旧 （末尾改行を含める）&lt;br /&gt;
s.SetAnchorPos( s.GetActivePos() + 1 );&lt;br /&gt;
s.SetActivePoint( mePosLogical, 1, ay, true );&lt;br /&gt;
ScrollX = sx; ScrollY = sy;	// スクロール位置を復元&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 「[[引用の追加]]」マクロへの組みこみ用コード ==&lt;br /&gt;
「&#039;&#039;&#039;行の先頭に貼り付け&#039;&#039;&#039;」を「[[引用の追加]]」マクロのポップアップメニュー項目として組みこむことができます（「１つ削除」や「すべて削除」には非対応）。&lt;br /&gt;
&lt;br /&gt;
「[[引用の追加]]」マクロのコードに以下の各行を追加します。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;1. &#039;&#039;&amp;quot;m.Add( … );&amp;quot;&#039;&#039;  のグループに1行追加（位置は任意）&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
m.Add( &amp;quot;クリップボードから&amp;quot;, 20 );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;2. &#039;&#039;&amp;quot;␣␣␣␣default:&amp;quot;&#039;&#039;  のうえに4行挿入&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
    case 20:&lt;br /&gt;
      var cb = ClipboardData.GetData();&lt;br /&gt;
      document.selection.Text = insertQuote( s, cb );&lt;br /&gt;
      break;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*ポップアップメニュー項目と引用符の定義配列 &#039;&#039;&amp;quot;q = new Array( … )&amp;quot;&#039;&#039;  に20コ以上詰めこんでいるばあいは、追加コードのID &#039;&#039;&#039;20&#039;&#039;&#039; を適当な数字に変更してください。&lt;/div&gt;</summary>
		<author><name>61.24.242.249</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E8%A1%8C%E3%81%AE%E5%85%88%E9%A0%AD%E3%81%AB%E8%B2%BC%E3%82%8A%E4%BB%98%E3%81%91&amp;diff=3183</id>
		<title>行の先頭に貼り付け</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E8%A1%8C%E3%81%AE%E5%85%88%E9%A0%AD%E3%81%AB%E8%B2%BC%E3%82%8A%E4%BB%98%E3%81%91&amp;diff=3183"/>
		<updated>2018-08-24T03:12:55Z</updated>

		<summary type="html">&lt;p&gt;61.24.242.249: 新規作成&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;「[[引用の追加]]」マクロを翻案して、クリップボードのデータ（文字列）を複数行の先頭に貼り付ける（挿入する）マクロにしました。&lt;br /&gt;
箇条書きのバレットや行コメントのプリフィックスのような短い文字列の挿入や、CSVで先頭に列を追加する用途に。&lt;br /&gt;
&lt;br /&gt;
選択範囲がないばあいはカーソル位置の論理行、選択範囲があるばあいは選択範囲をふくむ論理行全体（複数行可）の先頭に挿入します。&lt;br /&gt;
&lt;br /&gt;
行の途中からべつの行の途中までのような大ざっぱな範囲選択状態から「行の先頭に貼り付け」を実行することを想定しています。 ルーラーの行番号のドラッグでの複数行選択やトリプルクリックでの行選択で末尾改行が含まれているばあい、さいごの改行を無視します。 &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;行の先頭に貼り付け&amp;quot;&lt;br /&gt;
#tooltip = &amp;quot;各行の先頭に貼り付ける (挿入)&amp;quot;&lt;br /&gt;
/**&lt;br /&gt;
 * 選択範囲をふくむ各行の先頭にクリップボードのデータを貼り付ける (挿入)&lt;br /&gt;
 *&lt;br /&gt;
 * 文書終端の空行 ( ^[EOF] ) を選択範囲の末尾にぶら下げての &amp;quot;挿入&amp;quot; はできるが、可否について条件アリ&lt;br /&gt;
 *   選択範囲の確定時点でのキャレットの位置が &amp;quot;選択範囲の先頭にあるか&amp;quot; ／ &amp;quot;末尾 ( [EOF] マークの直前) にあるか&amp;quot; で判別する&lt;br /&gt;
 *   文字列または行番号をドラッグ（または&amp;quot;クリック ＆ Shift＋クリック&amp;quot;）して選択範囲を確定するさいに&lt;br /&gt;
 *   ・上（左）から下（右）にむけて選択範囲をつくった場合 → 終端の空行 ( ^[EOF] ) を含める&lt;br /&gt;
 *   ・下（右）から上（左）にむけて選択範囲をつくった場合 → 終端の空行 ( ^[EOF] ) を含めない&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
var sx = ScrollX, sy = ScrollY;	// スクロール位置を保存&lt;br /&gt;
var s = document.selection;&lt;br /&gt;
&lt;br /&gt;
// 選択範囲の各座標を取得&lt;br /&gt;
var ay = s.GetTopPointY( mePosLogical );&lt;br /&gt;
var by = s.GetBottomPointY( mePosLogical );&lt;br /&gt;
var bx = s.GetBottomPointX( mePosLogical );	&lt;br /&gt;
&lt;br /&gt;
// 選択範囲の末尾が終端の空行 ( ^[EOF] ) にあるときの調整&lt;br /&gt;
var e = 0;&lt;br /&gt;
if ( ! document.Text.charAt( s.GetActivePos() ) )	// カーソル位置に文字がないばあいを ^[EOF] と判定する&lt;br /&gt;
  e = 1;&lt;br /&gt;
// 選択範囲の末尾が行頭 x = 1 にあるときの調整&lt;br /&gt;
if ( ay != by &amp;amp;&amp;amp; bx == 1 &amp;amp;&amp;amp; e == 0 )&lt;br /&gt;
  var by = by - 1;&lt;br /&gt;
  &lt;br /&gt;
// 選択範囲の拡張&lt;br /&gt;
s.SetActivePoint( mePosLogical, 1, by );&lt;br /&gt;
s.EndOfLine( false, mePosLogical );&lt;br /&gt;
s.SetAnchorPoint( mePosLogical, 1, ay );&lt;br /&gt;
&lt;br /&gt;
// ここから、「引用の追加」マクロのコードを流用&lt;br /&gt;
var cb = ClipboardData.GetData();	// クリップボードのテキストデータを取得&lt;br /&gt;
s.Text = insertCb( s.Text, cb );	// &amp;quot;各行の先頭に貼り付け”&lt;br /&gt;
&lt;br /&gt;
function insertCb( arg1, arg2 ) {&lt;br /&gt;
  var a = arg1.split( &amp;quot;\n&amp;quot; );&lt;br /&gt;
  for ( var i = 0; i &amp;lt; a.length; i++ )&lt;br /&gt;
    a[i] = arg2 + a[i];&lt;br /&gt;
  return a.join( &amp;quot;\n&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 選択範囲を復旧 （末尾改行を含める）&lt;br /&gt;
s.SetAnchorPos( s.GetActivePos() + 1 );&lt;br /&gt;
s.SetActivePoint( mePosLogical, 1, ay, true );&lt;br /&gt;
ScrollX = sx; ScrollY = sy;	// スクロール位置を復元&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>61.24.242.249</name></author>
	</entry>
</feed>