2012-05-07 32 views
5

Tôi đang làm việc trong Mac OS X 10.7. Tôi nhận được javacomplete làm việc với sự trợ giúp của mầm bệnh, nhưng chỉ chỉ hoàn thành các lớp JDK, không phải lớp tôi đã tạo. Khi cố gắng omni-hoàn thành một trong các đối tượng của tôi, tôi nhận được 'Pattern not found'. Điều này thực sự giới hạn trong các lớp JDK? Nếu không, ai cũng có thể mô tả cấu hình của họ.cách hoàn thành các phương thức lớp do người dùng xác định bằng cách sử dụng javacomplete

BTW, tôi đã thử tạo ctags nhưng cũng không hoạt động với tính năng javacomplete. Tuy nhiên, ctrl-x ctrl-] hoạt động tốt với ctags được tạo.

Trả lời

0

Tôi đã sử dụng plugin javacomplete cùng với supertab và tôi thấy rằng cách dễ dàng để bật hoàn thành phương pháp là sử dụng một plugin khác gọi là easytags.vim tự động tạo thẻ khi bạn biên dịch các lớp học của mình. Từ bộ nhớ nó đã cung cấp cho người dùng xác định lớp và phương thức hoàn thành.

1

Bạn cần thiết lập đường dẫn lớp cho các nguồn của mình.

Từ các tài liệu 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 

tôi đã thêm dòng sau vào tôi vimrc cho các dự án android tự động hoàn tất:

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 

Hai điều mà tôi nhận thấy:

  • javacomplete#AddClassPath không hỗ trợ jar file mặc dù các tài liệu nói như vậy
  • tôi phải loại bỏ tập tin thẻ của tôi để có được hoàn thành để làm việc
0

Sau khi cài đặt vim cắm bạn đã thêm những dòng này vào .vimrc:

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

Tôi cũng vậy, không thể làm cho nó hoạt động với một tệp thẻ hiện có (được tạo bởi ctags). Như đã đề cập, một giải pháp thay thế là hủy đặt tùy chọn vim tags bên trong .vimrc. Nhưng đây không phải là một lựa chọn cho tôi. Tôi chỉ thao tác javacomplete.vim để "bỏ qua" tệp thẻ.

Bản vá sau:

 
--- 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) 
Các vấn đề liên quan