hoàn thành tên tệp bằng chế độ công ty


11

Tôi đã kích hoạt công ty bằng cách sử dụng các lệnh sau trong init.el của mình:

(require 'company)
(add-hook 'after-init-hook 'global-company-mode)

Tuy nhiên, tôi không hoàn thành tên tệp, mặc dù có một số nhà cung cấp trong nguồn và trang web cũng đề cập đến việc nó được hỗ trợ.

Tôi bắt đầu gõ / home / emmanuel ... và không có gì xảy ra, mặc dù tôi mong đợi việc hoàn thành sẽ bắt đầu cung cấp tùy chọn?

Ngoài ra, làm thế nào để hoàn thành tự động phát hiện chế độ công ty cho các đường dẫn tương đối, tôi nghĩ rằng tôi đã đọc nó được hỗ trợ, nhưng tôi không chắc làm thế nào nó sẽ phát hiện ra nó, mà không có "/" ban đầu như một mẹo?


1
Bạn nên đề cập đến chế độ chính mà bạn đang cố gắng tự động hoàn thành thông qua chế độ công ty. Hoặc có thể bạn đang tìm kiếm hoàn thành tên tập tin trong xe buýt nhỏ? Xin hãy chỉ ra cụ thể.
paprika

1
Tôi là một người mới bắt đầu. Tôi muốn sử dụng nó trong tất cả các chế độ chính vì tôi hiểu nó (văn bản đơn giản, đơn giản, bất kỳ ngôn ngữ lập trình nào). Và thực sự hoàn thành từ khóa đơn giản (cung cấp một từ được sử dụng ở một nơi khác trong bộ đệm) dường như hoạt động trong việc chỉnh sửa lisp cũng như các chế độ khác.
Emmanuel Touzery

lưu ý rằng sau này tôi cũng sẽ cố gắng hoàn thành mạnh mẽ hơn cho Haskell, nhưng điều đó sẽ chỉ dành cho chế độ haskell và hiện tại tôi vẫn đang cố gắng để tính năng đó hoạt động ở tất cả các chế độ.
Emmanuel Touzery

Câu trả lời:


8

Bạn phải chạy company-filesđể hoàn thành tập tin. Bạn có thể liên kết một bản đồ khác để hoàn thành tập tin với

(define-key global-map (kbd "C-.") 'company-files)

Đồng thời đảm bảo rằng bạn có các tệp công ty trong phần phụ trợ của công ty ( M-x> nhóm tùy chỉnh> công ty> phần phụ trợ của công ty)


Bạn không nhất thiết phải liên kết một khóa để hoàn thành tên tệp. Tôi nghĩ rằng điểm quan trọng ở đây là cấu hình company-backends. Ví dụ: bạn có thể đặt company-filesđầu tiên trong danh sách đó hoặc đưa nó vào phần phụ trợ nhóm.
glucas

Tôi nghĩ rằng cần phải viết một số chức năng để kích hoạt company-fileshoặc để cấu hình một cái gì đó. Đối với tôi, ít nhất, nó không được kích hoạt tự động ngay cả khi nó ở trongcompany-backends
Jesse

Tôi nghi ngờ đó là bởi vì bạn có các phụ trợ khác trước nó trong danh sách? Chế độ công ty sẽ sử dụng phụ trợ đầu tiên cho biết nó có thể xử lý tiền tố hiện tại. Nếu bạn chèn company-filesvào đầu company-backendsdanh sách thì nó sẽ tự động hoàn thành. Tất nhiên, điều này có thể không được những gì bạn thực sự muốn, chỉ cần chỉ ra rằng các tập tin phụ trợ chỉ là một phụ trợ ...
glucas

Đúng vậy, tôi không biết điều đó. Tôi là người dùng vim di chuyển sang emacs và trong vim tôi đã tự động hoàn tất tệp trong một số trường hợp và hoàn tất mã trong các trường hợp khác. Tôi nghĩ đó sẽ là lý tưởng.
Jesse

Bạn có thể sử dụng móc chế độ để chỉ định một danh sách phụ trợ khác nhau trong các chế độ khác nhau. Ví dụ: ở chế độ lisp, bạn có thể muốn hoàn thành biểu tượng và đối với tập lệnh shell bạn muốn thêm hoàn thành tên tệp, v.v.
glucas

15

Như @Jlie đã chỉ ra, điều bạn muốn ở đây là phần company-filesphụ trợ. Có một số cách khác nhau để sử dụng nó:

  1. Ràng buộc một phím để gọi company-filestrực tiếp.

  2. Sử dụng lệnh company-begin-backend. Điều này nhắc bạn cho phần phụ trợ sử dụng, sau đó cung cấp các ứng cử viên hoàn thành.

  3. Sử dụng company-other-backendđể xoay qua danh sách các phụ trợ (xem mục tiếp theo). Điều này có thể được sử dụng để kích hoạt hoàn thành hoặc nó có thể được sử dụng sau khi chế độ công ty đã được kích hoạt để chuyển sang một nhóm ứng cử viên hoàn thành khác. Bạn có thể muốn chỉ định một ràng buộc chính trong bản đồ công ty, vd(define-key company-active-map (kbd "C-e") #'company-other-backend)

  4. Cấu hình biến company-backends. Chế độ công ty đi qua danh sách này để tìm một phụ trợ chấp nhận tiền tố hiện tại (tức là văn bản trước điểm). Hoàn toàn có thể có một phụ trợ trong danh sách chấp nhận tiền tố hiện tại nhưng không cung cấp bất kỳ ứng cử viên hoàn thành nào, tại thời điểm đó chế độ công ty sẽ không tự động hoàn thành bất cứ điều gì. Bạn có thể tùy chỉnh danh sách để đặt hàng phụ trợ theo cách đáp ứng nhu cầu của bạn.

Một vài ví dụ về sửa đổi company-backends:

Nếu bạn chỉ muốn hoàn thành tên tệp, bạn có thể tạo phần phụ trợ duy nhất của mình:

(setq company-backends '(company-files))

Điều đó dường như là không thể, vì vậy tốt hơn hết là bạn nên đặt phần phụ trợ được sử dụng phổ biến nhất của mình lên trước và sau đó sử dụng một trong các tùy chọn được đề cập trước đó để chuyển đổi phần phụ trợ hoặc gọi từng tên khi bạn cần thứ khác.

Bạn cũng có thể định cấu hình phụ trợ 'nhóm' để tạo một tập hợp các ứng cử viên hoàn thành. Hãy thử điều này, ví dụ:

(setq company-backends '((company-capf company-dabbrev-code company-files)))

Điều này chỉ định một phụ trợ duy nhất hợp nhất các ứng cử viên từ ba phụ trợ khác. Nó sẽ cung cấp cho bạn kết quả từ hoàn thành tại điểm, dabenamev và hệ thống tệp.

Bạn có thể sử dụng móc chế độ để chỉ định một bộ phụ trợ khác nhau cho các chế độ chính khác nhau. Ví dụ:

(add-hook 'org-mode-hook
          (lambda ()
            (setq-local company-backends '((company-files company-dabbrev)))))

(add-hook 'emacs-lisp-mode-hook
          (lambda ()
            (setq-local company-backends '((company-capf company-dabbrev-code)))))
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.