前の関連記事:linuxBean14.04(21)Bloggerで使うJavaScriptの開発環境
Bracketsのエディタ画面の右クリックメニューに項目を追加する方法
1 2 3 4 |
var CommandManager = brackets.getModule( "command/CommandManager" ), Menus = brackets.getModule( "command/Menus" ); CommandManager.register( "項目名" , コマンドID, 実行する関数); Menus.getContextMenu(Menus.ContextMenuIds.EDITOR_MENU).addMenuItem(コマンドID); |
まず拡張機能HTML Block Selectorのmain.jsを開きます。
~/.config/Brackets/extensions/user/html-block-selector/main.jsになります。
ここからまず設定に必要な項目を拾い出します。
77 78 79 |
//keyboard handling KeyBindingManager.addBinding(shortcutCommand, "Ctrl-Shift-T" ); CommandManager.register( "HTML block select" , shortcutCommand, selectHTMLBlock); |
項目名はHTML block select、コマンドIDはshortcutCommand、実行する関数はselectHTMLBlockになっています。
80 81 |
var Menus = brackets.getModule( "command/Menus" ); Menus.getContextMenu(Menus.ContextMenuIds.EDITOR_MENU).addMenuItem(shortcutCommand); |
main.jsを保存して、デバッグ→拡張機能付きでリロード。
エディタ部分で右クリックすると「HTML block select」がでてきました。
キーバインディングは自動で表示されるようです。
htmlファイルで実行してみるとちゃんと機能しました。
機能するファイルでのみコンテクストメニューの項目がでるようにするのは断念
~/.config/Brackets/extensions/user/html-block-selector/main.jsの53行目をみてみると「HTML block select」はhtml、php、xmlでしか動かないようです。
とういうことでその部分をもらってきてhtml、php、xmlのコンテクストメニューでのみ「HTML block select」が出るようにしたいと思いました。
80 81 82 83 84 85 86 87 88 |
var editor = EditorManager.getActiveEditor(), language; if (editor) { language = editor. document .getLanguage().getName().toLowerCase(); if ($. inArray (language, [ "html" , "php" , "xml" ]) > -1) { var Menus = brackets.getModule( "command/Menus" ); Menus.getContextMenu(Menus.ContextMenuIds.EDITOR_MENU).addMenuItem(shortcutCommand); } } |
デバッガで調べてみるとeditorがnullになっていました。
拡張機能ファイルが読み込まれるのはBracketsの起動時なので、そのときはまだエディタがアクティブになっておらず、EditorManager.getActiveEditor()が取得できないのです。
ということはBracketsのエディタでファイルを開くときにこのコードを実行するようにすればうまくいきそうです。
、、、どこをいじってよいのかわからないのでhtmlファイルでのみでてくるコンテクストメニューの設定は断念しました。
0 件のコメント:
コメントを投稿