ballはトモダチ、vimpはトモダチ (zoteroを例として) - Vimperator Advent Calendar 2012 8日目
Vimperator Advent Calendar 2012 8日目担当、日本目光会の kozo2 です。
今日は、 vimp 使い込みのために、文献管理pluginであるzoteroを例としてinteractiveにpluginのobjectを操作する方法を紹介します。
Zoteroとは
論文pdfなどのmeta dataを読み込みマイlibraryを作るのを手助けしてくれるfirefox addonです。
mendeleyのようなsocial機能は無いですがbrowser(firefox)と統合しているのが特徴です。
その他挙げますと
- 同期用storageダータplanでは300M
- オープンソース
って感じですが、とりあえず http://www.zotero.org/download/ から Zotero for Firefox をインスコしてください。
なぜvimpはトモダチか
vimpというと
- command lineで何でも操作できる
- hit-a-hintでmouseいらず
ってのがpushされてる気がします。
しかし真価はinteractiveにjavascriptのobjectを補完機能付きでinspectできるところにあると思います。
それはPythonでのipythonのように。
vimp 使い込みにはこのjs objectと戯れることが肝要であります。
それはまるでsoccer ballと戯れる翼君の如し。
js objectにダイブ
vimp で任意のjavascriptを実行するにはcommand lineで
:js なんか
します。
Zoteroの場合であれば http://www.zotero.org/support/dev/client_coding/javascript_api に書かれている文をZoteroをonにした後に
:js
に続けて打っていくことでvimpがobjectをinspectしてくれinteractiveにplugin(Zotero)の情報を得られるのが実感できるでしょう。
例えばZoteroをonにした状態で
:js ZoteroPane.
と入力すると、下記のような補完が候補が出ます。
また
:js ZoteroPane.
のあとに to と入力することで下記のように補完候補が絞られるのがわかるでしょう。
ここで
:js ZoteroPane.toggleTab()
とすることでZoteroのtabがtoggleするのがわかるでしょう。
先ほどのZoteroのdocument http://www.zotero.org/support/dev/client_coding/javascript_api にはAn Easy Debugging Environmentとして
- ExecuteJS
- MozRepl
などが挙げられていますが、vimpの方が手軽かつ補完が強力な気がします。
その先は
あとはひたすらjs objectと戯れ、便利と思った文をpluginとしてまとめましょう。
pluginとしてまとめるには日本目光会会長の anekos さんによる function-template.js を見られることをおすすめします。
https://github.com/vimpr/vimperator-plugins/blob/master/function-template.js
Travis CIでDebian勉強会のTeXをbuildするようにしたった(ので活用してもらえるとうれしい) - Debian/Ubuntu JP Advent Calendar 2012 4日目
Debian/Ubuntu JP Advent Calendar 2012 4日目担当、日本目光会のkozo2です。
昨日は岩松さん @iwamatsu の 今時のバグレポート操作方法 でした。
今日は、日本のDebian勉強会について興味をもってもらう アンド DebianJPの方々のDebian勉強会の資料管理の負担を減らすために
を紹介します。
日本のDebian勉強会と勉強会で配られている資料について
Debianに関する知識を共有したりしてキャッキャウフフする会、Debian勉強会
なるものが(私の知る限りでは)東京と大阪で毎月行われています。
この勉強会で行う発表の原稿はTeXで書かれており、そのTeX filesはgit
repository (git://git.debian.org/git/tokyodebian/monthly-report.git) で
管理されています。
Debian, Ubuntuに興味のある方々にとって有益な情報がつまっているので一度
ご覧になられるとよいかと思っとりやす。
勉強会資料原稿TeXのbuildについて
git repositoryのcloneからbuildする方法については
http://kozo2.hatenablog.com/entry/2012/03/26/042317
で書きました。
これだけだと既出エントリの使いまわしなだけなので今回はこのbuildをTravis
CIを使ってbuildするようにしてみました。
これでとりあえずbuildが通るか否かは確実にわかるので原稿を管理されているDebianJPの方々や原
稿筆者の方々的にはなかなかうれしいのではないかなと思った次第でございや
す。
Travis CIについて
Travis CIってのはgithub中のrepositoryのcodeのbuild serviceをダータで提供
してくれるナウいweb serviceです。
buildしたいgit repositoryのrootに.travis.ymlというfile nameでbuild
taskを書いてpushしておくと、その通りにTravis CI側のserverでbuildしてくれて
browserでbuild logやbuildが成功したかどうかが確認できます。
今回やったこと
- git://git.debian.org/git/tokyodebian/monthly-report.git の cloneを https://github.com/kozo2/debianjp-monthly-report に特攻の拓した。
- https://github.com/kozo2/debianjp-monthly-report に https://github.com/kozo2/debianjp-monthly-report/blob/master/.travis.yml を特攻の拓した。
- あとは https://travis-ci.org/kozo2/debianjp-monthly-report 見るだけ。
Travis CIの設定
language: c
before_install:
- sudo apt-get install ptex-bin okumura-clsfiles texlive-latex-extra lv
script:
- cp git-pre-commit.sh .git/hooks/pre-commit
- make debianmeetingresume201210-kansai.pdf
- TeXってlanguageは無くmakeができりゃいいだけだったのですが、language は必須だったので適当にcって書いてます
- すべてのbuildが通るかどうかmake allでこき使っときたいところですが、 logがはかれまくるせいでbrowser内の1pageでは確認できないのと、失敗して いる箇所の特定ができなかったのでmakeの対象を1fileにしています。(make allはこけてました)
Travis は Debian/Ubuntu JP を救う
いまんとこ1資料のbuildが通るかを確認するのしかしてないのですが、もっといろいろできそうです。
TravisはUbuntuのprecise環境のようなのでDebian/Ubuntu JPの方々にはウマーでしょう。
ダータですしいろいろ使わせて頂きやしょう。
明日は なかおけいすけ さんによる記事になりそうな雰囲気です。
関西Emacsにいってきた
いまHatena Blog見てそういえばEmacs温泉の詳細書くとか言って忘れてたらもうその次の関西Emacsでした。すんません。
今日は関西Emacsに参加してました。
その感想をつらつら書くとともに今日デモした @tkf さんのemacs-jediのいんすこ方法などを詳しく書きます。
@oarat さん
今日のハイライトだったかもしれん。
term+.elの紹介。
よさげに思う。とにかく使ってみてtwitterで思うところを言うていこうと思う。
term+.elの中でipythonがいい感じに使えるかどうか試そうと思う。
@syohex さん
websocket.elの紹介。
第六回 関西 Emacs勉強会に参加してきました。 を参照されたし。
web application frameworkにPerlのamon2というのを用いてはったのを今はRubyのsinatraにreplaceしようとしてくれているらしい。
それは歓迎すべきことであろう。
@kiyoka さん
pastehubの紹介。
demoのため自分の手元の環境いじってたためちゃんと聞いてなかった。申し訳ありません。
syohexさんのはてブエントリを参照されたし。
@uk_ar さん
githubのelisp projectにTravis CIを使う話。
自分はtestまともに書いたことないlevelなのでまったく実感できてない。
精進する必要がある。
おれ
以下demoしたemacs-jediのel-getを使わない いんすこ方法を書く。
MacとUbuntuではこれでうまく補完できることを確認した。Windowsでもできそうに思う。
jediについては mattnさんのblogエントリ を参照されたし。
これまでのEmacs用 Python補完libraryのdisりはやめておこう。とにかく(emacs-)jediはよいと思う。
emacs-jediのいんすこ方法(設定は後述する)
emacs-jediはkiwanamiさんproductを活用していて、設計がすっきりしている(ように思う)。
kiwanamiさんのproductのすばらしさがわかる。その点でも使用をおすすめしたい。
- auto-complete
- concurrent.el
- epc.el
- ctable.el
emacs-jediは上記のelispに依存していてこれらが必要である。
auto-complete以外は現時点ではmelpa packageには無いのでgithubからcloneする。
auto-completeはpackage.elでinstallするのがよいかと思う。
cd ~/.emacs.d
git clone git://github.com/tkf/emacs-jedi
git clone git://github.com/kiwanami/emacs-deferred
git clone git://github.com/kiwanami/emacs-epc
git clone git://github.com/kiwanami/emacs-ctable
jediのいんすこ方法
どうもtkfさんがvirtualenvの使用を想定されている模様アンドvirtualenv使って損ないのでvirtualenvを使おう。
pipとvirtualenvはsudoでinstallしてよいと思う。
easy_installは最近のMacでは最初から入っている。ubuntuではsudo aptitude install python-setuptoolsでよいのでは。
sudo easy_install pip
sudo pip install virtualenv
emacs-jediはdefaultではvirtualenvの環境をemacs-jedi自身のdirectory下にenvという名前で作ることを想定しているようだったので
git cloneしたemacs-jedi下にvirtualenv環境を作りここでPythonのjediとepcをinstallする。
この環境を任意の場所に設定する方法は知らない。
cd ~/.emacs.d/emacs-jedi
virtualenv env
source env/bin/activate
pip install jedi epc
emacs-jediの設定
(add-to-list 'load-path "~/.emacs.d/emacs-deferred")
(add-to-list 'load-path "~/.emacs.d/emacs-epc")
(add-to-list 'load-path "~/.emacs.d/emacs-ctable")
(add-to-list 'load-path "~/.emacs.d/emacs-jedi")
(require 'auto-complete-config)
(require 'python)
(require 'jedi)
(add-hook 'python-mode-hook 'jedi:ac-setup)
(define-key python-mode-map (kbd "<C-tab>") 'jedi:complete)
emacs-jediの使い方と評価値の補完
上記ではauto-completeを設定しているつもりだがいまいちauto-completeできてんのかよくわからなかった。
jedi:completeでの補完であれば動作を確証できる。
このjediのよいところはmattnさんが仰っているように単なるmoduleのfunctionの補完だけでなく、評価値の補完ができることと思う。
例えば
のように。
しかし今日のdemoでこれを下記のpointで補完しようとすると補完できなかった。
調査してみようと思う。意見があれば頂きたい。
おわりに
今回の関西Emacsも面白かった。
全発表者と、取りまとめをやってくださった@pecculさん、会場を使わせてくださった@uwabamiさん、参加者のみなさんに感謝したい。
またjediやemacs-jediの作者さんにも感謝したい。
jediは今自分がPythonのmeta programmingに興味をもっていることもあり面白そうに思うし、その構成がすっきりしているように思う。
またemacs-jediもこれまでのPython用emacs interfaceと比較しすっきりしているように思う。
kiwanamiさんのemacsのための要素技術とtkfさんのそれら要素技術を組み合わせるセンスがうまく融合しているのではなかろうか。
構成は以下の理解でよいのではないかと思う。
それでは次回4月の関西Emacsでまた会いましょう。
Uniteとhelmのcommand対応表
もう少しあるかも
機能 | Unite | helm | 備考 |
buffer and history selection | Unite buffer file_mru | helm-mini | |
tab selection | Unite tab | helm-elscreen | |
なんでも結果 with preview | Unite * -auto-preview | helmの結果を表示するbufferでC-z(helm-execute-persistent-action) | |
command selection | Unite command | helm-M-x | |
register selection | Unite register | helm-register | |
mark jump selection | Unite jump | helm-all-mark-rings | |
clipboard selection | Unite history/yank | helm-show-kill-ring | 要Unite設定 |
locate result | Unite locate | helm-locate | Unite source要追加 |
man selection | Unite ref/man | helm-man-woman | Unite source要追加 |
gtags selection | Unite gtags | helm-gtags | Unite source要追加 |
c,etags selection | Unite tags | helm-c-etags-select | Unite source要追加 |
imenu selection | Unite outline | helm-(semantic-or-)imenu | Unite source要追加 |
font selection | Unite font | helm-select-xfont | Unite source要追加, -auto-previewはまだ無い |
color theme selection | Unite colorscheme | ない | Unite source要追加 |
grep selection | Unite vimgrep | helm-do-grep | |
ack selection | Unite ack | できるぽいが詳細未確認 | Unite source要追加 |
Emacs温泉に行ってきた(概要編)
概要を語る
- 最寄り駅に玉名以外にも新幹線の駅である新玉名があることをtweetから知るが時すでに遅し。熊本経由でlocal lineに乗るなどし2hours遅刻。
- myuhe氏の発表終わりあたりに着く。無念。
- syohex氏のwebsocket.el発表を聞く。詳細は氏のhatena diaryを参照せよ。
- わいがevilの紹介をしたつもり。text objectがどういうものかなどいろいろわかってないのだがとにかくevilいいと思うとだけ言う。わかっとらんのにしゃべってすまぬ。
- 歓談
- めし
- hack(cocoa emacsでのfont設定, code readingのためのtool[imenu, etags, e2wm, ne2wm], anythingとhelm日本人開発者達[kiwanami, myuhe, syohex]観点の思う所など) and 各自やるつもりのこと(わいはUniteとhelmのcommand対応表を作ると言うた[Emacs温泉というもののVimmerもいた])を言うなど。kiwanami氏のtweetを参照せよ、よくまとまっている。
- 個人的にkiwanami氏のelispを入れなおし使いなおす。
- nom4476氏の異次元orgさばきを見る。levelの違いにショックを受けるが後にこちらのlevelが低すぎるというよりはnom4476氏がこの筋では*本の指に入る方ということを知り、自分なりのorg usageについて思いなおす。
- Emacs internalといった趣の話からVimやSublime Text2の話をする。kiwanami氏はVinariseのheavy userであるらしい。
- Vimmerが結構いるのでevilどうですかねと話すなど。あまりevilの受けはよくないようであった。乱暴に言うならば中途半端感があるようだ。
- 盛り上がりまくりで寝ようとしない者が多数。わいはおっさんなので3時頃には寝たが部屋で寝てたのはわいだけであった。
- 7:20起床, 7:30めし, 8時すぎ初めてプリキュアなるものを見る。
- 「各自やるつもりのこと」で言っていたことの進み具合を話す。
- 解散
詳細編はまた書く。
耳よりのEmacs設定情報です
(add-to-list 'load-path "~/.emacs.d/helm/") (require 'helm-config) (helm-mode 1) (add-to-list 'load-path "~/.emacs.d/evil/") (add-to-list 'load-path "~/.emacs.d/evil/lib/") (require 'evil) (evil-mode 1) (global-set-key (kbd "C-h") 'delete-backward-char) (define-key evil-normal-state-map "\C-n" 'helm-mini) (define-key evil-normal-state-map " " 'dired-jump) (define-key evil-motion-state-map ";" 'helm-M-x) (define-key evil-insert-state-map "\C-l" 'evil-normal-state) (define-key evil-insert-state-map "\C-k" 'kill-line)
(helm-)imenuでジャンプ後に他のwindowにジャンプ前のポイントを表示する
画面2画面分割のときのことしか考えてないがとりあえずこれできるとうれしい。
(defun helm-imenu-after-jump-show-recent-point () (interactive) (other-window 1) (pop-global-mark) (other-window 1) ) (setq imenu-after-jump-hook (lambda () (helm-imenu-after-jump-show-recent-point)))