Tagged: Vimperator RSS

  • fifnel 19:45:55 on 2009/11/12 Thursday パーマリンク | hatena button hatena count | retweet buttonReTweet
    Tags: , Vimperator   

    Vimperator2.2の「URIError: malformed URI sequence」というエラーについて 

    vimp2.2にしてから、tを押したときに表題にあるようなエラーが出て、その時点で処理が中断されてしまうのかURLの補完が効かなかったり、ページが開けなかったりという問題が出ています。

    20091112_vimperror.png

    で、先ほどその再現方法が分かりました。

    EUC-JPを使ったPukiWikiの、日本語を含んだページを開いているときに100%発生します。

    UTF-8を使ったPukiWikiなら問題ありません。
    Googleも検索文字列がURLに含まれていますが、こちらもUTF-8なので問題ありません。
    もしEUC-JPを使った検索エンジンがあるのでしたら、おそらくこのエラーが再現すると思います。

    これはもちろんPukiWikiが悪い訳ではなく、「EUC-JPがデコードされたURLを含んでいるとき」という事だと思いますが、PukiWiki以外でそういった環境がすぐに用意できなかったのでそこの確認は取れていません。

    回避方法ですが、本問題の発生しないURLを開いているタブに切り替えればOKです。
    もしダメでも何度か切り替えれば多分大丈夫です。

    ただし、現在のURLをコピーする、みたいなそのタブを開いていないと使えないプラグイン類は、問題となっているURLのページに関しては現状使えない、ということになります。

     
    • anekos 4:26:31 on 2009/11/26 木曜日 パーマリンク | ログインして返信する

      この件に関する Fix を入れておいたので次のバージョンあるいはナイトリーからは問題なくなるはずです。
      ちなみに正確な発生条件は、デコードすると正しくない UTF-8 コードになる URL でした。
      ステータスラインに、デコードした形で URL を表示しようとして失敗しているのが原因です。

      このエントリのおかげで発生条件がすぐにわかって助かりました。
      ありがとうございます。

  • fifnel 16:14:31 on 2009/10/30 Friday パーマリンク | hatena button hatena count | retweet buttonReTweet
    Tags: , Vimperator   

    AutoPagerizeを消したいけど消せなかったのでうまく付き合っていく事にした 

    最近、AutoPagerizeがうざったいなって思うようになりました。

    なので、vimperator pluginのnextlink.jsに乗り換えようと思って小一時間ほど使ってみたのですが、問題があって断念しました。

    nextlink.jsで2ページ目を読み込むと、そちらのほうでLDRizeが使えないのですよね。
    グリモンの処理順番をLDRizeとAutopagerizeを入れ替えたときの症状と一緒です。

    もうこの際LDRizeも消してやろうと思って関連するvimp pluginsもろともバンバンrmしたのですが、tumblr環境が壊滅してしまったのですぐに元に戻しました。ぐぬぬ・・・。

    そして出た結論。
     
     
    そうだ、京都へAutoPagerizeは基本OFF、使いたいときにONにしよう
     
     

    Autopagerizeを起動時にOFFにする

    autopagerize.user.jsの頭の方にある以下の行をfalseにします

    var AUTO_START = false

     

    キーボードでAutopagerizeのON/OFFをトグルする

    ON/OFFする方法は以下のサイトを参考にさせていただきました。
    livedoorReaderの「新着のみ表示」ボタンとAutopagerizeのon/offをキーボードで切り替える - 午前0時の憂鬱

    これを.vimperatorrcに書き加えます。

    TEXT:
    1. " AutopagerizeのON/OFF
    2. javascript <<EOM
    3. mappings.addUserMap(
    4.     [modes.NORMAL],
    5.     ["<C-M>"],
    6.     "AutoPagerize On/Off",
    7.     function(){
    8.         var doc = window.getBrowser().contentDocument;
    9.         var elements = doc.evaluate('id("autopagerize_help")/div/a[contains(@class,"autopagerize_link")]',doc,null,7,null);
    10.         if(elements.snapshotLength){
    11.             var event = doc.createEvent('MouseEvents');
    12.             event.initEvent('click',true,true);
    13.             elements.snapshotItem(0).dispatchEvent(event);
    14.         }
    15.     }
    16. );
    17. EOM

    C-Mに割り当ててるのはあまり意味はありません。

     
  • fifnel 12:47:27 on 2009/10/30 Friday パーマリンク | hatena button hatena count | retweet buttonReTweet
    Tags: , Vimperator   

    Vimperator 2.2 Released (vimperator labs)

    vimp2.2がリリースされていたので早速入れてみました。
    オフィシャルからxpiファイルを落として、そのファイルをFirefoxにドロップすればアップデート完了です。
    addons.mozilla.orgの方はまだ2.1みたいですね。

    注意事項として、

    IMPORTANT: shifted key notation now matches Vim’s behaviour. E.g. and are equivalent, to map the uppercase character use . (this might change again, as this is REALLY inconsistent, and i don’t know if I like copying bugs)

    ってことで、CTRL+シフト+Aキーの同時押しをマップしたい場合は、<C-A>じゃなくて<C-S-a>もしくは<C-S-A>にしてねって事らしいです。
    <C-A>と<C-a>は同じ扱いになるんですね。

     
  • fifnel 11:19:55 on 2009/10/6 Tuesday パーマリンク | hatena button hatena count | retweet buttonReTweet
    Tags: , Vimperator   

    Google Readerの挙動をLivedoor Readerに近づける 

    Livedoor Readerの良いところは、フィードを開くと勝手に全部既読扱いにするので未読が貯まりにくいって所だと思っていて、それに関して私は結構気に入っています。

    ただ、このところGoogle Reader用のiPhoneクライアントがなかなか活気づいていて使ってみたくなったので、再びGoogle Readerに乗り換えてみました。

    単純に移行するのもなんなので、前述のLDRの良いところをGRにも採用しようってことで、vimperatorでこんな風に設定してみました。

    autocmd LocationChange www\.google\.(com|co\.jp)/reader :fmap -vkey m A v r o X O gh ga gs gt gu / ?
    autocmd LocationChange www\.google\.(com|co\.jp)/reader :fmap -vkey c,1 C,2 j,n k,p n,j p,k s,NO S,ANO a,PO J,N K,P q,t w,t p,s b

    キーが多いので2行にしていますが、ポイントは2行目の「s,NO S,ANO a,PO J,N K,P」です。

    LDRの挙動に合わせ、sとaでフィードの行き来をする(N、P)ようにしつつ、移動したらすぐにそれを開く(O)ようにしています。

    あと、Shift+sを押したときのみ開いていたフィードをすべて既読(A)にしてから次のフィードへ移動するようにしました。
    こちらが本来のLDRの挙動に近いと思います。

    ちなみにこれは移動する前のフィードを既読にしていますが、開いた瞬間に既読になるように「S,NOA」としてみてもうまく既読になりませんでした。
    OとAの間にディレイが必要っぽい気がするので、キーマップ設定だけだとどうにもならなさそうです。

    もちろんフィードを移動したときにフィードを開かないキーも残しています。
    数個先のフィードを開きたいってときに、移動先すべて開いていたら重いですからね。

    蛇足ですが、NPをJKにしてるのはvim派だからです。

    そんな感じで再びGR組になりましたのでよろしくお願いします。
    iPhoneのフィードリーダーはRSS Flash gです。
    Instapaper連携がちょべりぐです。

     
  • fifnel 23:44:06 on 2009/6/25 Thursday パーマリンク | hatena button hatena count | retweet buttonReTweet
    Tags: , , , Vimperator,   

    Tombloo+ZumoDriveを使ってReblogした画像をiPhoneでサクサク閲覧 

    大したことをしているわけではないので、怒られる前にやっていることを1行で説明しておきます。

    要するに、Tomblooのローカル保存先をZumoDriveになるようシンボリックリンクを張ってるだけです。

    というわけで、レシピです。

    材料

    ZumoDrive
    Firefox
    Tombloo
    Greasemonkey
    MinibufferAutopagerizeLDRizeの3点セット
    Dashboard + Tomblooグリモンスクリプト
    ・その他、VimperatorなどReblog生活を便利にしてくれるもの

    その1

    材料を全部PCにぶち込みます。
    マウス右クリックでがんばる人は、Greasemonkey以下は不要です。

    そういえば書き忘れましたが、以降MacOSX前提で話を進めます。
    他のOSをご利用の方はパスなどは適当に読み替えてください。

    その2

    Tomblooで画像をローカルに保存するようにします。
    200906252319.jpg
    LocalのPhotoが緑色のチェックマークになってれば、他はお好みでOKです。

    ローカルの保存先はちょっと分かりづらいですが以下になります。

    ~/Library/Application Support/Firefox/Profiles/ランダムな文字列/tombloo/photo/

    WindowsだとDocuments and Settings以下だったかな?

    その3

    ZumoDriveにTomblooの画像を保存させるフォルダを作ります。
    Pictureフォルダ以下に適当に作るのが良いと思います。

    私は

    /Volumes/ZumoDrive/Pictures/tombloo

    にしました。

    その4

    シンボリックリンクを張ります。

    cdでその2のディレクトリに飛んでからlnコマンドを叩きます。
    もしすでにTomlooのローカルディレクトリが作成されているようなら削除しておいてください。
    (その2のディレクトリのことです)

    cd ~/Library/Application Support/Firefox/Profiles/ランダムな文字列/tombloo/
    ln -s /Volumes/ZumoDrive/Pictures/tombloo photo

    Windowsでも方法はあると思うので、リンクの張り方は適当にググってください。

    これで完成。

    あとは普段と同じようにtumblrでキャッキャウフフしてください。
    Dashboard + Tomblooスクリプトのおかげで、tumblrのダッシュボード上でショートカットキーを使ってreblogしたやつもローカルに保存されていきます。

    そして、ローカルに保存された画像データは自動的にZumoDriveに送られ、iPhoneでZumoDriveアプリを立ち上げるとこんな感じでreblogした画像がズラズラっと見られます。

    20090625zumo.jpg
    モザイクかけると必要以上にエロく見えますね(殴

    ZumoDriveは無料だと1GBしかないので使い道を決めかねていたのですが、この使い方ならちょうど良さそうです。
    こうやって保存しておけば、ある程度貯まったら簡単にDVDに焼いたり出来ますし。

    ちなみにDropboxでもやろうと思えば出来ますが、iPhoneでサクサク見られるかは微妙ですね、専用アプリが無いので。

     
  • fifnel 17:14:59 on 2009/6/22 Monday パーマリンク | hatena button hatena count | retweet buttonReTweet
    Tags: , Vimperator   

    Firefox3.5RCにしたらvimp/ldrize_cooperation.jsでエラーが出ていたのでなんとかした 

    Firefox3.5 RCがリリースされているのでそろそろ移行準備をしようと思って入れてみました。

    そしたら、vimpのldrize_cooperation.jsがエラーを吐いて動きません。
    Googleの検索結果でjk叩くとこんなメッセージがでます。

    Processing keypress event: TypeError: this.LDRize.getSiteinfo is not a function

    20090622vimp.jpg

    で、結論から言うとFirefox 3.0.2の時に動かなくなったときと同じ方法で対処したらエラーは出なくなりました。

    Firefox に凹まされた件 - KBDAHOLIC - やぬすさんとこ

    上記エントリーを参考(というかそのままですけど)にした、現時点でCodeReposのtrunkに上がっているものに当てるパッチはこんな感じになります。

    TEXT:
    1. --- ldrize_cooperation.js.orig  2009-06-22 16:52:51.000000000 +0900
    2. +++ ldrize_cooperation.js   2009-06-22 16:48:03.000000000 +0900
    3. @@ -1,6 +1,6 @@
    4.  // Vimperator plugin: 'Cooperation LDRize Mappings'
    5.  // Version: 0.25
    6. -// Last Change: 12-Jun-2009. Jan 2008
    7. +// Last Change: 22-Jun-2009. Jan 2008
    8.  // License: Creative Commons
    9.  // Maintainer: Trapezoid <trapezoid.g@gmail.com> - http://unsigned.g.hatena.ne.jp/Trapezoid
    10.  //
    11. @@ -127,7 +127,7 @@
    12.          initialize: function(){
    13.              var self = this;
    14.              this.LDRize = {getSiteinfo: function() undefined};
    15. -            this.Minibuffer = null;
    16. +            //this.Minibuffer = null;
    17.              this.handlerInfo = handlerInfo;
    18.  
    19.              this.LDRizeCooperationPanel = this.setupStatusbarPanel();
    20. @@ -176,12 +176,14 @@
    21.                  this.addAfter(GreasemonkeyService,"evalInSandbox",function(code,codebase,sandbox){
    22.                      if(sandbox.window.LDRize != undefined && sandbox.window.Minibuffer != undefined){
    23.                          sandbox.window.addEventListener("focus",function(){
    24. -                            self.LDRize = liberator.eval("self",sandbox.LDRize.getSiteinfo);
    25. -                            self.Minibuffer = liberator.eval("command",sandbox.Minibuffer.addCommand);
    26. +                            //self.LDRize = liberator.eval("self",sandbox.LDRize.getSiteinfo);
    27. +                            self.LDRize = sandbox.LDRize;
    28. +                            //self.Minibuffer = liberator.eval("command",sandbox.Minibuffer.addCommand);
    29.                          },false);
    30.                          if(window.content.wrappedJSObject == sandbox.unsafeWindow){
    31. -                            self.LDRize = liberator.eval("self",sandbox.LDRize.getSiteinfo);
    32. -                            self.Minibuffer = liberator.eval("command",sandbox.Minibuffer.addCommand);
    33. +                            //self.LDRize = liberator.eval("self",sandbox.LDRize.getSiteinfo);
    34. +                            self.LDRize = sandbox.LDRize;
    35. +                            //self.Minibuffer = liberator.eval("command",sandbox.Minibuffer.addCommand);
    36.                          }
    37.                      }
    38.                  });
    39. @@ -248,6 +250,7 @@
    40.                      });
    41.                      liberator.modules.commandline.echo(showString,liberator.modules.commandline.HL_NORMAL,liberator.modules.commandline.FORCE_MULTILINE);
    42.                  },{});
    43. +/*
    44.              liberator.modules.commands.addUserCommand(["mb","m","minibuffer"],"Execute Minibuffer",
    45.                  function(arg){ self.Minibuffer.execute(arg.string.replace(/\\+/g,"")) },
    46.                  {
    47. @@ -264,6 +267,7 @@
    48.                          context.completions = completionList;
    49.                      }
    50.                  });
    51. +*/
    52.              liberator.modules.commands.addUserCommand(["pindownload"],"Download pinned links by any software",
    53.                  function(arg){ self.downloadLinksByProgram("download",self.getPinnedItems());},{});
    54.              liberator.modules.commands.addUserCommand(["pindo"],"Do external command, with pinned links",

    先人の知恵は素晴らしい!
    id:janus_wel++

    ちなみに全部試してみたわけじゃないですが、これ以外はだいたい動いてる感じなので、正式版を待たずにこのまま移行してしまおうかと思います。

     
    • pekepekesamurai 8:57:49 on 2009/6/23 火曜日 パーマリンク | ログインして返信する

      蛇足ですが、3.5b99以降、liberator.eval がクロージャ内のオブジェクトがみれなくなったことによるエラーです(正確にはサブスクリプトローダー経由のevalの挙動変更によるものかと)。
      このせいで、LDRize内部のメソッドが参照できなくなるため、inteligence bind等が動作しなくなります。
      僕は以下のような変更して使ってます。it (typeof ?の部分の追加のみ。
      多分、3.0だと eval がうまくうごくので inteligence bind を活かしつつな感じになる(と思う)。

      self.LDRize = liberator.eval(“self”,sandbox.LDRize.getSiteinfo);
      self.Minibuffer = liberator.eval(“command”,sandbox.Minibuffer.addCommand);
      if (typeof self.LDRize.getSiteinfo != ‘function’) self.LDRize = sandbox.LDRize;
      if (typeof self.Minibuffer.addCommand != ‘function’) self.Minibuffer = sandbox.Minibuffer.command;

      以上、蛇足でした。失礼しました。

      • fifnel 9:42:21 on 2009/6/23 火曜日 パーマリンク | ログインして返信する

        非常に参考になります。ありがとうございます。
        こちらの変更ならMinibufferをつぶさなくてすみますね。
        私の環境ではこちらを使わせていただきます。

  • fifnel 1:11:50 on 2009/6/22 Monday パーマリンク | hatena button hatena count | retweet buttonReTweet
    Tags: , , Vimperator   

    Firefox+Vimpで見ているサイトをサクっと夜フクロウからtwitterにポスト 

    夜フクロウ1.06よりブックマークレットを使ってSafari以外のブラウザでも見ているWebサイトをポストできるようになりました。

    Home ?(夜フクロウ)?

    しかし、私はvimperator使いでブックマークツールバーが無いので、qmarkに設定しました。

    一旦ブックマークツールバーを出したら夜フクロウのブックマークレットを登録します。
    そしたら、そのブックマークしたものにキーワードを付けます。

    こんな感じ。
    20090622yorufukurou.jpg
    ちゃんとキーワードを付けないと、期待した動作になりません。

    そしたら、.vimperatorrcにこんな一行を追加しておきます。

    qmark y yorufukurou

    最初のパラメータは割り当てるキー、次はブックマークに設定したキーワードです。

    そして、Webサイトを見ていてtwitterにそのサイトをポストしたいなーと思ったら、

    goy

    とタイプすれば、夜フクロウの投稿フォームにURLとタイトルが転送されます。

    グリモンとか使えばわざわざ夜フクロウを介さなくても直接ポストできると思いますが、まぁせっかくなので。

    この例に限らずブックマークレットをqmarkで呼び出すのは結構便利なのでオススメです。

     
  • fifnel 10:05:59 on 2009/4/25 Saturday パーマリンク | hatena button hatena count | retweet buttonReTweet
    Tags: , Vimperator   

    vimpのmigemo_hint.jsを入れて「set hintmatching=custom」した状態だと、f押したときにエラーが出る。
    うーん、いつからだろう、そんなに昔じゃない気がするけど。
    pXMigemoTextUtils.jsのどこかでエラーになってるようです。

     
  • fifnel 9:36:49 on 2009/3/15 Sunday パーマリンク | hatena button hatena count | retweet buttonReTweet
    Tags: , Vimperator   

    Firefox3.1betaでタブ追加ボタンを消す方法 

    Firefox3.1b3が出たので早速インストールしてみました。

    今のところ問題なく動いていますが、タブ追加ボタンがウザいのでググって方法を探して消してみました。

    before

    20090315firefox31addtab1.png

    after

    20090315firefox31addtab2.png

    Remove New Tab Button :: Firefox Add-ons

    これをインストールすると良いようですが、私は.vimperatorrcに以下を追加しました。

    TEXT:
    1. style -name simple_tabs_container chrome://* <<EOM
    2. .tabs-newtab-button {display: none !important;}
    3. .tabs-container> stack {display: none;}
    4. EOM

    colorschemeを使ってるならその呼び出しの後に書くのがベターです。
    一つ目がタブ追加ボタン削除、二つ目がタブ一覧ボタン削除です。

     
  • fifnel 10:08:49 on 2009/3/8 Sunday パーマリンク | hatena button hatena count | retweet buttonReTweet
    Tags: , Vimperator   

    removetabs.jsを作りました 

    vimepratorを入れてからというものツールバーのアイコンがどんどん減っていったのですが、最後の最後まで残ったのがremovetabsでした。
    ↓このアドオンです。
    removetabs :: Firefox Add-ons

    同等の機能がvimperatorに無さそうだったので、適当にvimperator pluginに移植しました。
    tabonlyは元々あるので、左だけ、右だけ、左右両方の削除がこれで可能になり、ついにツールバーから解放されました。やったね!
    20090308vimperator.png

    初pluginなので何か至らない点があるかもしませんので、そのときは適当に直してください(殴

    /lang/javascript/vimperator-plugins/trunk/removetabs.js ? CodeRepos::Share ? Trac

     
  • fifnel 7:52:54 on 2009/2/20 Friday パーマリンク | hatena button hatena count | retweet buttonReTweet
    Tags: Vimperator   

    Vimperatorのhintの文字を半透明にしてみる 

    Vimperatorのhintなんですが、カレンダーのようにリンクが詰まっていると下の画像のように非常に見づらいです。

    20090220hint01.png

    なので、試しに半透明にしてみました。
    まぁ多少マシかな?って程度で相変わらず見づらいですけど、しばらくこのままにしてみます。

    半透明度50%
    20090220hint02.png

    半透明度70%
    20090220hint03.png

    半透明にする方法ですが、

    TEXT:
    1. highlight Hint  opacity:0.70

    で良いみたいです。
    0.0が完全透明で、1.0が不透明ですね。

    私はcolors/simple.vimp
    /lang/javascript/vimperator-plugins/trunk/colors/simple.vimp ? CodeRepos::Share ? Trac
    を使っているので、

    TEXT:
    1. highlight Hint font-family: monospace; font-size: 14px; font-weight: normal; color: #000; background-color: #FFF; padding: 0px 2px; border: 3px outset #DDD; opacity:0.70

    って感じです。

    上のスクリーンショットだと50%の方が視認性は高いように思えますが、背景が白いサイトだと相当見づらくなるので、70%くらいが妥当かもしれません。
    まぁその辺はケースバイケースということで。

    サイトごと変更したければ、autocmd LocationChangeで大丈夫かな?

     
  • fifnel 13:21:15 on 2009/2/15 Sunday パーマリンク | hatena button hatena count | retweet buttonReTweet
    Tags: , Vimperator   

    最新版のfeedSomeKeys_2.jsでGoogleReaderのキーが効かなくなった件について 

    Changeset 30036 for lang/javascript/vimperator-plugins/trunk/feedSomeKeys_2.js ? CodeRepos::Share ? Trac

    -vkeyの挙動変更で、keypressではなくkeydownのイベントになったようです。

    GoogleReaderの設定には-vkeyをつけていたのですが、おそらくGoogleReader側はkeypressで取り扱っているので、ショートカットキーが効かなくなりました。

    とりあえず一つ前のバージョンに戻して事なきを得ましたが、どう対処すればいいのかなぁ‥‥

     
  • fifnel 23:09:38 on 2009/1/20 Tuesday パーマリンク | hatena button hatena count | retweet buttonReTweet
    Tags: , Vimperator   

    Vimperator 2.0 Alphaでツリー型タブがぶっ壊れたけど直りました 

    12月頃のnightlyからタブの表示が調子悪いなーと思って全然アップデートしてこなかったVimperatorですが、本腰を入れて(大げさか?)調べたら原因が分かったので書いておきます。

    これまでは起動時に開いていた一番上のタブがこんな感じで伸びてしまっていました。
    20090120vimperator

    解決方法ですが、TabMix Plusの以下のオプションをONにします。

    表示>タブ>タブ幅をページタイトルの長さに合わせて調節する

    20090120tabmix

    これで直りました。
    ずっとツリー型タブかVimperatorの不具合だと思ってました。疑ってしまってごめんなさい。

     
  • fifnel 14:28:57 on 2008/11/27 Thursday パーマリンク | hatena button hatena count | retweet buttonReTweet
    Tags: , , Vimperator   

    Twitterの速報性はさすがだと思った 

    今日たまたまiPhoneのiviewを立ち上げたら、ロード中のまま画像が読み込まれませんでした。

    ググっても2chを見ても誰も騒いでないのでさっぱり謎だったんですが、Twitterで検索したら数日前から見れないって人が多数いて安心しました。
    原因は分かりませんが、自分固有の問題ではないということで、いつか誰かがきっと何とかしてくれるでしょう(殴

    そんなわけで、Twitterの速報性に改めて関心してしまいました。

    ちなみにTwitterの検索はVimperatorのmulti_requester.jsを使いました。
    マジやばいこれ。超便利すぎて、つい先日直したばかりのlookupDictionary.jsから乗り換えてしまいました。

    suVeneのあれ: [vimperator]リクエスト結果をバッファ出力(muilti_requester.js)

     
  • fifnel 20:23:02 on 2008/11/26 Wednesday パーマリンク | hatena button hatena count | retweet buttonReTweet
    Tags: , , , Vimperator   

    Google Reader Star OpenerをVimperatorで使えるよう改造 

    Google Reader Star Opener for Greasemonkey

    Google Readerのスター付エントリーを5エントリーずつ一気に開きつつスターを外してくれるグリモンです。
    LDRのpinのような使い方が出来るので非常に良さげだったんですが、Vimperator環境で動きません。

    本来なら'o'を叩くとエントリーが開くんですが、feedSomeKey.jsで設定してもダメです。
    んで調べてみたところ、feedSomeKey.jsはkeypressを投げているのに対してGoogle Reader Star Openerはkeydownを見ていました。

    なので、Google Reader Star Openerの最後の行をこんな感じに書き換え。

    TEXT:
    1. //  document.addEventListener('keydown', onKeyDown, false);
    2.     document.addEventListener('keypress', onKeyDown, false);

    改造というほどたいした物じゃないですが、これで使えるようになりました。
    他にもGoogle Reader周りのグリモンはkeydownを使っている物が多かったので、対応させたい場合はkeydownをkeypressに書き換えるだけで大抵動くんじゃないかと思います。

    ちなみにGoogle Reader用のfeedSomeKey.jsの設定はこんな感じです。

    TEXT:
    1. autocmd LocationChange www\.google\.co\.jp/reader :fmaps -vkey j k n p m s v A r o S N P X O gh ga gs gt gu u / ? <Space> <S-Space>
    2. autocmd LocationChange www\.google\.co\.jp/reader :fmap! c 1
    3. autocmd LocationChange www\.google\.co\.jp/reader :fmap! C 2

    デフォルトだと'1'と'2'で全文表示かリスト表示かを切り替えられるんですが、feedSomeKey.jsを使っても数字はスルーされないようなので、LDRと同じくCに割り当てました。
    本当はトグルしてくれると良いんですけどね。

    さて、何故このようにGoogle Reader環境を整えているかというと、iPhoneのBylineというGoogle Reader用フィードリーダーがありまして、これがすごく使いやすそうなんですよ。

    Bylineで生まれ変わったRSSリーダー生活:[mi]みたいもん!

    ただ、閲覧はフォルダごと、なぜかフィードごとには対応していないようで、その点のみ躊躇させられるんですよね。

    さて、どうしたものか‥‥

     
  • fifnel 16:25:49 on 2008/11/14 Friday パーマリンク | hatena button hatena count | retweet buttonReTweet
    Tags: , Vimperator   

    vimperatorのlookupDictionary.jsがgoo辞書で文字化けしていたので修正 

    追記:パッチ1カ所ミスってました。パッチを当てた後の163行目は不要です。
    URLエンコードアリの場合の↓の処理です。

    url = dictionary.url.replace(/%s/g,encodeURIComponent(arg));

    下のパッチの方も修正しておきました。


    lookupdictionary.js のバグフィックス - hogehoge

    さっき気づいたんですが、lookupDictionary.jsの:gooが文字化けしまくっています。
    バグフィックスはされているとのことですが、相変わらず文字化けするのは私の環境がVimperator2.0preだからでしょうか。

    ひとまず自分で出来ることはしようと思い、色々調べてみました。

    その結果、goo辞書が返す文字コードが問答無用でEUC-jpになっていることが原因のようです。
    lookupDictionary.jsの方にエンコード処理が入っていたので、EUC-jpを明示的に指定するようにしてみました。

    それと文字化けではありませんが、日本語が含まれる検索をする場合(国語辞書など)のエンコードがUTF-8でないとダメなようです。
    なんでやねん!という感じですが、EUC-jpでエンコードして辞書を引くと該当無しになってしまうので、そういうものだと思うしかありません。
    lookupDictionary.jsの中では先のエンコードと同じものを使うようになっていたので、返ってくるHTMLの文字コードとURLの文字コードをそれぞれ指定できるようにしました。

    TEXT:
    1. --- lookupDictionary.js Sat Oct 25 04:17:41 2008
    2. +++ lookupDictionary2.js    Fri Nov 14 15:54:30 2008
    3. @@ -21,7 +21,9 @@
    4.      shortHelp: 'goo 辞書',
    5.      xpath: 'id("incontents")/*[@class="ch04" or @class="fs14" or contains(@class,"diclst")]',
    6.      multi: true,
    7. -    dictionary: 'en-US'
    8. +    dictionary: 'en-US',
    9. +    srcEncode: 'EUC-jp',
    10. +    urlEncode: 'UTF-8'
    11.  },{
    12.      names: ['answers'],
    13.      url: 'http://www.answers.com/%s',
    14. @@ -154,10 +156,11 @@
    15.              if (special && sel) arg = sel;
    16.              if (!arg) return;
    17.              var url;
    18. -            if (dictionary.encode) {
    19. +            if (dictionary.urlEncode) {
    20.                  let ttbu = Components.classes['@mozilla.org/intl/texttosuburi;1']
    21.                                       .getService( Components.interfaces.nsITextToSubURI);
    22. -                url = dictionary.url.replace(/%s/g, ttbu.ConvertAndEscape(dictionary.encode, arg));
    23. +                url = dictionary.url.replace(/%s/g, ttbu.ConvertAndEscape(dictionary.urlEncode, arg));
    24.              } else {
    25.                  url = dictionary.url.replace(/%s/g,encodeURIComponent(arg));
    26.              }
    27. @@ -171,7 +174,7 @@
    28.                  }
    29.                  var xs = new XMLSerializer();
    30.                  liberator.echo(new XMLList('<div style="white-space:normal;"><base href="' + util.escapeHTML(url) + '"/>' + xs.serializeToString( result ).replace(/<[^>]+>/g,function (all) all.toLowerCase() ) + '</div>'), true);
    31. -            }, dictionary.encode ? dictionary.encode : null);
    32. +            }, dictionary.srcEncode ? dictionary.srcEncode : null);
    33.          },
    34.          {
    35.              completer: function (arg) {

     
c
新規投稿作成
j
次の投稿 / 次のコメント
k
前の投稿 / 前のコメント
r
返信
e
編集
o
コメントを表示する / 隠す
t
トップへ移動
l
go to login
h
show/hide help
esc
キャンセル