şirket modunu kullanarak dosya adı tamamlama


11

Şirketimi init.el dosyamda aşağıdaki komutları kullanarak etkinleştirdim:

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

Ancak, kaynakta bazı sağlayıcılar olmasına ve web sitesinin desteklendiğinden bahsedilmesine rağmen, dosya adının tamamlanmasını alamıyorum.

/ Home / emmanuel yazmaya başladım ... ve tamamlamanın seçenekler sunmaya başlamasını beklesem de hiçbir şey olmuyor mu?

Ayrıca, şirket modu göreceli yollar için tamamlanma nasıl otomatik olarak algılar, ben onun desteklendiğini düşünüyorum, ama bir ipucu olarak ilk "/" olmadan, nasıl tespit emin değilim?


1
Hangi büyük modda şirket modu aracılığıyla otomatik tamamlamaya çalıştığınızdan bahsetmelisiniz. Ya da minibuffer'da dosya adı tamamlamayı mı arıyorsunuz? Lütfen belirtin.
paprika

1
Ben tamamen acemiyim. Anladığım kadarıyla tüm büyük modlarda kullanmak istiyorum (lisp, düz metin, herhangi bir programlama dili). Ve gerçekten basit anahtar kelime tamamlama (tamponda başka bir yerde kullanılan bir kelime teklif) lisp-düzenleme ve diğer modlarda çalışıyor gibi görünüyor.
Emmanuel Touzery

daha sonra Haskell için daha güçlü bir tamamlama yapmaya çalışacağımı unutmayın, ancak bu sadece haskell modu için olacak ve şimdilik bu özelliği tüm modlarda çalışmaya devam etmeye çalışıyorum.
Emmanuel Touzery

Yanıtlar:


8

company-filesDosya tamamlama için çalıştırmalısınız . Dosyaların tamamlanması için farklı bir haritayı

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

Ayrıca şirket dosyalarının şirket arka uçlarında bulunduğundan emin olun ( M-x> özelleştirme grubu> şirket> şirket arka uçları)


Dosya adının tamamlanması için mutlaka bir anahtarı bağlamanız gerekmez. Bence buradaki kilit nokta yapılandırmak company-backends. Örneğin, company-filesilk önce bu listeye koyabilir veya bir grup arka ucuna ekleyebilirsiniz.
glucas

Sanırım tetiklemek company-filesveya bir şey yapılandırmak için bir işlev yazmak gerekiyor . Benim için, en azından, içeride olsa bile otomatik olarak tetiklenmiyorcompany-backends
Jesse

Bunun listede başka arka uçlarınız olduğu için şüpheliyim? Şirket modu, geçerli öneki işleyebileceğini gösteren ilk arka ucu kullanacaktır. Listenin company-filesbaşına eklerseniz , company-backendslistenin otomatik olarak tamamlanması gerekir. Tabii ki, bu aslında istediğiniz şey olmayabilir, sadece dosyaların arka
ucunun

Doğru, bunu bilmiyordum. Ben emacs geçirme vim kullanıcı, ve vim belirli durumlarda otomatik olarak tetiklenen dosya tamamlama ve diğerlerinde kod tamamlama vardı. Bunun ideal olacağını düşünüyorum.
Jesse

Farklı modlarda arka uçların farklı bir listesini belirtmek için bir mod kancası kullanabilirsiniz. Örneğin lisp modunda sembol tamamlama isteyebilirsiniz ve dosya adı tamamlama vb. Eklemek istediğiniz kabuk komut dosyaları için
glucas

15

@ Jesse'in daha önce işaret ettiği gibi, burada istediğiniz şey company-filesarka uç. Kullanmanın birkaç farklı yolu vardır:

  1. company-filesDoğrudan aramak için bir anahtarı bağlayın .

  2. Komutu kullan company-begin-backend. Bu, arka ucun kullanılmasını ister, ardından tamamlama adayları sunar.

  3. company-other-backendArka uçlar listesinde dolaşmak için kullanın (bir sonraki öğeye bakın). Bu, tamamlamayı tetiklemek için kullanılabilir veya şirket modu farklı bir tamamlama aday kümesine geçmek için tetiklendikten sonra kullanılabilir. Şirket haritasında anahtar bağlama atamak isteyebilirsiniz, ör.(define-key company-active-map (kbd "C-e") #'company-other-backend)

  4. Değişkeni yapılandırın company-backends. Şirket modu, geçerli öneki (yani noktadan önceki metin) kabul eden bir arka uç bulmak için bu listeyi dolaşır. Listede, geçerli öneki kabul eden ancak tamamlama adayları sunmayan bir arka uca sahip olmak tamamen mümkündür, bu noktada şirket modu hiçbir şeyi otomatik olarak tamamlamaz. Arka uçları ihtiyaçlarınızı karşılayacak şekilde sipariş etmek için listeyi özelleştirebilirsiniz.

Birkaç değişiklik örneği company-backends:

Yalnızca dosya adlarını tamamlamak istediyseniz, bunu tek arka ucunuz yapabilirsiniz:

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

Bu olası görünmüyor, bu yüzden en yaygın olarak kullanılan arka ucunuzu koymaktan ve daha sonra arka uçları değiştirmek veya başka bir şeye ihtiyacınız olduğunda birini adıyla çağırmak için daha önce belirtilen seçeneklerden birini kullanmanız daha iyi.

Birleştirilmiş tamamlama adayları grubu oluşturan bir 'grup' arka ucu da yapılandırabilirsiniz. Bunu deneyin, örneğin:

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

Bu, adayları diğer üç arka uçtan birleştiren tek bir arka uç belirtir. Noktadan noktaya tamamlama, dabbrev ve dosya sisteminden sonuçlar verecektir.

Farklı büyük modlar için farklı bir arka uç kümesi belirtmek için mod kancalarını kullanabilirsiniz. Örneğin:

(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)))))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.