Câu trả lời của @ Doug đã lỗi thời một chút và trọng tâm của anh là mở rộng mã bằng cách sử dụng các đoạn được xác định trước.
Tôi nghĩ rằng câu hỏi của OP là về intellisense (ví dụ tên phương thức hoàn thành tự động của một lớp).
hippie mở rộng được sử dụng phổ biến, bộ phân tích cú pháp là các thẻ emacs . Vì vậy, nó hỗ trợ tất cả các ngôn ngữ ctags hỗ trợ (bao gồm C ++ , Java). Nhưng kết quả không hoàn hảo vì ctags chỉ sử dụng biểu thức chính quy để phân tích mã. Xem init-hippie-extend.el của tôi để biết chi tiết. Bạn có thể bắt đầu bằng cách kiểm tra giá trị củahippie-expand-try-functions-list
tự động hoàn thành là một hiện đại với giao diện người dùng ưa thích (menu thả xuống, ngay cả trong cửa sổ giao diện điều khiển). Nếu bạn sử dụng tiếng kêu như một phụ trợ. Các intellisense là tốt hơn nhiều. Để clang hoạt động, bạn cần cài đặt auto-Complete-clang, đó là plugin của auto-perfect. Nó chỉ hỗ trợ ngôn ngữ clang hỗ trợ (C / C ++ / Obj-C). Như Sylvain Benner đã chỉ ra, bạn có thể sử dụng emacs-eclim làm phần cuối phân tích cú pháp java mà thực sự gọi là thực thi của nhật thực. Vì vậy, tự động hoàn thành có thể hỗ trợ java. Xem init-auto-Complete.el của tôi để biết chi tiết.
semantic cung cấp cả UI và công cụ phân tích cú pháp phía sau. Nó chậm. Giao diện người dùng thả xuống là OK nhưng yêu cầu cửa sổ X. Kết quả intellisense tốt hơn ctags. Và sự thông thái là quá táo bạo đối với tôi. Xem init-semantic.el để biết chi tiết.
chế độ công ty tương tự như tự động hoàn thành, điểm khác biệt là nó đóng gói mọi thứ thành một gói. Ví dụ: nhà phát triển C ++ chỉ cần cài đặt chế độ công ty (tự động hoàn tất cần một số plugin của bên thứ 3). Một sự khác biệt UI là công ty sẽ tự động hiển thị ứng viên . Vì vậy, bạn nhấn ít phím trong công ty. Có thể thực hiện điều tương tự trong tự động hoàn thành sau khi tùy chỉnh.
Tóm lại, tự động hoàn thành, công ty là hai lựa chọn phổ biến nhất. Semantic và hippie-bung cũng được hoan nghênh nhưng ít được sử dụng. Những người khác quá tầm thường để đề cập và các tính năng của họ đã được bao phủ bởi bốn người lớn. Ví dụ: tự động hoàn thành có thể sử dụng yasnippet làm nguồn đầu vào (tự động hoàn thành cung cấp giao diện người dùng, nhưng các ứng cử viên thực tế được tạo ra bởi phần cuối yasnippet).
Tôi đề nghị sử dụng tự động hoàn thành hoặc công ty làm plugin hoàn thành mã chính và cả ngữ nghĩa hoặc hippie-bung như là plugin bổ sung .
Tôi sử dụng chế độ công ty và hippie-bung vì,
Hiện tại (năm 2017) chế độ công ty được duy trì tích cực hơn tự động hoàn thành và có nhiều plugin bên thứ 3 hơn (ví dụ: plugin latex)
hippie-extend không hoạt động lắm nhưng nó không chiếm TAB
khóa mà chế độ công ty / ngữ nghĩa / tự động hoàn thành đang sử dụng
Nếu bạn sử dụng chế độ công ty cho C ++ / Java, bạn có thể muốn sửa đổi company-backends
.
Một vài lời khuyên về chế độ công ty,
Bạn có thể cần điều chỉnh giá trị của company-backends
. Ví dụ, giả sử giá trị của nó là (company-eclim company-semantic company-clang (company-dabbrev-code company-gtags company-etags company-keywords))
. Sau đó, nếu company-eclim
có thể nhận được các ứng cử viên khác không, hãy company
nghĩ rằng bạn đang viết java, vì vậy nó sẽ KHÔNG chạy phụ trợ sau company-eclim
.
Bây giờ hãy xem xét (company-dabbrev-code company-gtags company-etags company-keywords)
. Tất cả bốn phụ trợ này sẽ được sử dụng cùng nhau. Ví dụ, ngay cả sau khi company-dabbrev-code
đã tìm nạp các ứng cử viên khác không thành công, ba phần phụ trợ khác vẫn được thực thi.
Trong thế giới thực, thường cần phải điều chỉnh lại thứ tự phụ trợ hoặc thêm phụ trợ mới ( company-rtags
ví dụ).
complete.el
thử thư viện tiêu chuẩn . Nó rất cũ và ít được biết đến, nhưng loại hoàn thành trong bộ đệm mà nó cung cấp có thể hữu ích.M-x find-library complete
, sau đó đọc Bình luận trong tệp.