anything.elのインターフェイスを使ってRのパッケージを管理するanything-c-source-R-pkg

Rは膨大なパッケージを持っていて、その数は今日現在で2238にのぼります。Rができてまだ15年そこそこだということ,統計解析に特化した言語だということを考えれば、いかにこの数がすごい数かということがわかると思います。
Rがここまで爆発的に普及した理由として非常に優れたパッケージ管理システムとドキュメントシステムがあります。
コマンドひとつでパッケージのインストールからアンインストール、アップデートからロードまで自在にできます。
それらパッケージで提供される関数には詳しいドキュメントがついていて、さらにはサンプルデータから実際に実行可能な実行例まで至れりつくせりのドキュメントがこれまた簡単なコマンドで閲覧や実行ができてしまいます。
ただ、ここまで増えてくると、困ったことも。パッケージを探すのがめんどくさいのです。ま、探せばいいんですけどね。探せば。
ただ2000もパッケージがあると,後発のパッケージはどうしても名前の文字数が多くなってきます。多くなってくるとくだらないtypoも増えてさらにイライラします。
といっても名前が重複することは当然できないのでこの傾向は悲しいかな、これからもっと続くわけです。
あーいやだ。こんなめんどくさいことはどうかしないといけません。

曖昧な記憶でどうにかしたい

要は曖昧な人間の記憶でもどうかしてくれればいいわけです。こんなときに便利なのがauto-complete-acr.el。とりあえず最初の何文字かを思いだせばぽんぽん補完してくれます。しかし、インストールされてないパッケージはauto-complete-acr.elでもお手あげです。auto-complete-acr.elは内部でbaseとロードされているパッケージなどから補完候補を生成するようになっているので、インストールされていないパッケージの関数を補完することができないのです。
というわけで、新しく書いてみました。今回はEmacserならば知らない人はいないであろうanything.elの力を借ります。

準備

まず、事前の準備。何をいまさらですが、anything.elが必要です。
EmacsWiki: anything.el
EmacsWiki: anything-config.el

それとESSが必要になります。
Emacs Speaks Statistics

次に今回書いたelispを.emacsにコピペしときます。スクリプトはgistにも置いてます。
gist: 327649

(defun anything-ess-marked-install (candidate)
  (dolist (i (anything-marked-candidates))
 (ess-execute (concat "install.packages(\"" i "\")\n") t)))

(defun anything-ess-marked-remove (candidate)
  (dolist (i (anything-marked-candidates))
    (ess-execute (concat "remove.packages(\"" i "\")\n") t)))

(setq anything-c-source-R-localpkg
      '((name . "R-local-packages")
        (init . (lambda ()
                  ;; this grabs the process name associated with the buffer
                  (setq anything-c-ess-local-process-name ess-local-process-name)
                  ;; this grabs the buffer for later use
                  (setq anything-c-ess-buffer (current-buffer))))
        (candidates . (lambda ()
                        (let (buf)
                          (condition-case nil
                              (with-temp-buffer
                                (progn
                                  (setq buf (current-buffer))
                                  (with-current-buffer anything-c-ess-buffer
                                    (ess-command "writeLines(paste('', sort(.packages(all.available=TRUE)), sep=''))\n" buf))

                                  (split-string (buffer-string) "\n" t)))
                            (error nil)))))

        (action
         ("load packages" . (lambda(obj-name)
                     (ess-execute (concat "library(" obj-name ")\n") t )))
         ("remove packages" . (lambda(obj-name)
                       (ess-execute (concat "remove.packages(\"" obj-name "\")\n") t)))
         ("remove marked packages" . anything-ess-marked-remove))
        (volatile)))

(setq anything-c-source-R-repospkg
      '((name . "R-repos-packages")
        (init . (lambda ()
                  ;; this grabs the process name associated with the buffer
                  (setq anything-c-ess-local-process-name ess-local-process-name)
                  ;; this grabs the buffer for later use
                  (setq anything-c-ess-buffer (current-buffer))))
        (candidates . (lambda ()
                        (let (buf)
                          (condition-case nil
                              (with-temp-buffer
                                (progn
                                  (setq buf (current-buffer))
                                  (with-current-buffer anything-c-ess-buffer
                                    (ess-command "writeLines(paste('', rownames(available.packages(contriburl=contrib.url(\"http://cran.md.tsukuba.ac.jp/\"))), sep=''))\n" buf))
                                  (split-string (buffer-string) "\n" t)))
                            (error nil)))))

.emacsに設定を書いておきます。僕は次のように書いています。

(require 'ess-site)

(require 'anything-config)
(define-key global-map (kbd "C-;") 'anything)

(setq anything-sources
      '(anything-c-source-buffers+
        anything-c-source-imenu
        anything-c-source-emacs-commands
        anything-c-source-file-name-history
        anything-c-source-locate
        anything-c-source-man-pages
        anything-c-source-occur
        anything-c-source-recentf
        anything-c-source-R-local
        anything-c-source-R-help
        anything-c-source-kill-ring
        anything-c-source-R-localpkg
        anything-c-source-R-repospkg
        ))

(setq anything-idle-delay 0.3)
(setq anything-input-idle-delay 0.2)

(define-key anything-map (kbd "C-p") 'anything-previous-line)
(define-key anything-map (kbd "C-n") 'anything-next-line)
(define-key anything-map (kbd "C-v") 'anything-next-source)
(define-key anything-map (kbd "M-v") 'anything-previous-source)

使い方

M-x Rとしたら、ふつーにanythingバッファを開くだけです。
するとR-local-packagesとR-repos-packagesのふたつがでてくるはずです。 名前からだいたい推測がつくかもしれませんが、前者がすでにインストールしているパッケージのリスト、後者がインストールしていないパッケージのリストです。
R-local-packagesでは、デフォルトの動作はパッケージの読みこみになっています。
他にもアクションが設定されていて,アンインストールもできるようになってます。C-spaceで複数のパッケージを選択して一気に削除することもできます。
R-repos-packagesでは、デフォルトの動作はパッケージのインストールです。
こちらも複数のパッケージを選択することで複数のパッケージをインストールすることができます。

まとめっぽい何か

いかがだったでしょうか。そんなに長くないスクリプトですが、 効果は抜群だと思います。こういう便利な機能がさくっと書けるのもEmacsの良いところですよね。
ただ、ちょっと問題があって、どうやらproxy経由だとうまくいかないみたいです。いい解決方法あったら教えてください。
それと、上のスクリプトでは、筑波大のサーバからインストールするようにしてます。
サーバの設定を削ればサーバを選択するダイアログが開くようになるのでサーバは自分で選びたいという方はそっちの方がいいかもしれません。

今週の気になるアレMarch 3rd

googlereader (feed #6)
delicious (feed #4)
twitter (feed #2)
日記書いた-> 今週の気になるアレFebruary 24th http://bit.ly/9gzOLa [myuhe]
twitter (feed #2)
http://twitpic.com/151nc5 – 新しく買った職場の備品が到着。なかなかおもしろい。 [myuhe]
twitter (feed #2)
RT @tomkosaka: 見ているページのrssを取得してpromptするスクリプトを書いた。.keysnail.jsにペーストでお願いします。"gist: 313196 – GitHub" – http://j.mp/bwtv6x [myuhe]
googlereader (feed #6)
Shared R: deSolve.
twitter (feed #2)
RT @h_okumura: えっこれはすごい! RT @ak1984: [B!] TeXの行分割アルゴリズムをJavaScript実装 | エンタープライズ | マイコミジャーナル http://journal.mycom.co.jp/news/2010/02/23/0 … [myuhe]
twitter (feed #2)
http://twitpic.com/15236d – 今日の晩御飯は昨日もらった餃子 [myuhe]
twitter (feed #2)
餃子んまーい!! [myuhe]
googlereader (feed #6)
twitter (feed #2)
おーようやくうまくいったEmacs-eclim。これでeclipseにすらかつる。。。かもしれない。 [myuhe]
twitter (feed #2)
これで、最新版のauto-complete.elが使えれば最高なんだが。。。補完候補がずれまくって、どうしようもないんだよな。というわけで、未だにバージョンは0.3.0。 [myuhe]
twitter (feed #2)
とりあえず、buzztaikiさんブランチのanything-eclimとか使って遊んでみる。 [myuhe]
twitter (feed #2)
でも、これでEclipse使わずにやっていける可能性がでてきたな。 [myuhe]
twitter (feed #2)
VSか。。。そもそもWin自体が嫌いなのでいかんとも。 [myuhe]
twitter (feed #2)
そして、EclispeはEclipseで重いし、面倒くさいマウス操作多いし。 [myuhe]
twitter (feed #2)
回り道もした。逃げたりもした。けど、君が好き、Emacs。 [myuhe]
twitter (feed #2)
けど、まあJava書くにそこまで無理してEmacs使わなんのか、という気がしなくもない。 [myuhe]
twitter (feed #2)
いずれにしろ、少なくともESSを凌ぐR実行環境がないとEmacsから逃れることかなわんわな。 [myuhe]
twitter (feed #2)
こういうの見ると、グローバルなトレンドと日本がいかに乖離してるか、ちょっとわかるよね。日本人はEmacsが好きなんだ。"Google トレンド: emacs,vim" – http://j.mp/bvtY6Y [myuhe]
googlereader (feed #6)
googlereader (feed #6)
delicious (feed #4)
googlereader (feed #6)
googlereader (feed #6)
twitter (feed #2)
いいなー RT @syou6162: Tsukuba.R、Tokyo.R、Osaka.R、Nagoya.Rと全国各地にRの勉強会が広がってきていい感じですね [myuhe]
twitter (feed #2)
そんな機能があったとはRT @shunsuk: 便利!RT @kenji_air: gmailにて、文章中に「添付」という文字が入っていて、添付ファイルが選択されていない場合に、「添付ファイルがないけど大丈夫?」と注意を促すダイアログが出てきた!これはチェックに便利! [myuhe]
twitter (feed #2)
作るくさ!!  RT @syou6162: @myuhe 今こそKyusyu.Rを作るとき!! [myuhe]
twitter (feed #2)
とは言ったものの、まわりにRユーザが一人もいないとゆー悲劇 [myuhe]
twitter (feed #2)
ありがたや>< RT @valvallow #kumamoto RT @valvallow: 【急募】熊本のR言語ユーザー [myuhe]
twitter (feed #2)
でも熊本だけだと集まりそうにないので、ザクッとkyushuくらいかなー [myuhe]
twitter (feed #2)
かたじけない>< RT @valvallow やっぱ九州のRユーザ! #Kyushu #kumamoto #fukuoka RT @valvallow #kumamoto RT @valvallow: 【急募】熊本のR言語ユーザー [myuhe]
googlereader (feed #6)
googlereader (feed #6)
delicious (feed #4)
twitter (feed #2)
今日も単純な入力作業が終わった。 [myuhe]
twitter (feed #2)
GoogleスタイルガイドだとS3だった。そもそもなんでS3推奨なんだろ。 RT @syou6162: @R_Linux googleのなんかだとS3が推奨されてた気がしますが、個人的にS4が好みです… [myuhe]
twitter (feed #2)
S3かS4かはともかく、Kyushu.Rへの反応はないのであったorz [myuhe]
twitter (feed #2)
RT @tkf: RT @showyou: 京大はやはり頭おかしい http://twitpic.com/1562s1 [myuhe]
twitter (feed #2)
これ聴いてる-> bonobos – THANK YOU FOR THE MUSIC [myuhe]
twitter (feed #2)
〽空を仰いで、言葉が溢れ出た。 [myuhe]
twitter (feed #2)
〽<-庵点っていうんだって。へー [myuhe]
twitter (feed #2)
〽が関数定義を表す言語、とかかっこいいかもしれない。 [myuhe]
twitter (feed #2)
腹減った。 [myuhe]
twitter (feed #2)
今から物語が始まるよって感じが庵点。function()もそんな感じ。 [myuhe]
twitter (feed #2)
これ聴いてる-> bonobos – グレープフルーツムーン [myuhe]
twitter (feed #2)
これ聴いてる-> G.Rina – 山の手マジックカーペットライド(日本語編) [myuhe]
twitter (feed #2)
これ聴いてる-> Weezer – Pork and Beans [myuhe]
lastfm (feed #3)
4 曲を聴きました。
twitter (feed #2)
これ聴いてる-> Fuuri – Ai Ai [myuhe]
twitter (feed #2)
これ聴いてる-> SAKEROCK – やおや [myuhe]
lastfm (feed #3)
twitter (feed #2)
はーラーメン食べたくなった。寝よう。 [myuhe]
googlereader (feed #6)
googlereader (feed #6)
delicious (feed #4)
twitter (feed #2)
とうとうOcamlも。RT @kzfm: Ocaml-Rhttp://home.gna.org/ocaml-r/ [myuhe]
googlereader (feed #6)
googlereader (feed #6)
delicious (feed #4)
googlereader (feed #6)
delicious (feed #4)
googlereader (feed #6)
googlereader (feed #6)
delicious (feed #4)
twitter (feed #2)
twitter (feed #2)
googlereader (feed #6)
Shared Texinfo Tips.
delicious (feed #4)
Shared Texinfo Tips.
googlereader (feed #6)
delicious (feed #4)
twitter (feed #2)
タワレコで、CD買った [myuhe]
twitter (feed #2)
TSUTAYA行ったらon lisp と実践common lispが置いてあったので、財布の紐が全開。 [myuhe]
twitter (feed #2)
windows mobile糞すぎる。今日は固まって2回も電池はずしてる。早くandroidがほしい。。。 [myuhe]
twitter (feed #2)
http://twitpic.com/15kw2v – 隣の人が、パフェ平らげた。食欲が半端ないけど、多分成長期なんだと思う。 [myuhe]
twitter (feed #2)
日本語infoをEmacsに入れてみた。改めて読むと結構知らなかったことが多くておもしろい。 [myuhe]
googlereader (feed #6)
delicious (feed #4)
lastfm (feed #3)
25 曲を聴きました。
googlereader (feed #6)
googlereader (feed #6)
delicious (feed #4)
twitter (feed #2)
RT @starocker: RT @kinoppix: Twitterで歌詞をつぶやいたら、JASRACの利用料が発生する by JASRAC菅原常務理事 [myuhe]
twitter (feed #2)
これ聴いてる-> GAGLE Feat. BONNIE PINK – コロナ & ライム [myuhe]
googlereader (feed #6)
googlereader (feed #6)
Shared Tumblr-Gist.
googlereader (feed #6)
googlereader (feed #6)
delicious (feed #4)
twitter (feed #2)
RT @stillpedant: "Yet Another Twitter Client KeySnail 1.6.0 リリースノート – きすねた(ん) – keysnailグループ" – http://j.mp/dhxxEa [myuhe]
twitter (feed #2)
条件付き確率のことですね。 [myuhe]
twitter (feed #2)
はーこれで、auto-completeの最新版が安心して使えるよ。 [myuhe]
twitter (feed #2)
うーん、ところどころおかしい。。。dangleってなんだろうな。 [myuhe]
youtube (feed #5)
twitter (feed #2)
久しぶりに日記書いている。 [myuhe]
twitter (feed #2)
これ聴いてる-> RHYMESTER – 付和Ride On [myuhe]
twitter (feed #2)
RHYMESTERの略歴より引用:「ヤラシテヤラシテヤラシテヤラシテ・・・・」という宇多丸(当時MC SHIRO)のシャウトを聞く事ができます。 [myuhe]
twitter (feed #2)
さすがlast.fm。アーティストの略歴が素晴らしすぎる。 [myuhe]
twitter (feed #2)
宇多丸師匠がどこかにいます。探してみよう!!"YouTube – パフュームーシークレットシークレット [PV]" – http://j.mp/drZdgt [myuhe]
twitter (feed #2)
久しぶりに日記書いてみました。"popup.elを使ってRオブジェクトの情報をpopupするR-object-popup.el" – http://j.mp/duXLJI [myuhe]
googlereader (feed #6)
delicious (feed #4)
twitter (feed #2)
結局infoファイルはmeadowに入ってた和訳のものを拝借した。オフラインの読み物としては最高。 [myuhe]
twitter (feed #2)
ちなみにKyushu.Rは現在も部員募集中です。興味のある方は、RTなりなんなりください。勝手にKyushu.Rのリストにいれちゃいます。#kumamoto #fukuoka [myuhe]
twitter (feed #2)
popup.elが画像とかもpopupできるとplot()とかもえらく便利になりそうな気がします。RT @syou6162: マウス合わせないでいいのは便利ー http://sheephead.homelinux.org/2010/03/02/1807/ [myuhe]
twitter (feed #2)
これ聴いてる-> GAGLE Feat. KGM – Farewell [myuhe]
twitter (feed #2)
梶山氏、危険過ぎる。現場を知らさなすぎる。"林業は衰退産業という“ウソ”:日経ビジネスオンライン" – http://j.mp/dz3g0o [myuhe]
twitter (feed #2)
この梶山氏なる人物が民主党にもの言い出すのが怖い。また、とんでもない方向に道案内しそうだ。 [myuhe]
twitter (feed #2)
ありがたし!! RT @_Relm: 支援 RT @valvallow 支援 RT @myuhe: ちなみにKyushu.Rは現在も部員募集中です。興味のある方は、RTなりなんなりください。勝手にKyushu.Rのリストにいれちゃいます。 [myuhe]
twitter (feed #2)
とりあえず、ploneあたりにKyushu.Rのサイトあげとくかな。 [myuhe]
twitter (feed #2)
つか、Rjpwiki内に間借りさせてもらうってのもいいような気がしてきた。 [myuhe]
twitter (feed #2)
うーん、やっぱもう少し人が集まってからだな。 [myuhe]
twitter (feed #2)
日記書いた-> popup.elを使ってRオブジェクトの情報をpopupするR-object-popup.el http://bit.ly/dr9OSV [myuhe]
twitter (feed #2)
あ、Kyushu.Rは統計解析環境Rをもっと知りたい人、今から始めようとする九州人のためのコミュニティ、、、、になる予定です。 [myuhe]
twitter (feed #2)
引越しプロジェクト着々と進行中。 [myuhe]
twitter (feed #2)
うちのサーバどうすっかな。この際、自宅鯖やめたいけど、R動かせる鯖となるとねーー [myuhe]
twitter (feed #2)
あれ、KeySnailってばTABの補完がおかしいような。。。 [myuhe]
twitter (feed #2)
buzzって、やっぱみんな飽きてきたみたい。 [myuhe]
twitter (feed #2)
これ聴いてる-> RHYMESTER – ONCE AGAIN [myuhe]
googlereader (feed #6)
Shared gitg.
delicious (feed #4)
Shared gitg.
googlereader (feed #6)
twitter (feed #2)
どうもです。 githubのissueに登録しておきました!! RT @stillpedant: @myuhe 再現するようであれば報告お願いします. [myuhe]
twitter (feed #2)
なぜか、醤油屋さんばかりにフォローされるんだが。 [myuhe]
googlereader (feed #6)
delicious (feed #4)
twitter (feed #2)
是非実現してほすぃ RT @shunsuk: RT @localdisk: 実現すれば超ナイス「総務省, 「SIMロック」について廃止を議論へ – ringo-sanco <http://bit.ly/9MZEUI>」 [myuhe]
delicious (feed #4)
delicious (feed #4)
googlereader (feed #6)
twitter (feed #2)
読み物として面白い。"第7回 討論会資料 – 人工知能学会 データマイニングと統計数理研究会 (SIG-DMSM)" – http://j.mp/cwTv7l [myuhe]
twitter (feed #2)
データ同化という日本語ってモデル屋さん界隈では確立してる用語なんだろうか。何回聞いてもモデル屋さんがデータ使います、というための免罪符でしかないと思うんだけど。 [myuhe]
twitter (feed #2)
つまり、どーでもいいセクショナリズム、ということに帰結するんではなかろうか。 [myuhe]
googlereader (feed #6)
twitter (feed #2)
親父から遺産相続の話が。重いな。 [myuhe]
twitter (feed #2)
插件<-プラグインらしい。大学で中国語取るべきだった。 [myuhe]
twitter (feed #2)
うーんグローバルだ。KeySnail. [myuhe]
twitter (feed #2)
ここは突撃@してみますかwww RT @stillpedant: 結局あの人がユーザになってくれたのか、なってくれなかったのかは分からずじまい。 [myuhe]
twitter (feed #2)
あ、でも英語できません、とか言われたら終わるな。誰かいないかな、中国語できる人。 [myuhe]
twitter (feed #2)
いいな、中国語。javascriptの次は中国語だな。 [myuhe]
twitter (feed #2)
ありがとうございます。 早速かのひとをフォローしてみましたwww RT @tomkosaka: 中国の人にSite local keymapについて伝えてみた。 [myuhe]
twitter (feed #2)
というわけで、早速auto-completeをフォーク。 [myuhe]
twitter (feed #2)
gitでコメント書こうとしたらvimが開きおった。保存とか終了とかすら知らん。 [myuhe]
twitter (feed #2)
winbugsのMLでwinbugsとopenbugsの結果が違うよーってのが来てる。 [myuhe]
twitter (feed #2)
そっか。eclim試したときにvimいれたからだな。gitめんどくさいな。Mercurialの方が性に合ってる。というかTortoiseHGだけど。 [myuhe]
twitter (feed #2)
openbugsは便利なんだけど、収束しているかどうかがわかんないんだよね。CPUの具合見ながら、判断しないといけないとゆーゆとりな仕様だから。 [myuhe]
twitter (feed #2)
日本スケート陣って音楽の傾向がイマイチ。 [myuhe]
twitter (feed #2)
昨日書いたRの日記。なぜかrubyタグではてぶされてる。rubyではなくてRなんだけどな。 [myuhe]
googlereader (feed #6)
twitter (feed #2)
これ聴いてる-> GAGLE Feat. KGM – Farewell [myuhe]
twitter (feed #2)
これ聴いてる-> DJ NOZAWA – 靉 Ai [myuhe]
twitter (feed #2)
これ聴いてる-> Suemitsu & THE Suemith – Iröny [myuhe]
googlereader (feed #6)
delicious (feed #4)
twitter (feed #2)
これ聴いてる-> SUEMITSU & THE SUEMITH – Allegro Cantabile [myuhe]
twitter (feed #2)
歌詞つぶやくと、どうのこうのうるさいらしいので、黙っとく。 [myuhe]
twitter (feed #2)
もしかして、曲名つぶやいてもアウト?? [myuhe]
twitter (feed #2)
楽しみ!! RT @stillpedant: 会話表示機能を実装した. 便利. [myuhe]
lastfm (feed #3)
3 曲を聴きました。
googlereader (feed #6)
delicious (feed #4)

popup.elを使ってRオブジェクトの情報をpopupするess-R-object-popup.el

以前似たようなものを紹介したのですが、いろいろとしょぼかったので最新のpopup.elを使ったものに変えてみました。

使うには最新のauto-complete.elが必要です。
popup.elによるポップアップメニュー、カスケードポップアップメニュー、ツールチップの実現 – Monthly Emacs

それと、ESSが必要になります。debian系ならばapt-get install ESSでインストールできるはずです。
そうでない方は、以前導入方法諸々について書いたのでそちらを見てもらえるとよくわかるかもしれません。
これからEmacsでR使う人のための設定まとめ

R-object-popup.elはgistに置いてます。
gist: 318365 – GitHub
スクリプトはこんな感じ。

;; ess-R-object-popup.el
;;
;; I have defined a function, ess-R-object-popup, that when
;; invoked, will return a popup with some information about
;; the object at point. The information returned is
;; determined by which R function is called. This is controlled
;; by an alist, called ess-R-object-popup-alist. The default is
;; given below. The keys are the classes of R object that will
;; use the associated function. For example, when the function
;; is called while point is on a factor object, a table of that
;; factor will be shown in the popup.

;; the alist
(setq ess-R-object-popup-alist
      '((numeric . "summary")
        (factor . "table")
        (integer . "summary")
        (lm . "summary")
        (other . "str")))

(defun ess-R-object-popup ()
  "Get info for object at point, and display it in a popup."
  (interactive)
  (let ((objname (current-word))
        (curbuf (current-buffer))
        (tmpbuf (get-buffer-create "**ess-R-object-popup**")))
    (if objname
        (progn
          (ess-command (concat "class(" objname ")\n") tmpbuf )
          (set-buffer tmpbuf)
          (let ((bs (buffer-string)))
            (if (not(string-match "\(object .* not found\)\|unexpected" bs))
                (let* ((objcls (buffer-substring
                                (+ 2 (string-match "\".*\"" bs))
                                (- (point-max) 2)))
                       (myfun (cdr(assoc-string objcls
                                                ess-R-object-popup-alist))))
                  (progn
                    (if (eq myfun nil)
                        (setq myfun
                              (cdr(assoc-string "other"
                                                ess-R-object-popup-alist))))
                    (ess-command (concat myfun "(" objname ")\n") tmpbuf)
                    (let ((bs (buffer-string)))
                      (progn
                        (set-buffer curbuf)
                        (popup-tip bs)))))))))
    (kill-buffer tmpbuf)))

;; my default key map
(define-key ess-mode-map "\C-c\C-g" 'ess-R-object-popup)

 (provide 'ess-R-object-popup)

ここからファイルを落としてきて.emacsに(require ‘ess-R-object-popup.el)としておきましょう。

デフォルトではキーバインドはC-c C-gとなってます。何かのオブジェクトの上にカーソルを合わせてC-c C-gすることでそのオブジェクトをstr()なりsummary()した結果がpopupするんではないかと思います。

今回は雰囲気を見てもらうために動画も撮ってみました。しょっぼいですがこんな感じです。

popup.elはmouse.elと違って、マウス使用を前提とせずにツールチップを表示してくれるます。なのでカーソルが変な位置にあっても表示がおかしくなるということはありませんし、emacs -nwな環境でもツールチップが表示されます。これ以外でもいろいろな用途が考えられそうです。

今週の気になるアレFebruary 24th

googlereader (feed #6)
delicious (feed #4)
twitter (feed #2)
また、妹がカナダに永住するとか言ってきた。どんだけ頭悪いんだ、こいつ。 [myuhe]
twitter (feed #2)
くだらん世迷い言をきいてるほど余裕ない。元凶の旦那をどうかせにゃ。 [myuhe]
delicious (feed #4)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
delicious (feed #4)
twitter (feed #2)
今日は久しぶりにGISお仕事。最近使ってなかったので操作方法かなり忘れてた。 [myuhe]
twitter (feed #2)
古い行政界shp探してたら、昔@Rokinawa さんが作られたものが!!ありがたく使わせていただきました。 [myuhe]
twitter (feed #2)
古い行政界データとかいざ探してみると意外とないものだんね。 [myuhe]
twitter (feed #2)
かと言って、現行の行政界って合併で訳わかんなくなってるし。もう行政界とかいっそのことメッシュにしてほしい。 [myuhe]
googlereader (feed #6)
googlereader (feed #6)
delicious (feed #4)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
twitter (feed #2)
.@myuheさんをPythonの組み込み関数にたとえるとboolです http://king-soukutu.com/twit/?n=pyindent [いんでんったー] #pyindent [myuhe]
twitter (feed #2)
boolですか。そうですか。ま、中身は全部偽だけどね。RT @myuhe: .@myuheさんをPythonの組み込み関数にたとえるとboolです http://king-soukutu.com/twit/?n=pyindent [いんでんったー] #pyindent [myuhe]
twitter (feed #2)
勢いでtumblrのアカウントとった。そう、現実逃避。 [myuhe]
twitter (feed #2)
いいなー誰かKyushu.Rやって!!RT @phosphor_m: Osaka.R#1開催のお知らせ。 http://m884.jp/Osaka.R/ #rstatsj [myuhe]
googlereader (feed #6)
googlereader (feed #6)
twitter (feed #2)
おやつ食べてる。らっきょうだけど。 [myuhe]
twitter (feed #2)
vim全然使い方わからん。。。 [myuhe]
twitter (feed #2)
eclimまでインストールしてみた。続きは明日にしようっと。 [myuhe]
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
twitter (feed #2)
twitter (feed #2)
RT @R_Linux: @h_okumura 化けないみたいです.私事ですが,来年,twitterR と自作のパッケージでテキストマイニングネタを演目にしようと思ってましたので,自分も twitteR に関する皆さんの postが参考になりました [myuhe]
twitter (feed #2)
今から探す!!RT @stillpedant: はてなに keysnail グループとかあったのかよ。びっくりした。 [myuhe]
twitter (feed #2)
そして申請した。RT @myuhe: 今から探す!!RT @stillpedant: はてなに keysnail グループとかあったのかよ。びっくりした。 [myuhe]
twitter (feed #2)
というわけで、KeySnailユーザは入るべき。"keysnailグループ" – http://j.mp/cXZ6Ns [myuhe]
twitter (feed #2)
お詫びCMのナレーションしてる人って、一人しかいなくね? [myuhe]
twitter (feed #2)
RT @R_Linux: KeySnail を入れてみた.よさげ [myuhe]
twitter (feed #2)
tumblrのテーマ変えてみた。いまいち使い方がわからん。 [myuhe]
delicious (feed #4)
twitter (feed #2)
ぐむーeclimデーモンが起動できんがな。 [myuhe]
twitter (feed #2)
お、eclim起動したっぽい。 [myuhe]
twitter (feed #2)
eclimは起動したけどvimの使い方が分からんので調べてみるなど。 [myuhe]
twitter (feed #2)
はーなるほど。M-xみたいのが:なんだ。多分。 [myuhe]
twitter (feed #2)
うし、これでvimのお勉強終了。 [myuhe]
twitter (feed #2)
twitter (feed #2)
あーあかん。Emacs-eclimうまく動かん。 [myuhe]
twitter (feed #2)
これでJAVAをEmacsで書くという夢は脆くも崩れたな。。。 [myuhe]
twitter (feed #2)
twitter (feed #2)
buzzのフォローをことごとく解除。なんで女性ばっかりアゲられるの? [myuhe]
twitter (feed #2)
情報ありがとうございます!! 試してみます。RT @m2ym: @myuhe buzztaikiさんのブランチのを使ってください http://github.com/buzztaiki/emacs-eclim [myuhe]
twitter (feed #2)
無印でソファ買ったった。 [myuhe]
twitter (feed #2)
Emacs-eclimのbuzztaikiさんブランチ、auto-completeやanythingも入ってるのか。。。 [myuhe]
twitter (feed #2)
なんか知らんがうらやましい。。。RT @yomi0512: .@yomi0512さんのバンドはthe band apartです http://king-soukutu.com/twit/?n=band  意味分からんけどやったー! [myuhe]
twitter (feed #2)
これ聴いてる-> the band apart – FUEL [myuhe]
twitter (feed #2)
twitter (feed #2)
女性の記憶力が良いのは、感情的だから。感情と記憶は結びつきやすいかららしい。 [myuhe]
twitter (feed #2)
ということはだね、よくdisられるとゆーPHPとやらも記憶には鮮明に残るということにはなるまいか。 [myuhe]
twitter (feed #2)
学習効率が低いなどど言われるEmacsキーバインドも苦労して覚えるから、記憶と結びつくのかなー [myuhe]
twitter (feed #2)
どーでもいいことは、どーでもいいから覚えられないんだろうな。 [myuhe]
twitter (feed #2)
感情的でない男性は泣くほど苦労したり、血尿出るほど努力しないと覚えられないってことか。因果な生き物だ。 [myuhe]
twitter (feed #2)
twitter (feed #2)
buzztaikiさんブランチeclim-Emacs、補完まわりはいけそうなんだけど、プロジェクト管理とかがうまくいかない気する。 [myuhe]
lastfm (feed #3)
14 曲を聴きました。
twitter (feed #2)
これ聴いてる-> FACT – a fact of life [myuhe]
twitter (feed #2)
今から天草までツーリング行ってくる。 [myuhe]
twitter (feed #2)
昼から刺身食べるよー [myuhe]
twitter (feed #2)
http://twitpic.com/14gmoy – 昼間から舟盛り食べます。 [myuhe]
twitter (feed #2)
http://twitpic.com/14h0ma – ごちそうさまでした。 [myuhe]
twitter (feed #2)
twitter (feed #2)
RT @taoikaihatsu: RT @alohakun: TeX 職人の朝は早い。 「最近はもうみんな LaTeX だね。」 「昔ながらの TeX をそのまま使ってる職人は、ごくわずかになってしまった。」 [myuhe]
twitter (feed #2)
なぜか、スタバに行くことになった。パジャマで。パジャマでおじゃま。 [myuhe]
twitter (feed #2)
恐らく、スタバはパジャマで行くところではない。注意して。 [myuhe]
lastfm (feed #3)
4 曲を聴きました。
twitter (feed #2)
これ聴いてる-> Rei Harakami – にじぞう [myuhe]
twitter (feed #2)
twitter (feed #2)
twitter (feed #2)
日記書いた-> 今週の気になるアレFebruary 17th http://bit.ly/bw6B0u [myuhe]
googlereader (feed #6)
twitter (feed #2)
ぐむー。やはりうまくいかぬ、Eclim-Emacs [myuhe]
twitter (feed #2)
いやだーEclipseだけはいやだー [myuhe]
twitter (feed #2)
そう、ギターで言えば、Fコードが押さえられないもどかしさ。 [myuhe]
twitter (feed #2)
でも、ベースだったらチョッパーでベキベキなのに、みたいな。 [myuhe]
twitter (feed #2)
そんな、ちょっとおセンチな心境。 [myuhe]
twitter (feed #2)
そろそろ、EclipseをどうしたらEmacsぽく使えるかに考え方をシフトさせないといけない時期なのかもしれない。 [myuhe]
twitter (feed #2)
twitter (feed #2)
twitter (feed #2)
これ聴いてる-> Yes – Heart Of The Sunrise [myuhe]
twitter (feed #2)
おい、どういうこったOsaka.R RT @phosphor_m: ちなみにTsukuba.RとOsaka.Rの最大の違いは,男女比です。 http://bit.ly/9URyW8 [myuhe]
twitter (feed #2)
ありがとうございます!! RT @stillpedant: @myuhe やはり http://www.mulgasoft.com/emacsplus や More emacs 辺りですかねー。あんまりにも Eclipse がもっさりするので自分は挫折してしまいましたが。。 [myuhe]
twitter (feed #2)
これ聴いてる-> タカツキ – 500マイルの未来に咲く花 [myuhe]
twitter (feed #2)
これ聴いてる-> スーパーカー – Yumegiwa Last Boy [myuhe]
twitter (feed #2)
これ聴いてる-> Weezer – Heart Songs [myuhe]
twitter (feed #2)
これ聴いてる-> Jazztronik Feat. VERBAL – Wave Rave [myuhe]
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
twitter (feed #2)
googlereader (feed #6)
twitter (feed #2)
今すぐそのホテルに泊まりたい!!RT @motoshit: 宿泊先のホテル、どうやらTwitter禁止らしい。アクセスするとネットから遮断される。今度、論文書きに泊まろうかなw [myuhe]
twitter (feed #2)
js-comint.elも合わせて使うとさらにウマーです。RT @valvallow: rhino + js2-mode + emacs いいなー。 [myuhe]
twitter (feed #2)
ひたすら野帳の数字をエクセルに打ち込んでた。 [myuhe]
twitter (feed #2)
Emacsキーバインドに染められたエクセルで、数字を入力していくだけの簡単なお仕事です。 [myuhe]
twitter (feed #2)
Emacsライクなキーバインドでエクセルっつっても限界あるからなー。ぐむ。 [myuhe]
twitter (feed #2)
いかん。あまり誇張表現するとjaroに訴えられるな。 [myuhe]
twitter (feed #2)
久しぶりにKeydledoのユーザ数見てみたら、増えてた。15に。。。 [myuhe]
twitter (feed #2)
xyzzyにはcsv-modeというのがあって、スプレッドシートライクな環境にできたんだけど、今のところcsv-modeにかなうやつ、Emacsにはなさそうだしな。 [myuhe]
twitter (feed #2)
ござるって語尾につけるの流行ってるんだな。ござる。 [myuhe]
googlereader (feed #6)
googlereader (feed #6)

今週の気になるアレFebruary 17th

twitter (feed #2)
日記書いた-> 今週の気になるアレFebruary 10th http://bit.ly/d5LykM [myuhe]
delicious (feed #4)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
twitter (feed #2)
RT @_shimizu: Google Buzz この伸び方はすごい。 http://bit.ly/dipIfA っていうかAA貼れるってwww [myuhe]
twitter (feed #2)
buzzのコメント300越えてる。どうやらこういうのをバズレと呼ぶことになったらしい。"バズ からの 小島猛稔 さんのバズ" – http://j.mp/9L3mXx [myuhe]
twitter (feed #2)
そうか。buzzは2chでもあるのか。 [myuhe]
twitter (feed #2)
なるほどーbuzzのコメントは500まで、とゆー制限があるようだ。 2chよりか厳しいな [myuhe]
twitter (feed #2)
んで、buzzにコメントするとGmailにメールが来るようだ [myuhe]
twitter (feed #2)
んでんで、メールの中でリアルタイムにコメントが更新されていくっていう仕組み。ここらはWaveと似てる。 [myuhe]
googlereader (feed #6)
twitter (feed #2)
そろそろ仕事行くか。ついでにリサイクルショップ寄って冷蔵庫も見てこよう。 [myuhe]
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
twitter (feed #2)
中古冷蔵庫、ほとんど新品と値段変わらんかった。あれなら新品買った方がいいよな。 [myuhe]
twitter (feed #2)
HTCのリークいろいろ見てわかってきたのだけど、Bravoのjoystickなるものは光学式センサーみたいなやつなのね。 [myuhe]
twitter (feed #2)
つまり、マウスとかの光学センサの上をなぞるみたいな感じで操作するデバイスなんだと思う。 [myuhe]
twitter (feed #2)
トラックボールからの進化は、マウスの進化をなぞる正常進化だってことだが、使い勝手が心配。 [myuhe]
twitter (feed #2)
BuzzってすでにAPIのドキュメント出てるのね。 [myuhe]
twitter (feed #2)
これ聴いてる-> HASYMO – RESCUE [myuhe]
twitter (feed #2)
buzz,last.fmとの連携もしてほっすいな [myuhe]
twitter (feed #2)
ソフトはR。データすらGoogle codeにホスティング。頭は常にオープンリーチ。"科学者は研究に使っているコードを公開すべき? – スラッシュドット・ジャパン" – http://j.mp/cGw3fi [myuhe]
twitter (feed #2)
ipodの充電ケーブルが見つからない。どこいきやがった。 [myuhe]
twitter (feed #2)
これ聴いてる-> Frontier Backyard – turned back [myuhe]
twitter (feed #2)
これ聴いてる-> スーパーカー – Yumegiwa Last Boy [myuhe]
twitter (feed #2)
Namorokaとchromiumのアイコンが見分けづらい件 [myuhe]
twitter (feed #2)
結論。buzzはユルい2chである。 [myuhe]
twitter (feed #2)
て思い出したら急激に飽きてきた。 [myuhe]
twitter (feed #2)
これ聴いてる-> Weezer – Troublemaker [myuhe]
twitter (feed #2)
これ聴いてる-> Clammbon By Nujabes – Imaginary Folklore [myuhe]
twitter (feed #2)
これ聴いてる-> THE HELLO WORKS Feat. ハナレグミ – 今夜はブギーバック (Re-play) [myuhe]
twitter (feed #2)
これ聴いてる-> GAGLE – 若き匠たちへ [myuhe]
googlereader (feed #6)
twitter (feed #2)
これ聴いてる-> Rei Harakami – Owari No Kisetsu [myuhe]
twitter (feed #2)
なぜか今頃になって、NO掲載のネタで酔っ払いから電話かかってきた。いいかげんこのネタでいぢられるのも飽きてきた。 [myuhe]
twitter (feed #2)
なんで女子大生をJDと訳したんだろ。そんなの言われてもわかるわけないだろ。酔っ払いめ。 [myuhe]
twitter (feed #2)
これ聴いてる-> FACT – this is the end [myuhe]
twitter (feed #2)
結婚式の案内来たんだけど、3月28日に立川に来いとか冗談にもほどがある。いや、冗談ではないんだけど。 [myuhe]
twitter (feed #2)
これ聴いてる-> Ben Folds Five – Evaporated [myuhe]
twitter (feed #2)
これ聴いてる-> androp – Roots [myuhe]
delicious (feed #4)
twitter (feed #2)
仕事に使う本、11冊注文したった。しめて4万也。 [myuhe]
twitter (feed #2)
これ聴いてる-> androp – Nam(a)e [myuhe]
twitter (feed #2)
これ聴いてる-> FACT – slip of the lip [myuhe]
googlereader (feed #6)
lastfm (feed #3)
20 曲を聴きました。
lastfm (feed #3)
10 曲を聴きました。
googlereader (feed #6)
googlereader (feed #6)
twitter (feed #2)
これ聴いてる-> くるり – ばらの花 ~remixed by Rei Harakami [myuhe]
googlereader (feed #6)
googlereader (feed #6)
twitter (feed #2)
RT @edvakf: "一行80文字ってのは70年代のパンチカードから来てるらしいですよ。" [myuhe]
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
twitter (feed #2)
明日までに作って、と頼まれた申請書作ってた。ちなみに頼まれたのは金曜の夕方。 [myuhe]
googlereader (feed #6)
twitter (feed #2)
あんなクソな機関、事業仕分けで潰されてしまえ、と心の底から思った。 [myuhe]
twitter (feed #2)
などと、ダークフォースが広がりつつあるので、外になぞ出かけてみる。雨降ってるけど。 [myuhe]
twitter (feed #2)
don’t be evil. but I couldn’t. [myuhe]
twitter (feed #2)
KKK。ネーミングとアイコンのセンスが尋常でない。すばらし。"Plugin – keysnail – GitHub" – http://j.mp/4J66GT [myuhe]
twitter (feed #2)
寒かったのですぐ帰ってきた。へなちょこです。 [myuhe]
twitter (feed #2)
buzzの2chっぷりひどすぎ。ワロタ。 [myuhe]
twitter (feed #2)
これ聴いてる-> Beck – The New Pollution [myuhe]
twitter (feed #2)
BECKってサイエントロジストなのか!といってもサイエントロジーがどーとか知ってるわけではないけれど。 [myuhe]
twitter (feed #2)
songbirdに出てくるアーティストプチ情報、なかなかおもろい読み物が多い。ipodともっと連携取れればitunesなんていらないんだけど。 [myuhe]
twitter (feed #2)
そうか!別にipod使わなければいいんだ。と言ってもコーデックがALACにしている3000曲を再エンコすんのがねーめんどくさい。 [myuhe]
twitter (feed #2)
ALAC使った時点でappleの軍門にくだってたんだ、と気づいたのが確か2500曲のあたりだったと思う。 [myuhe]
twitter (feed #2)
だいじょぶ!TeXは使いやすくなる。RT @nozma: .emacsをどれだけいじってもPowerPointは使い易くならない… [myuhe]
twitter (feed #2)
とかいいつつ、TeXでスライドは絶対つくらん、とかたく心に決めている。 [myuhe]
twitter (feed #2)
テキスト主体で、スタイルもあまり変わらないスライドだと良さそうなんですけどね。RT @stillpedant: beamer は地獄でした RT @myuhe: とかいいつつ、TeXでスライドは絶対つくらん、とかたく心に決めている。 [myuhe]
twitter (feed #2)
図を微調整してはコンパイル、とゆーほんとにどーでもいい作業しながら徹夜してたなー。 [myuhe]
twitter (feed #2)
今は、スカパラの新譜だけしか楽しみのない日々。"news:TOKYO SKA PARADISE ORCHESTRA" – http://j.mp/d2sqCg [myuhe]
twitter (feed #2)
スカパラ20周年か。 [myuhe]
twitter (feed #2)
実はbeamerユーザ結構多い(多かった)とゆー新事実。RT @uhiaha888: 僕はbeamerのdviファイルが上手く表示できなくてyatexからpdfに変換してプレビュー出すにはどうすればいいかで徹夜したことがあります [myuhe]
twitter (feed #2)
最近は完全にOOoでpdfつーゆとりライフ。つか、TeXってバッドノウハウすごすぎ。 [myuhe]
twitter (feed #2)
ああ、かっこよし。"YouTube – 東京スカパラダイスオーケストラ / 流星とバラード" – http://j.mp/9hbT3l [myuhe]
twitter (feed #2)
うまい棒を食べるだけの簡単なお仕事です。RT @yomi0512: 去年の謝恩会のタイムスケジュールに「うまい棒係は待機」って書いてあるんだけど、何これw [myuhe]
lastfm (feed #3)
4 曲を聴きました。
twitter (feed #2)
これ聴いてる-> FACT – rise [myuhe]
twitter (feed #2)
RT @rubikitch: run-hook-with-args-until-success関数が地味に便利。non-nilになるまで複数の関数を順次呼び出し、その値を返すというやつ。いちいち関数リストのシンボルを指定しないといけないのが汚い。#elisp #emacs [myuhe]
twitter (feed #2)
今、気づいたんだけどNamorokaのポップアップがOSD noitfyにいつの間にか統一されている気がする。こっちの方が見た目綺麗なので良いけど、フォントサイズ小さいのが気になる。 [myuhe]
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
googlereader (feed #6)
twitter (feed #2)
どうも。廃人です。 [myuhe]
twitter (feed #2)
HTC bravoって結局desireって名前になったんだね。 [myuhe]
twitter (feed #2)
つまり、bravoなjoystickではなくて、desireのjoystickになったってことか。なんか、どっちもすげーな。 [myuhe]
twitter (feed #2)
どうもどうも。RT @valvallow: ど、どうも・・・。 RT @myuhe: どうも。廃人です。 [myuhe]