Hatena::Groupkeysnail

hogelogの日記

2010-02-26

keysnailグループの日記RSS

07:02

たぶんこれでいけるのでは。現在2人しか書いてないからあんまし必要無いかもしれませんが一応。

http://pipes.yahoo.com/pipes/pipe.run?_id=yvr0QEHa3RGA4YVKbbsjiw&_render=rss&group=keysnail

LoginManager for KeySnail (マジメ版)

06:40

http://github.com/hogelog/keysnail-plugins/blob/master/login-manager.ks.js

LoginManager for KeySnailを作りました。Firefoxにユーザ名とパスワードが登録してあってLoginManagerが対応しているサイトならコマンド叩くだけで(ウェブページ開かずに)ログインやログアウトができるようになります。

prompt.selectorを使うようにしたので自分でサービス名とかユーザ名を入力する必要は無し。ユーザ名とパスワードが登録されているサービスが全て候補に出てきます。

スクリーンショット貼ろうかと思ったけど秘密にしてるアカウント名ばっかでてきて貼りたくない!

そんなわけでちょっと誰か試しに動かしてくれる方いたらありがたい感じです。なんか使い方あってるのかちょっとわかりませんが、.keysnail.jsに以下のように設定することで候補として表示するものを絞れます。

key.setViewKey([',', 'l', 'u'], function (ev, arg) {
    ext.exec("login-manager-login", "tumblr", ev);
}, 'Log In Tumblr', true);

id:moozさんにちょっと要望をあげたいところとして。prompt.selectorもprompt.readerのaInitialInputのようなものを取るようにしてもいいのではないでしょうか。現在login-manager.ks.jsでは以下のようなことをして絞り込みをさせてたりしてますけども。

ext.add("login-manager-login", function (ev, arg) {
    prompt.selector({
        message: "Log In (LoginManager)",
        callback: function (index) {
            let [servicename, username] = loginList[index];
            let service = services[servicename];
            if (!service) {
                display.echoStatusBar(servicename + "service not found");
                return false;
            }
            service.login(username);
        },
        header: ["Service", "Username"],
        collection: loginList,
    });
    document.getElementById("keysnail-prompt-textbox").value = arg;
    }, "Log In (LoginManager)");

LoginManager for KeySnail

02:46

ちゃんと動くのかわからないし、まだ補完効いてないのであんま使えない適当版。今はとりあえず出てくるプロンプトに

tumblr <アカウント名>

などと入力するとログインできる。はず。入力するアカウント名はパスワードマネージャで表示される奴。

http://github.com/hogelog/keysnail-plugins/blob/master/login-manager.ks.js

あとでやる

01:39

プラグインの補完とか

今日のKeySnail関連活動

01:07

.keysnail.jsとか適当に書き捨てた感じのプラグインとかをgithubに投げるようにした。

http://github.com/hogelog/keysnail-plugins

hogeloghogelog2010/02/26 06:57pluginとかこういう形で公開するとforkとかしにくいのではなかろか。むしろgistとかのが良かったか。

moozmooz2010/02/26 11:13prompt.selector では基本的に initialIndex でまかなうようにしていたのですが、
あっても害はないだろうということで次バージョンから initialInput と cursorEnd 利用可能なようにしたいと思います。
それぞれ「初期入力文字列」、「初期カーソル位置 (省略された場合は initialInput.length)」を意味します。
現在開発環境の調子が良くないので、アップデートは少し後になるかと思いますが......。

プラグイン内部についてですが,

ext.add("login-manager-logout", function (arg) {

の部分が function (ev, arg) でなく function (arg) となっているため, arg にイベントが渡されてしまっています。

CodeRepos は使ったことないので vimp の場合はどうしていたか勝手が分からないのですが GitHub だと fork => pull request が主になってきますかね。 request せずにこっそり fork したままとか。

hogeloghogelog2010/02/26 19:50initialIndexは認識してたんですけど、やっぱ絞り込みたかったので。
とりあえずはプラグイン側からなんとかできてるんで、はい。アップデートされたらinitialInput使います。vimpプラグイン書いてても思いましたけど、chrome権限スクリプトは割と外部っからどうとでもできてしまうのが面白くもあり邪悪極まりないであるところですね。

logoutコマンドのミス指摘ありがとうございます修正しときました。

CodeReposはもう皆様自分の書いたのも他人が書いたものも好き勝手編集してコミットしてた感じです。ちょうど↑の指摘なんかでも横から黙って修正コミット送る的な。
githubのはなんか、例えばlogin-manager.ks.jsだけforkしていじりたくなったりしてもリポジトリ全体forkさせる必要あんのかなーみたいな疑問です。collaboratorとかそういうので対応できるんですかね。
せっかくなんでkeysnail-pluginリポジトリにmoozさんcollaboratorに追加してみました。もし「ああそこはそうじゃねえんだよこう書くんだよもう我慢できねえ俺に書かせろ!」みたいな所ありましたら自由にしてください。

taketstakets2011/03/01 15:50はじめまして。
login-managerをgithubからインストールすると、
M-xからコマンドを実行しようとすると、コマンドが候補に表示されないのですが、
なにか.keysnail.jsに特別な設定が必要なのでしょうか。

RahulRahul2012/12/05 23:00That's a sensible answer to a chalenlging question

lefzkdsnlefzkdsn2012/12/08 05:03JEJxsY <a href="http://pdyipvyxhytd.com/">pdyipvyxhytd</a>

hztjhmhztjhm2012/12/08 21:383842oM , [url=http://pdqyltnpwxkg.com/]pdqyltnpwxkg[/url], [link=http://rlupyvhcfkyx.com/]rlupyvhcfkyx[/link], http://iddlhhbosqqx.com/

wjenqftcbwjenqftcb2012/12/09 12:27fEC1qk <a href="http://lsowasolshfo.com/">lsowasolshfo</a>

2010-02-22

vimpのQuickMarkライクなアレ

20:26

とりあえずvimperatorのQuickMark的なそういうの。補完とか位置記憶とかそういうの後回し。とりあえず自分の.keysnail.jsの中で温めてからpluginにします。

let persistName = "quickmark";
let quickmarks = persist.restore(persistName) || {};
ext.add("quickmark-mark-page", function () {
    prompt.reader({
        message: "Mark Page (QuickMark)",
        callback: function (str) {
            quickmarks[str] = content.location.href;
            persist.preserve(quickmarks, persistName);
        },
    });
    }, "Mark Page (QuickMark)");
ext.add("quickmark-jump-page", function () {
    prompt.reader({
        message: "Jump Page (QuickMark)",
        onChange: function (arg) {
            let mark = arg.textbox.value;
            let uri = quickmarks[mark];
            if (uri) {
                plugins.hok.openURI(uri, plugins.hok.NEW_BACKGROUND_TAB);
                arg.finish();
            }
        },
    });
    }, "Jump Page (QuickMark)");
ext.add("quickmark-open-page", function () {
    prompt.reader({
        message: "Open Page (QuickMark)",
        onChange: function (arg) {
            let mark = arg.textbox.value;
            let uri = quickmarks[mark];
            if (uri) {
                plugins.hok.openURI(uri, plugins.hok.CURRENT_TAB);
                arg.finish();
            }
        },
    });
    }, "Open Page (QuickMark)");

アレが欲しいこれが欲しいとかちょっとずつ

06:17

2010-02-20 - きすねた(ん) - keysnailグループを受けて、ちょっとずつ自分に最適化。まず[ [と] ]相当の機能をそれっぽく。

plugins.options["follow-link.targets"] = '//a[@href],//input[not(@value="hidden")],//button';
plugins.options["follow-link.nextpattern"] = "^次へ|進む|^次.*|続|→|\\bnext|>>|≫";
plugins.options["follow-link.prevpattern"] = "\\bback|戻る|^前.*|←|\\bprev|<<|≪";

function followRel(doc, pattern) {
    let regex = RegExp(pattern);
    for each (target in plugins.options["follow-link.targets"].split(",")) {
        let result = doc.evaluate(target, doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
        for (let i = 0;i < result.snapshotLength; ++i) {
            let elem = result.snapshotItem(i);
            if (regex.test(elem.textContent) || regex.test(elem.value)) {
                plugins.hok.followLink(elem, plugins.hok.CURRENT_TAB)
                return elem;
            }
        }
    }
    return false;
}
 
ext.add("follow-next-link", function () { followRel(content.document, plugins.options["follow-link.nextpattern"]); }, "follow next link");
ext.add("follow-prev-link", function () { followRel(content.document, plugins.options["follow-link.prevpattern"]); }, "follow previous link");

CSS Selector慣れてないのでついXPathにしたけど、する必要は無かったか。結局正規表現で一個ずつ見てるわけだし。

ちなみにvimperatorの[ [, ] ]はinputを叩いてくれない。

KellsieKellsie2011/10/06 02:39Haha. I woke up down today. You've cehered me up!

vskomrsvskomrs2011/10/06 16:11oGAPBx <a href="http://jbgllvilzsen.com/">jbgllvilzsen</a>

piofalxeigpiofalxeig2011/10/08 00:08fwcxQ1 <a href="http://fdqegzneoyvi.com/">fdqegzneoyvi</a>

xaxwhlpexaxwhlpe2011/10/12 23:24QIh1RS , [url=http://ngzfsmkwadee.com/]ngzfsmkwadee[/url], [link=http://zbxnpmccsdza.com/]zbxnpmccsdza[/link], http://sgwojfuxlydo.com/

DealgunlugarDealgunlugar2013/02/10 23:14Knowledge wants to be free, just like these articels!

vfzscpqfjlqvfzscpqfjlq2013/02/11 23:125EFLpr <a href="http://qjuwlapvprtp.com/">qjuwlapvprtp</a>

rhibzxtyyerhibzxtyye2013/02/14 00:47jjd6IZ <a href="http://osgktmuidgsp.com/">osgktmuidgsp</a>

2010-02-20

バグ?

04:02

hokのヒント入力時の入力がちょっと漏れている。hokヒント入力時に画面移動してしまうことがある

ヒント入力中に画面移動してしまうことがある。プロンプト表示されるような時に画面が移動してしまうことがある? ちょっと再現条件がわからない。うーん。

keysnail設定画面からjavascript入力欄でエラー含むコード入れて反映させるとキー呼び出しが全部無効になる。

これも理由よくわからず。修正してから設定画面で反映させても駄目。一回.keysnail.jsを削除して、keysnailダイアログから新規に作成しなおすまで治らない。keysnailが無効になってたんですね。ステータスバーの右端のKeySnailアイコンをクリックすればOK。でもちょっとこれなかなか気づかないかと……

.keysnail.js

04:02

gistで貼っておきます。特にオリジナリティとかなさげ。

keysnailグループ

16:01

勝手に作っておいて忘れていました。しかも勝手に作っておいてid:moozさんを勝手に管理者に設定しました。vimperatorグループはvimperatortips的なものが各人の日記という形で緩やかに広がる場となっていたので、keysnailにもあると良いかなと。

とりあえず「アレが欲しいこれが欲しいもっともっと欲しい!」リスト。

16:49

vimperatorからkeysnailへの移行中です。まだ色々足りなくて不便を感じるシーンが多い。

  • vimperatorの[ [, ] ]が欲しい。ページ内から適当に「次へ」とか書いてあるリンク探して叩いてくれる機能。誤爆も多いけど特定のサイトでは楽。
  • vimperatorのC-a、C-xも。URL中に含まれる末尾の数字部分をインクリメントしたりデクリメントしたり。
  • vimperatorのquickmark。普段よく開くサイトは登録してあって「g o t」とか叩くだけでhttp://twitter.comが開かれたりしてたので、手をホームポジションに持っていって「A-d t w ↓ ↓ C-h C-h C-h C-h C-h」とかめんどくさい
  • なんかこうQuitキーのQuit力が弱い。たぶんhookとかかませば良いのだろうけど。Suspendからの復帰にもQuitを使いたい、prompt表示されてる時にcontentsクリックしてフォーカス持っていった時もQuitで閉じたいなど。
  • Flashに入力食われてるとき表示が無いからちょっと混乱するかも。

ここまではvimperator使ってた人なら割とありがちな欲しい機能じゃなかろか。以下はたぶんかなり個人的な。

  • vimperatorプラグインのmarker_reader.js機能が欲しい。ページダウンとかは淡々と長い文章を書いてあるページだとどこまでスクロールしたのかわからなくなるから、ページにマークを付けてスクロールする機能。自分で書いたプラグインだしよく使っていたけど、なんかこう非常にダサいなーと思うアレだったので書き直したい。
  • vimperatorプラグインloginManager.js相当の能力が欲しい。tumblrtwitterなど各種ログイン必要サイトでログアウトしてログインページ開いて入力してアカウント切り替え、とかめんどくさくて死ぬ。
  • skk.ks.js……

skk.ks.jsプログラミング環境としてとらえるとkeysnailとかもうそのぐらい書ける環境にあるよなきっと、ということを示すために書いてみたい。

いまのところkeysnailソースコード把握に努めつつ自作プラグインとか作って心地よい環境づくりに努めております。

moozmooz2010/02/21 17:05gist は <script src="http://gist.github.com/304619.js?file=gistfile1.js"></script> を <script src="http://gist.github.com/304619.js"></script> のように直すと埋め込まれます。これは本家はてなダイアリーの方でもそうだったと思います。

hogeloghogelog2010/02/22 03:58おお、ありがたいありがたい。gist貼り付け久しぶりで忘れていました。

IreneIrene2011/12/11 05:39Cool! That's a clever way of lkooing at it!

hkckpydhkckpyd2011/12/11 18:10r7TDVY <a href="http://ctrawwshbsld.com/">ctrawwshbsld</a>

apgmesxcxvapgmesxcxv2011/12/11 22:26w5pt2g , [url=http://jcvdtahyfbdx.com/]jcvdtahyfbdx[/url], [link=http://rtcpgedfyqno.com/]rtcpgedfyqno[/link], http://tntvrcjqbzve.com/

snqplpdasnqplpda2011/12/12 19:51wjvCZZ <a href="http://miaolyhtseer.com/">miaolyhtseer</a>

snqplpdasnqplpda2011/12/12 19:52wjvCZZ <a href="http://miaolyhtseer.com/">miaolyhtseer</a>

aggtlxaggtlx2011/12/14 00:41HjOzgg , [url=http://lfsmrgvcvwza.com/]lfsmrgvcvwza[/url], [link=http://lmenalihznfn.com/]lmenalihznfn[/link], http://ckjyywodxbxp.com/