5

Mac OS X 10.7 で作業しています。私はjavacompleteを病原体の助けを借りて動作させましたが、作成したクラスではなく、JDK クラスのみを完成させます。オブジェクトの 1 つをオムニコンプリートしようとすると、「パターンが見つかりません」というメッセージが表示されます。これは本当にJDKクラスに限定されていますか? そうでない場合は、誰でも構成を説明できますか。

ところで、作成したctagsを試してみましたが、javacomplete でも機能しませんでした。ただし、ctrl-x ctrl-]は、作成された ctags で正常に機能します。

4

3 に答える 3

1

ソースのクラスパスを設定する必要があります。

javacomplete ドキュメントから:

3. Set classpath using the following function: >
    javacomplete#AddClassPath('jarfile_or_classes_path')
    javacomplete#DelClassPath('jarfile_or_classes_path')
    javacomplete#SetClassPath('semicolon_separated_string')

    Another two variables will be used if they are existing:
        |g:java_classpath|  global classpath
        |b:classpath|       associated with current buffer

Android プロジェクトをオートコンプリートするために、以下を.vimrcに追加しました。

if filereadable('AndroidManifest.xml')
    call javacomplete#SetClassPath('/home/tidbeck/android/sdk/android-sdk-linux_x86/platforms/android-17/android.jar:libs/android-support-v4.jar:bin/classes')
    call javacomplete#SetSourcePath('src')
endif

私が気づいた2つのこと:

  • javacomplete#AddClassPathjarドキュメントにそう書かれていても、ファイルをサポートしていません
  • 作業を完了するには、タグファイルを削除する必要がありました
于 2013-03-21T15:03:57.303 に答える
0

javacomplete プラグインを supertab と共に使用しましたが、メソッド補完を有効にする最も簡単な方法は、クラスをコンパイルするときに自動的にタグを作成するeasytags.vimという別のプラグインを使用することであることがわかりました。メモリから、ユーザー定義のクラスとメソッド補完を提供しました。

于 2012-08-24T13:00:29.737 に答える
0

vim プラグインをインストールしたら、次の行を に追加する必要があります.vimrc

" Only do this part when compiled with support for autocommands.
if has("autocmd")
  autocmd Filetype java setlocal omnifunc=javacomplete#Complete
endif

私も、既存のタグファイル(によって作成されたctags)で動作させることができませんでした。前述のように、回避策の 1 つは、tags内の vim オプションの設定を解除すること.vimrcです。しかし、これは私にとって選択肢ではありませんでした。javacomplete.vimタグファイルを「無視」するように操作しました。

パッチは次のとおりです。

--- autoload/javacomplete.vim 2011-01-30 21:33:46.000000000 +0100
+++ /home/kndl/.vim/autoload/javacomplete.vim 2015-02-12 20:46:48.227465321 +0100
@@ -2510,7 +2510,8 @@
 ふ!s:GetClassInfoFromSource(クラス、ファイル名)
   ci = {}とする
   len(tagfiles()) > 0 の場合
- let ci = s:DoGetClassInfoFromTags(a:class)
+ " kndl: ctags 機能が機能しないため、無効にします。受け入れられたタグ ファイルをビルドできないようです。
+ "let ci = s:DoGetClassInfoFromTags(a:class)
   終了

   空の場合 (ci)
于 2015-02-12T21:21:45.457 に答える