前の関連記事:linuxBean14.04(21)Bloggerで使うJavaScriptの開発環境
Bracketsのエディタ画面の右クリックメニューに項目を追加する方法
var CommandManager = brackets.getModule("command/CommandManager"), Menus = brackets.getModule("command/Menus"); CommandManager.register("項目名", コマンドID, 実行する関数); Menus.getContextMenu(Menus.ContextMenuIds.EDITOR_MENU).addMenuItem(コマンドID);右クリックメニュー、つまりコンテクストメニュー、に項目を追加するには、コマンドマネージャへのコマンドの登録、コンテクストメニューへのコマンドIDの登録、これらの設定が必要です。
まず拡張機能HTML Block Selectorのmain.jsを開きます。
~/.config/Brackets/extensions/user/html-block-selector/main.jsになります。
ここからまず設定に必要な項目を拾い出します。
//keyboard handling KeyBindingManager.addBinding(shortcutCommand, "Ctrl-Shift-T"); CommandManager.register("HTML block select", shortcutCommand, selectHTMLBlock);キーバインディングの設定をしているところにコマンドマネージャにコマンドを登録している部分がありました。
項目名はHTML block select、コマンドIDはshortcutCommand、実行する関数はselectHTMLBlockになっています。
var Menus = brackets.getModule("command/Menus"); Menus.getContextMenu(Menus.ContextMenuIds.EDITOR_MENU).addMenuItem(shortcutCommand);コンテクストメニューの追加に必要な設定項目を80行目に挿入しました。
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」が出るようにしたいと思いました。
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); } }これでうまくいくと思ったのですが、全く「HTML block select」がでてきません。
デバッガで調べてみるとeditorがnullになっていました。
拡張機能ファイルが読み込まれるのはBracketsの起動時なので、そのときはまだエディタがアクティブになっておらず、EditorManager.getActiveEditor()が取得できないのです。
ということはBracketsのエディタでファイルを開くときにこのコードを実行するようにすればうまくいきそうです。
、、、どこをいじってよいのかわからないのでhtmlファイルでのみでてくるコンテクストメニューの設定は断念しました。
0 件のコメント:
コメントを投稿