2012-05-07 3 views
5

Ich arbeite unter Mac OS X 10.7. Ich habe javacomplete arbeiten mit Hilfe von Erreger, aber es nur ergänzt JDK-Klassen, nicht die Klassen, die ich erstellt habe. Wenn ich eines meiner Objekte omniverfüllen möchte, bekomme ich "Muster nicht gefunden". Ist das wirklich auf JDK-Klassen beschränkt? Wenn nicht, kann jemand ihre Konfiguration beschreiben.wie man benutzerdefinierte Klassenmethoden mit javacomplete

BTW, ich habe versucht, Ctags erstellt, aber es hat nicht mit javacomplete entweder funktioniert. ctrl-x ctrl-] funktioniert jedoch einwandfrei mit erstellten Ctags.

Antwort

0

Ich habe javacomplete plugin zusammen mit supertab verwendet und ich fand, dass der einfachste Weg, Methodenvervollständigung zu ermöglichen, ist mit einem anderen Plugin namens easytags.vim, das automatisch erstellt Tags beim Kompilieren Ihrer Klassen. Aus dem Speicher wurde eine benutzerdefinierte Klassen- und Methodenvervollständigung bereitgestellt.

1

Sie müssen den Klassenpfad für Ihre Quellen einrichten.

Von der javacomplete Dokumentation:

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 

Ich habe folgendes hinzugefügt, um meine .vimrc für die automatische Vervollständigung android Projekte:

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 

Zwei Dinge, die ich bemerkt:

  • javacomplete#AddClassPath unterstütztnichtDateien, obwohl die docs sagen, so
  • Ich hatte meine Tags-Datei zu entfernen bekommen Abschluss Ihnen zu arbeiten
0

Nach der Installation des vim Plugin, um diese Zeilen in .vimrc hinzufügen:

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

Ich war auch nicht in der Lage, es mit einer vorhandenen Tag-Datei (erstellt von ctags) arbeiten zu lassen. Wie bereits erwähnt, besteht eine Problemumgehung darin, die vim-Option tags innerhalb von .vimrc zu deaktivieren. Aber das war keine Option für mich. Ich manipulierte nur javacomplete.vim, um die Tag-Datei zu "ignorieren".

-Patch folgt:

 
--- 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)