「コンパクトメニュー」の版間の差分
第2版 (修正版) |
第3版 |
||
| 15行目: | 15行目: | ||
== 制限事項 == | == 制限事項 == | ||
* | * 多分 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/ | * 2019/10/29: 第3版 (修正版) | ||
: 「クリップボード履歴」の取得はベータ版 2.8.1 以降でないとエラーになるので回避処理を追加 | |||
== ソースコード == | == ソースコード == | ||
<source lang="javascript" style="height: | <source lang="javascript" style="height:80em; overflow:auto;"> | ||
#title = "コンパクトメニュー" | #title = "コンパクトメニュー" | ||
#tooltip = "メニューバーの全アイテムを階層化表示" | #tooltip = "メニューバーの全アイテムを階層化表示" | ||
| 52行目: | 52行目: | ||
* --------------------------------------------------------- | * --------------------------------------------------------- | ||
* コンパクトメニュー | * コンパクトメニュー | ||
* sukemaru, 2019/10/25 - 2019/10/ | * 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 | var 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 ( | 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 ); | |||
} | } | ||
/** | /** | ||
| 801行目: | 818行目: | ||
* | * | ||
* ・行頭空白を除去、空白文字を圧縮: →「›」(U+203A) | * ・行頭空白を除去、空白文字を圧縮: →「›」(U+203A) | ||
* ・改行記号を可視化: | * ・改行記号を可視化: →「↲」(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版で修正しておきました。 | |||
スポンサーリンク