Hatena::Groupkeysnail

きすねた(ん)

2010-11-30

Google の検索結果から eFreedom を消す (失敗編)

| 17:39 | Google の検索結果から eFreedom を消す (失敗編) - きすねた(ん) を含むブックマーク はてなブックマーク - Google の検索結果から eFreedom を消す (失敗編) - きすねた(ん)

CSS でやりたかった.

style.register(<><![CDATA[
    @-moz-document
    url-prefix("http://www.google.com/search?"),
    url-prefix("http://www.google.co.jp/search?") {
        a.l[href^="http://ja.efreedom.com"] {
                display : none !important;
            }
        }
]]></>, style.XHTML);

セレクタが欲しいです……

GreaseMonkey

結局グリモンでやってしまった.

no title

2010-11-28

ツリー型タブ導入にあたってタブ移動コマンドを見直す

| 22:28 | ツリー型タブ導入にあたってタブ移動コマンドを見直す - きすねた(ん) を含むブックマーク はてなブックマーク - ツリー型タブ導入にあたってタブ移動コマンドを見直す - きすねた(ん)

ツリー型タブを導入してタブを縦置きにしてみたところ, これまで慣れ親しんできた h, l で左右のタブに移動というキーバインドがセマンティクス的に微妙な感じとなってしまった.

とりあえず, 以下のように設定を行ってしばらく様子を見てみることにする.

key.setViewKey([['l'], ['C-j']], function () {
    gBrowser.mTabContainer.advanceSelectedTab(1, true);
}, 'ひとつ右のタブへ');

key.setViewKey([['h'], ['C-k']], function () {
    gBrowser.mTabContainer.advanceSelectedTab(-1, true);
}, 'ひとつ左のタブへ');

key.setGlobalKey('C-M-j', function () {
    gBrowser.mTabContainer.advanceSelectedTab(1, true);
}, 'ひとつ右のタブへ');

key.setGlobalKey('C-M-k', function () {
    gBrowser.mTabContainer.advanceSelectedTab(-1, true);
}, 'ひとつ左のタブへ');

奇跡的に C-j と C-k が view-mode で空いていたのです.

Yet Another Twitter Client KeySnail 2.2.0

| 22:05 | Yet Another Twitter Client KeySnail 2.2.0 - きすねた(ん) を含むブックマーク はてなブックマーク - Yet Another Twitter Client KeySnail 2.2.0 - きすねた(ん)

なかなか致命的なバグを修正.

変更点

  • バグ修正
    • ネットワークが一時的に切れる, Twitter の調子が一時的におかしい, などでステータスの取得に失敗した場合, 更新がそれきり停止してしまう問題を修正

2010-11-25

Google Instant Preview を消す

| 22:53 | Google Instant Preview を消す - きすねた(ん) を含むブックマーク はてなブックマーク - Google Instant Preview を消す - きすねた(ん)

以下を PRESERVE エリアへ.

style.register(<><![CDATA[
    @-moz-document
    url-prefix("http://www.google.com/search?"),
    url-prefix("http://www.google.co.jp/search?") {
        #vspb, .vspib { display : none !important; }
    }
]]></>, style.XHTML);

選択範囲に含まれるリンクのアドレスをコピー

| 17:28 | 選択範囲に含まれるリンクのアドレスをコピー - きすねた(ん) を含むブックマーク はてなブックマーク - 選択範囲に含まれるリンクのアドレスをコピー - きすねた(ん)

必要に迫られて書いた.

ext.add("copy-selected-links", function () {
    function getRanges(selection) {
        let ranges = [];

        for (let i = 0, rc = selection.rangeCount; i < rc; ++i)
            ranges.push(selection.getRangeAt(i));

        return ranges;
    }

    function getLinks(range) {
        let container = range.commonAncestorContainer;

        return Array.slice(container.querySelectorAll("a[href]"));
    }

    function unique(array) {
        let hash = {__proto__:null};
        
        for (let [, v] in Iterator(array))
            hash[v] = true;

        return [v for ([v] in Iterator(hash))];
    }

    let selection = content.getSelection();
    let links = getRanges(selection)
        .map(getLinks)
        .reduce(function (l, c) l.concat(c))
        .map(function (a) a.href);

    command.setClipboardText(unique(links).join("\n"));
});

a.href とすると絶対パスが返ってきて, a.getAttribute("href") とすると相対パスが返ってくるような雰囲気だった.