livedoor Reader と livedoor clip の連携機能について

コメント欄が無いようなので…。

確かにクリップとして残しておけるのは便利なんだけれど、「あとで読む」は読んだ後に削除する場合が多いので、「Shift + c」した画面から削除できるといいなー、と思ったり。

ソースを読んだだけですが、出来ますよ。Del キーを押してください。

いちおう以下にまとめておきます:

  • C: クリップ画面のトグル
  • >: 過去ページを表示
  • <: 新しいページを表示
  • j / down: 次記事をフォーカス
  • k / up: 前の記事をフォーカス
  • v: 現在記事を開く
  • o: 選択記事を開く
  • t: タグを追加
  • T: タグを削除
  • S: 公開・非公開設定をトグル
  • p / space: 選択 (ピンを立てる)
  • shift+space: 範囲選択 (最後に選択した記事と現在記事の範囲を選択)
  • shift+down / J: 現在記事を選択し、次の記事をフォーカス
  • shift+up / K: 前の記事を選択・フォーカス
  • delete: 選択記事 (無ければ現在記事) を削除

shift+down/up の説明が分かりにくいかも知れませんが、一件ずつ選択範囲を広げていくのに使うものかなと思います。

記事は、フィードの記事にピンを立てるのと同じ要領で複数選択することが出来ます。

"o" でそれらをオープンできるのはお馴染みですが、その他にも複数記事に対して適用できるコマンドがあって、例えば "t" はタグを一括して追加することが出来ます。

"T" だと指定タグを一括削除です。

タグは、はてブのように [] で囲んでも良いですし、空白を含まなければタグ名だけで OK です。

ちなみにこのタグ編集の機能には Set という、おそらく Python から取り入れられたデータ型が活用されています (凄いです)。


追記 [20061111]:

(記憶がはっきりしないんですが TB し忘れたみたいなので、再送信を兼ねて追記します)

クリップのホットキーをカスタマイズする方法を考えてみました:

var orig_activate = HotKey.prototype.activate;
HotKey.prototype.activate = function() {
  if (this == HotKey.keysets.clip_overlay) {
    var self = this;
    // 追加
    this.add("l", clip_overlay.next_page);
    this.add("h", clip_overlay.prev_page);
    // 削除
    foreach("><".split(""), function(v){self.remove(v)});
  }
  return (this.activate = orig_activate).apply(this, arguments);
};

連携機能全体が無名関数の中で定義されており、クリップ用の HotKey インスタンスにアクセスすることが出来ません。それでも何とかアクセスしようとすると、上のように prototype メソッドを書き換える手法に至ります。

例では vi 風に j/k/h/l でナビゲーションが出来るようにしています。