Hatena::ブログ(Diary)

Memo

2010-06-06

[] ref.vim を入れる

PHP でコードを書く時に関数やメソッドのマニュアルを見るのに、phpmanual.vim に 自作の utf-8 対応パッチを当てたのを使っている。


最近仕事で Python を使ってるので、同じように Python のドキュメントを参照したい。

で、ref.vim を使えば pydoc から関数名やメソッド名でマニュアルを参照できるよう。


Github の Download から ref-v0.4.0.tar.gzダウンロードし、autoload, doc, plugin の中身をそれぞれ、~/.vim/autoload, ~/.vim/doc, ~/.vim/plugin に移動。


PHPマニュアル参照については、こちらを参考に、HTML ファイルを $HOME/Documents/phpmanual に置いた。

で、~/.vim/ftplugin/php/php.vim で以下を設定。

let g:ref_phpmanual_path = $HOME . '/Documents/phpmanual'

# ファイルタイプが .php だけ認識するように

これで php なファイルを開き、組み込みの関数とかの上で「K」を押すとマニュアルが表示される。

MacVim での動作

MacOS 10.6.3 で試したら、No such file or direcotry となって、マニュアルが表示されない。

Vim のバージョンは以下の通り。

version 7.2.411
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Mar 30 2010 10:09:42)
MacOS X (unix) 版
適用済パッチ: 1-411

Ubuntu 10.04 の vim で試したら、普通に出来た(Vimaptitudeインストールしたもの)。

MacVim がダメなんか?と思って $HOME/.vim/autoload/ref.vim のコードを追ってみた。

function! ref#system(args, ...)  " {{{2
  let args = ref#to_list(a:args)
  if g:ref_use_vimproc
    let stdout = a:0 ? vimproc#system(args, a:1) : vimproc#system(args)
    return {
    \ 'result': vimproc#get_last_status(),
    \ 'stdout': stdout,
    \ 'stderr': vimproc#get_last_errmsg(),
    \ }
  endif

ここで stdout にエラーメッセージが格納されってるっぽい。

vimproc って何?となったので、ググったら以下が出てきた。

vimprocとはYukihiro Nakadairaさんが開発している、優れた非同期実行ライブラリです。

no title

インストールしてないので、g:ref_use_vimproc が通らなければ良いんちゃうと想像し、.vimrc に以下のように追加した。

let g:ref_use_vimproc = 0

で、php なファイルを開いて、適当な組み込み関数の上で「K」を押したら、該当の関数マニュアルが表示された!

同じように Python なファイルを開いて、同じように適当なメソッドの上で「K」を押したら表示された。


phpマニュアルも ref.vim 経由で見るようにした。

vimproc の判定

vimproc が入ってるかの判定は、以下のようにやってるよう。

if !exists('g:ref_use_vimproc')
  let g:ref_use_vimproc = exists('*vimproc#system')
endif

vimproc が入ってないのに、メソッドの存在判定で 1 を返す理由がよくわからんが(Ubuntu はいけて、Mac がダメ)明示的に 0 を指定すれば良いよう。


追記(2010/06/08)

let g:ref_phpmanual_path を ~/.vim/ftplugin/php/php.vim に書かなくても自動的に判定してくれるとの事なので、.vimrc に移動した。

wozozowozozo 2010/06/07 11:04 おお、べんり

heavenshellheavenshell 2010/06/07 21:52 > id:wozozo
http://d.hatena.ne.jp/sugarbabe335/20100122/1264156389 これと連携したらもっと便利になった。

thincathinca 2010/06/08 00:20 >~/.vim/ftplugin/php/php.vim で以下を設定。
># ファイルタイプが .php だけ認識するように

その必要はありません。
ref-phpmanual は :Ref phpmanual とすれば今のバッファが何であっても開きます。
そして (help に書き忘れていることに今気づいたんですが)、K は ref#detect() (=g:ref_detect_filetype) を使って現在のバッファから使うべき source を決定します。
初期設定で filetype php では phpmanual を使うようになっています。

heavenshellheavenshell 2010/06/08 01:48 >id:thinca さん
ありがとうございます!
php 以外で phpmanual を使いたくなかったんですが、自動で判定するのですね。
# あんま深い理由はないですw
というわけで、let g:ref_phpmanual_path の設定は .vimrc に移動しました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証