tyru / current-func-info.vim

Get current function name
http://www.vim.org/scripts/script.php?script_id=3197
62 stars 14 forks source link

vim --noplugin で起動してファイルを開くとエラーになる #4

Closed sgur closed 12 years ago

sgur commented 12 years ago

ftpluginの挙動をよく理解していないので見当違いなことを言っているかもしれませんが、 ftplugin/vim/cfi.vim#5などで、 if g:cfi_disable || get(g:, 'loaded_cfi_ftplugin_vim') の判定で !exists('g:loaded_cfi') の判定をしていないため、 gvim --noplugin などで foo.vim などのファイルを開いたときにエラーが表示されてしまいます。

これは~.vimファイルを:editしたときのですが、エラーメッセージは以下のようなものです。

行    6:
E121: 未定義の変数です: g:cfi_disable
E15: 無効な式です: g:cfi_disable || get(g:, 'loaded_cfi_ftplugin_vim')

以下のような修正でエラーが出なくなったことは確認しています。

if !exists('g:loaded_cfi') || g:cfi_disable || get(g:, 'loaded_cfi_ftplugin_vim')
    finish
endif
sgur commented 12 years ago

よく考えたら !exists('g:cfi_disable')でよさそうですね。

tyru commented 12 years ago

再現状況を教えてください。

  1. cfiの関数はどこから呼んでますか? (statuslineなど)
  2. 何のファイルを開いたらエラーが出ましたか?

plugin/cfi.vimでlet g:cfi_disable = ...していて ftpluginやautoloadよりも先にplugin/cfi.vimが読み込まれることを意図しているのですが、 先にftpluginやautoloadが読み込まれてるみたいですね。

autoload/cfi.vimでplugin/cfi.vimを読み込むようにしました。 どのような順序でロードされてるか自信ないので直ってるか確認お願いします...

tyru commented 12 years ago

おっと...コメント直すつもりがpushしてしまっていたのでgit push -fしました... https://github.com/tyru/current-func-info.vim/commit/5d118c204b87dc597ffc48854048b667327250cc

tyru commented 12 years ago

あ、すみません。タイトルに「vim --nopluginで」って書いてありますねorz うーん正直--nopluginで立ち上げた場合はちょっと想定範囲外なのですが、 どんな理由で--nopluginで立ち上げたのでしょうか。 --nopluginの場合はできれば仕様としたいところですが... ただ理由を聞いて需要がありそうだったら対処します。

sgur commented 12 years ago

使い方としては、statuslineに'%{(exists("g:loaded_cfi") && cfi#supported_filetype(&filetype)) ? cfi#format("[%s()]", "[???]") : ""}'が混ぜてあります。

--nopluginの理由にあんまり深い意味はなくて、pathogen(neobundleもしくはVundle)のbundleをcloneしていない状態でエラーなく動作するかを確認したかっただけです。

そういう用途であれば、vim -u NONE -U NONE --noplugin で問題ないですので、仕様としてもらっても特に問題ないです。

tyru commented 12 years ago

了解です。 ちょっとこの件に関してはサポートするのは骨が折れるので仕様とさせてください。 報告ありがとうございました。

tyru commented 12 years ago

あれ...すでにcloseしていた...orz コミットメッセージにfix #4って含めたからか...