firefoxの「編集」メニューをDonut風にする

 マウスで範囲を選択してALT+EWでウェブ検索、ALT+EEでurlとみなして開くという指癖がついているので、そういう風にメニューアイテムを追加。ベースはxuldev.org :: userChrome.js scriptsから拾ってきたPrivateToolMenus.uc.js。copyText()関数もcopy_url_lite.uc.js(たぶんOn the Moon出身)のものから流用。

// ==UserScript==
// @name         Edit Menus
// @namespace    http://www.xuldev.org/
// @description  Add to editmenu
// @include      main
// @author       Gomita
// @version      
// @homepage     http://www.xuldev.org/misc/ucjs.php
// ==/UserScript==

function search_google(){
    return 'http://www.google.co.jp/search?lr=lang_ja&aq=t&rls=org.mozilla:ja:official&client=firefox&q=' + document.commandDispatcher.focusedWindow.getSelection().toString();
}

function make_url(){
    text = document.commandDispatcher.focusedWindow.getSelection().toString();
    if(text.substr(0,4) != 'http'){
        text = 'http://' + text;
    }
    return text;
}

function copyText(text){
    text = text.replace(/%EOL%/g, "\n");
    Cc["@mozilla.org/widget/clipboardhelper;1"]
      .getService(Ci.nsIClipboardHelper).copyString(text);
}

[
    {
        "label"    : "開く",
        "accesskey": "E",
        "oncommand": "gBrowser.addTab(make_url());"
    },
    {
        "label"    : "Google検索",
        "accesskey": "W",
        "oncommand": "gBrowser.addTab(search_google());"
    },
    {
        "label"    : "URLコピー",
        "accesskey": "U",
        "oncommand": "copyText(content.location.href);"
    },
    {
        "label"    : "タイトルとURLコピー",
        "accesskey": "B",
        "oncommand": "copyText(content.document.title + '%EOL%' + content.location.href);"
    },
    {
        "label"    : "タイトルコピー",
        "accesskey": "T",
        "oncommand": "copyText(content.document.title);"
    }
]

.forEach(function(attrs) {
    var menuitem = document.createElement("menuitem");
    for (var key in attrs)
        menuitem.setAttribute(key, attrs[key]);
    document.getElementById("menu_EditPopup").insertBefore(menuitem, document.getElementById(""));
});