linuxBean14.04(22)Bracketsの拡張機能の右クリックメニューを追加する

ラベル:

前の関連記事:linuxBean14.04(21)Bloggerで使うJavaScriptの開発環境


Bracketsの拡張機能HTML Block Selectorの機能をエディタ部分での右クリックメニューから実行できるようにします。

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ファイルでのみでてくるコンテクストメニューの設定は断念しました。

次の関連記事:linuxBean14.04(23)Makefile用のSyntaxHighlighterのBrushファイルを作る

PR

0 件のコメント:

コメントを投稿