Hatena::Groupvimperator

pekepekesamurai@vimperator RSSフィード

2009-03-14

個人的に大ヒットな設定

16:10 | はてなブックマーク - 個人的に大ヒットな設定 - pekepekesamurai@vimperator 個人的に大ヒットな設定 - pekepekesamurai@vimperator のブックマークコメント

かなり快適です。

特にセレクトボックスとかをC-p/C-nで選択できるところが。

imap <C-n> <Down>
imap <C-p> <Up>

これ設定してから思ったんだけど、 input-mode を emacs ライクにしてしまうのもありかと思った。

2009-02-21

はてぶにショートカットキーを追加

00:38 | はてなブックマーク - はてぶにショートカットキーを追加 - pekepekesamurai@vimperator はてぶにショートカットキーを追加 - pekepekesamurai@vimperator のブックマークコメント

してみた。

e でタグ+コメント編集。q で削除。

LDRizeCooperation+localkeymodeで実現。

(function(){
var hbControl = function(is_edit){
  var paragraph = liberator.plugins.LDRizeCooperation.LDRize.getParagraphes();
  var pos = paragraph.current.position + 1;
  var doc = content.window.document;
  var n = doc.evaluate('//descendant::h3[@class="entry"]['+pos+']', doc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
  if (!n) return;
  var bmid = n.singleNodeValue.id.replace(/[^\-]+-/,'');

  var e = content.document.createEvent("MouseEvents");
  e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  
  var cn = doc.evaluate('//span[@class="bookmark-appender-cancel"]', doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
  for (let i=0, l=cn.snapshotLength; i<l ; i++) cn.snapshotItem(i).dispatchEvent( e );
  
  var node = doc.getElementById("delete-"+bmid);
  if (!node) return;
  var target = is_edit ? node.nextElementSibling : node ;
  
  e.initMouseEvent("mouseover", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  target.dispatchEvent( e );
  e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  target.dispatchEvent( e );
};
liberator.globalVariables.localKeyMappings=[
  [ /b\.hatena\.ne\.jp/, [
    ['e', function() hbControl(true)],   // edit tag and comment
    ['q', function() hbControl(false)],  // delete bookmark
  ] ],
];
})();

本当はグリモンでMinibuffer.addShortcutKey + feedSomekeys_2.js とかで対応したかったんだけど、直でLDRizeの制御オブジェクトに触る方法がない(一応とれないかがんばった!けどとれねー)→Minibuffer経由で実現できそうだけどやるのが面倒→これでいいや的な感じ。

eval 第二引数があればなー、、、もしくはグリモンで liberator.eval 相当のものがあれば楽になるのに、、、という感じ。

liberator.eval 相当を自前で用意するのもアリっちゃアリなのかもだけど、導入が面倒になるのでスルーしました。


それにしても、このやり方は我ながらかなり無理矢理&適当感大

pekepekesamuraipekepekesamurai2009/02/22 01:37いつのまにかhatebがldrizeチックな機能を実装していたので、そっちを弄るほうが無難かも、、、と思った。
調べてみたら、結構楽にでけそう

2009-02-14

LDRで購読停止用のキーを追加するための設定

18:00 | はてなブックマーク - LDRで購読停止用のキーを追加するための設定 - pekepekesamurai@vimperator LDRで購読停止用のキーを追加するための設定 - pekepekesamurai@vimperator のブックマークコメント

<C-v><Del>でも十分だったんだけど、そろそろフィードの整理がしたかったので、ワンキーで購読停止したかったのでやってみました。

feedSomeKeys_2.js で fmap hoge q,<Del> とか、fmap hoge <Del> とかを指定できればよいのだけれど、なんか僕の環境だとできなかったぽいので、別の方法で回避。

autocmd LocationChange http://reader\\.livedoor\\.com/reader :fmap q

js <<EOM</ppp>
autocommands.add('DOMLoad' , 'http://reader\.livedoor\.com/reader/', function(arg){
	var w = gBrowser.mTabs[arg.tab-1].linkedBrowser.contentWindow.wrappedJSObject;
	w.addEventListener('load', function(){
		// add susubscribe keybind
		w.Keybind.add('q', w.Control.unsubscribe);
	}, false);
});
EOM


ちなみに、DOMLoad じゃなくて PageLoad にひっかけてもいけると思う。

addEventListener をしてるのは DOMLoad のタイミングで実行しちゃうと、JS側の初期化が多分終わってないぽく、エラーがでちゃうのを回避するためです。

まー、こんなことするならグリモンでやっちゃった方が早いんだろうけど、グリモンがごちゃごちゃしてきているのであえてVimp側(正確にはvimp+feedSomeKeys_2.js)でやってみました。


本当はあまり影響なさげな # とかで Keybind.add しようと思ったんだけどキー制御ロジックがa-zA-Z0-9と特定のキーしか対応してないぽい。(厳密によく読んでないので違うかもしれないけど)


上記コードを書いておもったんだけど、autocommands.add のコールバックに渡される引数に contentWindow.wrappedJSObject がないのはなんでなんだろ?

contentWindow.document よりも window もらえた方がありがたいと思うんだけど。もしかしたらあんのかなー?

  • 追記

すでにやってる人いた~。

><

以前作ったLDRで購読停止するコマンドをVimperator的にするとこんな感じかな? - vimpがあればなんでもできるっ! - vimperatorグループ


ほー、こういう風にしたのか、と参考になった。

2009-02-04

ネタない。

| 23:19 | はてなブックマーク - ネタない。 - pekepekesamurai@vimperator ネタない。 - pekepekesamurai@vimperator のブックマークコメント

自作プラギン exopen.js 専用だけど、はてなのグループ系だったらid:malaさん作のYahoo!Pipesを通してLivedoorReaderに追加する設定。

はてなグループじゃない場合は、フツーにLivedoorReadeのブックマークレットと同じ動き。

liberator.globalVariables.exopen_templates = [ {
    label: 'sldr',
    value: 'subscribe feed to livedoor reader',
    custom: function(){
      var url = buffer.URL;
      if (/https?:\/\/(\w+)\.g\.hatena\.ne\.jp/.test(url))
        url = 'http://pipes.yahoo.com/pipes/pipe.run?_id=TssmX7bb2xGYLar_l7okhQ&_render=rss&group_id=' + RegExp.$1;
      return 'http://reader.livedoor.com/subscribe/'+url;
    }
  }
];

実はこーゆーのを気軽にプラギンでやりたいがために exopen.js を作っただけなのよね。

工夫次第では他のプラギンでも実現できることだから、無駄プラギンなのかもしれんけど。笑


そろそろ久々にプラギン作りたいけど、アイデアがないです。

というか、現状のVimpに満足してしまっている自分ガイル…

2009-01-12

まとめ情報か、、、

22:46 | はてなブックマーク - まとめ情報か、、、 - pekepekesamurai@vimperator まとめ情報か、、、 - pekepekesamurai@vimperator のブックマークコメント

suVeneのアレ » 情報をまとめるのは誰の役目か


まー、作者がまとめるべき情報ではないよね。

ソースのコメント見れば、みんなだいたいわかるように書いてるしね。

ともあれ、初心者の人とかが見てわかるかといわれれば微妙っちゃ微妙かも。


・・・てなことを書いてる途中に、プラギンのまとめページぽいのをid:teramakoさんが用意してるぽいのをハケーン!!


pluginList - Vimperator - livedoor Wiki(ウィキ)


仕事はえー!!

さすがですね。

Coderepos だけじゃなくて、本家で公開されてるものまでまとめてるし。

とりあえずここでまとめればいいんじゃね?w