如何使用javacomplete完成用户定义的类方法

时间:2012-05-07 10:36:26

标签: java editor vim

我在Mac OS X 10.7下工作。我在病原体的帮助下得到 javacomplete ,但完成了JDK类,而不是我创建的类。当我试图全方位地完成我的一个物体时,我得到了“未找到模式”。这真的限于JDK类吗?如果没有,任何人都可以描述他们的配置。

顺便说一句,我已经尝试过创建 ctags ,但它也无法使用javacomplete。但是, ctrl-x ctrl - ] 可以正常创建ctags。

3 个答案:

答案 0 :(得分: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

我已将以下内容添加到 .vimrc 中以自动完成Android项目:

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

我发现了两件事:

  • javacomplete#AddClassPath不支持jar文件,即使文档是这样说的
  • 我必须删除我的代码文件才能完成工作

答案 1 :(得分:0)

我使用了javacomplete插件和supertab,我发现启用方法完成的简单方法是使用另一个名为easytags.vim的插件,在编译类时自动创建标记。它从内存中提供了用户定义的类和方法完成。

答案 2 :(得分: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创建)。如上所述,一种解决方法是取消设置tags内的vim选项.vimrc。但这对我来说不是一个选择。 我只是操纵javacomplete.vim到#34;忽略"标签文件。

补丁如下:

--- 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 @@
 fu! s:GetClassInfoFromSource(class, filename)
   let ci = {}
   if len(tagfiles()) > 0
-    let ci = s:DoGetClassInfoFromTags(a:class)
+    " kndl: Deactivate ctags feature as this does not work. It seems that I am unable to build an accepted tags file.
+    "let ci = s:DoGetClassInfoFromTags(a:class)
   endif

   if empty(ci)