Làm cách nào để thêm công ty-dabenamev vào cửa sổ bật lên hoàn thành Công ty?


12

Thiết lập:

Phiên bản GUI GNU Emacs 25.0.50.1 (x86_64-w64-mingw32) của 2015-07-25 trên KAEL

Tổng hợp từ EmacsW64.

, sử dụng phiên bản mới nhất từ ​​MELPA

Windows 7 x64 bit.

Tình hình:

Ví dụ, tôi đang gõ vào bộ đệm foobarsentence.

Và sau đó bắt đầu một dòng mới bên dưới đó và gõ fooba, tôi dự kiến ​​sẽ nhận được foobarsentenceđề xuất từ ​​cửa sổ hoàn thành cửa sổ bật lên của Công ty. Nhưng không có foobarsentence.

Tôi đã tìm thấy nó từ một câu trả lời khác rằng tôi có thể sử dụng công ty-dabbrev`` cho điều đó, bị ràng buộc , M-/. Nhưng tôi không thể hiểu làm thế nào tôi có thể 'cung cấp' các đề xuất từ company-dabbrevcửa sổ bật lên. Tôi đã thực hiện một gif screencast để làm cho câu hỏi của tôi rõ ràng.

nhập mô tả hình ảnh ở đây

Như bạn có thể thấy, M-/các cuộc gọi company-dabbrev. Nhưng tôi muốn thấy rằng đề xuất trong cửa sổ bật lên hoàn thành công ty. Nó làm tôi ngạc nhiên đây không phải là mặc định.

Bất kỳ đề xuất nào để 'cung cấp' các đề xuất từ company-dabbrevcửa sổ bật lên của công ty?


Chế độ chính này là gì?
PythonNut

Câu trả lời:


24

Đây là cách hoàn thành trong công ty làm việc (Tôi đơn giản hóa một chút mô tả chi tiết hơn có thể được tìm thấy trong tài liệu của company-backends C-hvcompany-backendsRET.

Bạn có một danh sách các công ty phụ trợ (công cụ hoàn thành) nên cố gắng cung cấp hoàn thành tại điểm. Công ty cố gắng lần lượt từng phụ trợ này và lần đầu tiên trả về bất kỳ ứng cử viên nào được sử dụng để hoàn thành và phần còn lại của các phụ trợ bị bỏ qua. Vì vậy, theo mặc định chỉ có một phụ trợ được sử dụng tại một thời điểm.

Trong trường hợp của bạn (bạn có vẻ như trong chế độ emacs-lisp-mode), phần cuối của emacs-lisp đang trả lại các ứng cử viên để hoàn thành và do đó company-dabbrevcông ty không bao giờ sử dụng để hoàn thành và bạn không bao giờ foobarsentencehoàn thành. Vì vậy, bạn có thể muốn thay đổi phụ trợ công ty để company-dabbrevđi trước company-elisp(hoặc company-capftrong emacsen gần đây). Nhưng tôi đoán đó không phải là điều bạn muốn vì điều đó sẽ đảo ngược tình hình hiện tại và bạn sẽ không nhận được sự hoàn thành từ phần phụ trợ của emacs-lisp (trong trường hợp này được đọc tiếp).

Công ty cung cấp một cách để hợp nhất các hoàn thành từ nhiều nguồn bằng cách sử dụng cái mà nó gọi là groupedphụ trợ. Thông thường các thành viên của company-backendscác phụ trợ riêng lẻ, nhưng nó cũng có thể là một danh sách các phụ trợ trong trường hợp hoàn thành từ các phụ trợ được hợp nhất với điều kiện chúng trả về cùng prefixhoặc văn bản cần hoàn thành (vui lòng xem tài liệu company-backendsđể biết mô tả chi tiết).

Vì vậy, nếu bạn muốn hợp nhất hoàn thành từ company-elisp(trên emacsen gần đây company-capfđược sử dụng) và company-dabbrevchỉ cần làm điều này

(add-to-list 'company-backends '(company-capf company-dabbrev))

Ngoài ra, bạn có thể hợp nhất các phụ trợ khác nhau bằng :withtừ khóa

(add-to-list 'company-backends '(company-capf :with company-dabbrev))

Điều này khác với ví dụ một danh sách các phụ trợ mà không có :withcông ty sẽ chỉ sử dụng các phụ trợ trước :withđể xác định prefix(văn bản cần hoàn thành). Điều này ngụ ý rằng các ứng cử viên từ phụ trợ sau :withsẽ bị công ty bỏ qua, bất kể phụ trợ có trả lại prefixhay không, nếu không có phụ trợ nào trước khi :withtrả lại a prefix.

Bạn có thể muốn đặt cục bộ này trong bộ đệm emacs-lisp (tôi thích làm như vậy)


@wasamasa cảm ơn bạn đã phản hồi, chỉnh sửa câu trả lời của tôi để đề cập:with
Iqbal Ansari

Thưa bạn, bạn xứng đáng với phiếu bầu của tôi. Tôi thực sự rất thích cách giải thích của bạn và học được nhiều điều về Công ty. Cảm ơn vì điều đó.
ReneFroger

Vui mừng tôi có thể giúp
Iqbal Ansari
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.