2012-02-12
imenu 的な何か
tips | |
ヘッダ (h1 ~ h4) を一覧表示し,その位置までスクロールできるように.Emacs でいうところの imenu のようなもの.
ext.add("imenu-headers", function () { let anchorSelector = [ "h1", "h2", "h3", "h4" ].join(","); let elements = Array.slice(content.document.querySelectorAll(anchorSelector)); function elementToString(element) { let headerString = "", matched = null; if ((matched = element.localName.match(/h([0-9])/))) { let headerCount = parseInt(matched[1], 10); headerString = (new Array(headerCount)).join(" "); let headerMarks = { 1: '', /* none */ 2: "\u2023", /* right arrow */ 3: "\u2022", /* bullet */ 4: "\u25E6" /* white bullet */ }; if (headerMarks[headerCount]) headerString = headerString + headerMarks[headerCount] + " "; } return headerString + element.textContent; } function scrollToElement(element) { let anchor = element.getAttribute("id") || element.getAttribute("name"); if (anchor) content.location.hash = anchor; else element.scrollIntoView(); } prompt.selector({ message: "jump to: ", collection: elements.map(function (element) elementToString(element)), callback: function (selectedIndex) { if (selectedIndex < 0) return; scrollToElement(elements[selectedIndex]); } }); }, "imenu-headers", true);
私は Emacs で imenu を M-i に割り当てているので,同じキーへ割り当ててみた.なかなか便利.
key.setGlobalKey("M-i", function (ev) { ext.exec("imenu-headers"); }, 'jump to headers');
2011-11-29
プロンプト内でスペルチェック
tips | |
let (p = document.querySelector("#keysnail-prompt-textbox")) { p && p.setAttribute("spellcheck", "true"); };
2011-10-15
Slideshare 用のプラグインを Vimperator からフォーク
info | |
Slideshare 用のプラグインが非常に便利そうであったので Fork.コードはコチラより.このリンクを右クリックしてインストールも可能.
site-local-keymap.ks.js を用いてキーへ割り当てる使い方を想定している.設定例を以下に.
local["^http://www.slideshare.net/"] = [ ['n', function () ext.exec("slideshare-next")], ['p', function () ext.exec("slideshare-previous")], ['f', function () ext.exec("slideshare-toggle-fullscreen")] ];
2011-07-04
KeySnail 紹介記事の紹介
info | |
素晴らしい紹介記事を @kickbase さんが書いて下さっています.4 編構成で大ボリュームです.
ブログ書きました。導入/プラグイン/ブラウジング/テキスト入力と、4つの記事に分けてます。"FireFoxをEmacsに。KeySnailのすすめ1 導入編 « DS LAB." - URL
- FireFoxをEmacsに。KeySnailのすすめ1 導入編 - DS LAB.
- FireFoxをEmacsに。KeySnailのすすめ2 プラグイン編 - DS LAB.
- FireFoxをEmacsに。KeySnailのすすめ3 WEBブラウジング編 - DS LAB.
- FireFoxをEmacsに。KeySnailのすすめ4 テキスト入力編 - DS LAB.
キルリングの辺りはあまり触れられてこなかったような気もするので,大変うれしいですね.
2011-04-23
プロンプトへフォーカス / コンテンツへフォーカスを一つのキーバインドで
tips | |
Keysnail で focus-to-prompt と focus-to-content をトグルしたいけど、現在のフォーカスの取得方法が分からん
key.setGlobalKey(['C-c', 'p'], function (ev, arg) { var kpt = document.getElementById("keysnail-prompt-textbox"); if (ev.target === kpt) { kpt.blur(); gBrowser.focus(); content.focus(); } else { !document.getElementById("keysnail-prompt").hidden && kpt.focus(); } }, 'Toggle focus prompt');
プロンプトへフォーカスしている時に document.commandDispatcher.focusedElement や ev.originalTarget で得られるノードは XUL の textbox#keysnail-prompt-textbox でなく,その実装に用いられている HTML の input 要素になってしまう.そのため,わざわざ ev.target としている.
Node.compareDocumentPositionが素晴らしい - hogehoge @teramako を使って input が textbox に含まれているかを判断しても良かったのだが,面倒であるし,匿名要素に対してもうまく動くのか不明だったため止めた.

install.rdfではmacVersionは7.*となっていますので、機能的に何か対応できない問題があるのでしょうか?
[ツール] -> [KeySnail] -> [有効] のチェックが外れているということはないでしょうか.
環境によって変わるのかもしれません.エラーコンソール (Ctrl+Shift+j) に何か KeySnail 関連のエラーメッセージは出ていませんか?
ご回答を見て再度firefox6に上げてみたところ、今度は使えるようになっていました!
最初はステータスバーのアイコンが灰色になっていたのですが、クリックすると有効になりました。これを見落としていただけかもしれません。
お騒がせしました。