2009年10月18日 星期日

perl-completion plugin for vim



昨天在往台南的客運上 hack 了一個這樣的東西,可以針對 $self, $class, Class::Name 這幾種狀況做 completion,目前的 perl-completion 使用 PPI (pure perl parser) 來找出目前 package 繼承的 class 的函式以及能夠依據設定找出第 n 層的 class function (預設是兩層)。

輸入字串至 Class-> 按下 Ctrl-x Ctrl-x 便能開啟 perl-completion window ,在 insert mode 輸入 pattern 時,直接按下 Enter 能夠自動 complete 第一個 item. Ctrl-n , Ctrl-p 可以上下選擇 completion item, Ctrl-j , Ctrl-k 能夠跳至上一個/下一個 package,ESC 可直接關閉 completion window。

有空在將這個 completion window generalize ,那麼便可以很容易的支援其他 Language。

下一步想做的是 function preview ,由於在 Perl 的 Subroutine 內,我們可以用各種方式取用 Arguments ,所以若要自動 parse function argument 作為 completion 的提示,並不容易。初步的想法是,可以將一個 function 的最初幾行做預覽。那麼哪怕忘記 function 該怎麼 call ,只需要叫出預覽視窗即可。

目前 perl-completion.vim 還在 github.com/c9s/cpan.vim 內。昨天晚上把所有 perl 相關函式整理至 autoload/libperl.vim ,以及將各 plugin 切割出來,如 ctags-search.vim , cpan.vim , perl-completion.vim , perl-function-search.vim 等。

試想在這樣的 plugin 開發,未來可以在 Vimana 實做 : 自動建立 vim plugin 框架,自動產生 makefile,dependency check, plugin version check 之類的功能。

目前的 perl-completion.vim 放在 http://github.com/c9s/cpan.vim/ 內。


安裝方式如下:

使用 git 將 repository checkout 出來

$ git clone git://github.com/c9s/cpan.vim.git
$ cd cpan.vim
$ make install

安裝 cpan.vim 同時有下列幾種功能: perl function search , ctags search , cpan module search , perl-completion

相關文章:
http://c9s.blogspot.com/2009/10/cpanvim-now-supports-ctags-search.html
http://c9s.blogspot.com/2009/09/cpanvim.html