「コンパクトメニュー」の版間の差分

Sukemaru (トーク | 投稿記録)
第2版 (修正版)
Sukemaru (トーク | 投稿記録)
第3版
15行目: 15行目:
== 制限事項 ==
== 制限事項 ==


* <s>Mery 本体の動作要件として、ベータ版 2.6.10 以上でないとこのマクロは動作しません。</s><br> → Mery ver 2.6.7 以降であれば動作するはず
* 多分 Mery ver 2.6.7 以降であれば動作するはずです。
* ベータバージョン 2.8.6 までで追加されたものを含めて、すべてのコマンドを表示します(実行できないコマンドをクリックした場合は、ステータスバーにエラーメッセージを表示)。
* ベータバージョン 2.8.6 までで追加されたものを含めて、すべてのコマンドを表示します(内部エラーが発生した場合は、ステータスバーにエラーメッセージを表示)。


* すべてのメニュー項目の '''完全な再現は無理''' です( "エディタの状態" について、マクロからは取得できない部分が多々あるため)。
* すべてのメニュー項目の '''完全な再現は無理''' です( "エディタの状態" について、マクロからは取得できない部分が多々あるため)。
30行目: 30行目:
* Mery Wiki に収録されている「プラグイン名」は表示できますが、DLL ファイルをリネームしている場合はファイルのベース名で表示します。
* Mery Wiki に収録されている「プラグイン名」は表示できますが、DLL ファイルをリネームしている場合はファイルのベース名で表示します。
* スペルチェック用の「辞書名」は、実体ファイル(拡張子 AFF)のファイル名順で表示しますが、本来の表示順のルールが不明のため、辞書の切り替えが正しく機能しないかも。
* スペルチェック用の「辞書名」は、実体ファイル(拡張子 AFF)のファイル名順で表示しますが、本来の表示順のルールが不明のため、辞書の切り替えが正しく機能しないかも。
* 「クリップボード履歴」は Mery ver 2.8.1 以降であれば 16 件まで表示されるはずです。<br> 2.8.0 以前のバージョンでは最新の 1 件しか表示できません(外部のアプリでテキスト以外のデータを「コピー」しているときは 0 件になる)。
<br>
<br>
* ソースコード内にコメントアウトしてある行が数箇所あります(標準メニューでは表示されない、ポップアップメニューやキーボードショートカット用のコマンド) → 任意でアンコメント可
* ソースコード内にコメントアウトしてある行が数箇所あります(標準メニューでは表示されない、ポップアップメニューやキーボードショートカット用のコマンド) → 任意でアンコメント可
37行目: 38行目:
== ダウンロード ==
== ダウンロード ==


[[ファイル:コンパクトメニュー.zip]] (アイコン入り)
>> 「[[ファイル:コンパクトメニュー.zip]]」 (アイコン入り)
* 2019/10/26: 初版
* 2019/10/29: 第3版 (修正版)
* 2019/10/27: 第2版 (修正版)
: 「クリップボード履歴」の取得はベータ版 2.8.1 以降でないとエラーになるので回避処理を追加
 


== ソースコード ==
== ソースコード ==


<source lang="javascript" style="height:120em; overflow:auto;">
<source lang="javascript" style="height:80em; overflow:auto;">
#title = "コンパクトメニュー"
#title = "コンパクトメニュー"
#tooltip = "メニューバーの全アイテムを階層化表示"
#tooltip = "メニューバーの全アイテムを階層化表示"
52行目: 52行目:
  * ---------------------------------------------------------
  * ---------------------------------------------------------
  * コンパクトメニュー
  * コンパクトメニュー
  * sukemaru, 2019/10/25 - 2019/10/27
  * sukemaru, 2019/10/25 - 2019/10/29
  *  
  *  
  * メニューバーのアイテムをポップアップメニューで階層化して表示する
  * メニューバーのアイテムをポップアップメニューで階層化して表示する
66行目: 66行目:
  *  ExecuteCommandByID() での実行ができなくなる。  →  自動取得
  *  ExecuteCommandByID() での実行ができなくなる。  →  自動取得
  *  
  *  
  * ・現状ではベータ機能のバージョンチェックは無し。
  * ・現状では、基本的にベータ機能のバージョンチェックは無し。
  * ・「フォント」 の履歴アイテムの列挙は無し (ExecuteCommandByID の対象外)。
  * ・「フォント」 の履歴アイテムの列挙は無し (ExecuteCommandByID の対象外)。
  * ・ショートカットキーの表示は無し (マクロのショートカットキーを取得できない)。
  * ・ショートカットキーの表示は無し (マクロのショートカットキーを取得できない)。
  * ・マクロ名 ( #title ) の自動取得は面倒なので、実体ファイル名で表示。
  * ・マクロ名 ( #title ) の自動取得は面倒なので、実体ファイル名で表示。
* ・「クリップボード履歴」 は Mery ver 2.8.1 以降であれば 16 件まで表示されるはず。
*  ver 2.8.0 以前のバージョンでは最新の 1 件のみ
*  (外部のアプリでテキスト以外のデータを「コピー」しているときは 0 件)。
  *  
  *  
  * ※ ツール >> HTML Tidy >> 「ドキュメントの整形」 ができない。
  * ※ ツール >> HTML Tidy >> 「ドキュメントの整形」 ができない。
132行目: 135行目:
var cb = ClipboardData;
var cb = ClipboardData;
var cbData = cb.GetData();
var cbData = cb.GetData();
var cbData0 = cb.GetData( 0 );
var cbData0;
if ( cbData0 ) {
if ( VersionCheck( "2.8.1" ) ) { // ベータ版 2.8.1 以降
  var cbData0 = cb.GetData( 0 );
   var cbArray = [];
   var cbArray = [];
   for ( var i = 0, cbItem;  ; i ++ ) {
   for ( var i = 0, cbItem;  ; i ++ ) {
144行目: 148行目:
       if ( cbItem == cbNextItem ) { cb.ClearData( j -- ); }
       if ( cbItem == cbNextItem ) { cb.ClearData( j -- ); }
     }
     }
     cbArray.push( cbItem ); // 履歴のアイテムを配列に
     cbArray.push( cbItem ); // 履歴のアイテムを配列に追加
   }
   }
   var cbCount = cbArray.length;
   var cbCount = cbArray.length;
472行目: 476行目:
     macro = /([^\\]+\.\w+)1$/.exec( macroArray[i] )[1];
     macro = /([^\\]+\.\w+)1$/.exec( macroArray[i] )[1];
     // 拡張子とファイル名の先頭の連番とを削除
     // 拡張子とファイル名の先頭の連番とを削除
     macro = macro.replace( /^\d+\.|(?:[((].+[))])?\.js$/g, "" );
     // macro = macro.replace( /^\d+\.|(?:[((].+[))])?\.js$/g, "" );
     num = ( "  " + ( j ++ ) ).slice( - mcWidth ).replace( /\d$/, "&$&: " );
     num = ( "  " + ( j ++ ) ).slice( - mcWidth ).replace( /\d$/, "&$&: " );
     mMenu.Add( num + macro, id );
     mMenu.Add( num + macro, id );
496行目: 500行目:
   /* クリップボード履歴 を自動で列挙 */
   /* クリップボード履歴 を自動で列挙 */
   tMenu.AddPopup( "クリップボード履歴(&C)", cbMenu = CreatePopupMenu() );
   tMenu.AddPopup( "クリップボード履歴(&C)", cbMenu = CreatePopupMenu() );
   if ( cbCount ) {
   if ( cbData0 ) {
     for ( var i = 0; i < cbCount; i ++ ) {
     for ( var i = 0; i < cbCount; i ++ ) {
       id = i + 1;
       id = i + 1;
621行目: 625行目:
     editor.ExecuteCommandByID( r );
     editor.ExecuteCommandByID( r );
   }
   }
} catch ( err ) { Status = err.message; }
/**
* 関数 VersionCheck( versionStr )
* Mery 本体が引数で指定したバージョン以上かチェックする( i.e. "2.6.9" )
* 戻り値は、真偽値 true/false
*/
function VersionCheck( versionStr ) {
  var Pad2 = function( str ) {
    return str.replace( /[0-9]+/g , function( digit ) {
      return digit.length < 2 ? "0" + digit : digit
    } )
  };
  var editorVer = + ( Pad2( editor.Version ).replace( /\./g, "" ).slice( 0, 6 ) );
  var requirement = + ( Pad2( versionStr ).replace( /\./g, "" ).slice( 0, 6 ) );
  return ( editorVer >= requirement );
}
}
catch ( err ) {
  Status = err.message;
}


/**
/**
801行目: 818行目:
  *  
  *  
  * ・行頭空白を除去、空白文字を圧縮: →「›」(U+203A)
  * ・行頭空白を除去、空白文字を圧縮: →「›」(U+203A)
  * ・改行記号を可視化: →「↲」(U+21B2) または「⏎」(U+23CE)
  * ・改行記号を可視化: →「↲」(U+21B2) または「⏎」(U+23CE)
  * ・削られてしまう「&」を補完
  * ・削られてしまう「&」を補完
  * ・「¥」(U+005C) を「∖」に置換: →「∖」(U+2216)
  * ・「¥」(U+005C) を「∖」に置換: →「∖」(U+2216)
830行目: 847行目:
}
}
</source>
</source>
== メモ ==
* 2019/10/29 (sukemaru)
: ベータ版 2.8.1 以降でないとエラーになる「クリップボード履歴」の取得コードを使っているのを忘れていました…。
: また、第2版のコードには、(個人的な趣味で入れた)マクロの表示名から「js」の拡張子や先頭の連番などを消す処理が入ってしまっています。
: 第3版で修正しておきました。
スポンサーリンク